midas+son의 크리에이티브(creative) 이야기

20170420_편도

개인사/밥2017. 4. 20. 12:37

[닭다리완전크닭 도시락]

4500원짜리
GS25에서파는 도시락
4월 27일까지
1400원하는 코카콜라 증정

숟가락, 비닐장갑 포함

양도 많고 맛괜찮다.
굿굿
태어나서 먹어본 편도 중
세 손가락 안에 드는 도시락

'개인사 > ' 카테고리의 다른 글

20170505_족발  (0) 2017.05.06
20170420_마라샹궈  (0) 2017.04.21
20170417_편도  (0) 2017.04.17
20170414_라멘  (0) 2017.04.16
20170410_이태리까스  (0) 2017.04.10

UGameViewportClient* Viewport = GetWorld()->GetGameViewport();

FVector2D pos = Viewport->GetWindow()->GetPositionInScreen();    //시작점. 전체 화면일 경우 -8, -8로 나왔다.(Win10)

FVector2D WH = Viewport->GetWindow()->GetViewportSize();    //실행창 크기. 위에 타이틀 바가 있다면 그 크기도 포함


ffmpeg라는 동영상 프로그램을 사용하기 위해 위의 값들이 필요했다.

원하는 위치부터 원하는 사이즈 만큼 

인자 값들을 넣기 위해 아래처럼 스트링을 만들어 영상 캡쳐가 성공했다.

int X = 0;    //ffmpeg에 들어갈 인자 값들이 int가 아니면 작동 안한다.

int Y = 0;

int Width = 0;

int Height = 0;


//가로축 컨트롤 + width

if (pos.X < 0)    //인자값 중 -offset_x 값이 -(음수)여도 동작 안한다.

{

X = 0;

Width = WH.X + pos.X * 2;    //더해진 만큼 좌우 값을 빼준다.  pos.X가 -이므로 

}

else

{

X = pos.X;

Width = WH.X;

}

//세로축 컨트롤 + Height

if (pos.Y < 0)    //인자값 중 -offset_y 값이 -(음수)여도 동작 안한다.

{

Y = 0; 

Height = WH.Y + pos.Y * 2;    //더해진 만큼 좌우 값을 빼준다.  pos.Y가 -이므로 

}

else

{

Y = pos.Y; 

Height = WH.Y;

}


//아래 코드는 ffmpeg를 실행하기 위한 코드

FString FilePath = FPaths::ConvertRelativePathToFull(FPaths::Combine(*FPaths::GameDir(), TEXT("Plugins/ThirdParty/ffmpeg/"), TEXT("ffmpeg.exe")));

FString Args = FString::Printf(TEXT("-f gdigrab -offset_x %d -offset_y %d -video_size %dx%d -i desktop -r 24000/1001 -q 1 -vf crop %s"), X, Y, Width, Height, *Filename);    //Filename은 인자로 받아온 저장될 파일 이름, 해상도는 -video_size 1024x768 이런 식으로 들어가야 함.

FString Cmd = FString::Printf(TEXT("%s %s %s"), *FilePath, *Args, *Filename);


TRACE("%s", *Cmd);

if (FPaths::FileExists(FilePath))

{

RecordHandle = FPlatformProcess::CreateProc(*FilePath, *Args, false, true, false, nullptr, 0, nullptr, nullptr);

}



//PlayerInput 제거 - Controller = GetWorld()->GetFirstPlayerController();

UPlayerInput* PlayerInput = Controller->PlayerInput;

PlayerInput->AxisMappings.Empty();    //컨트롤러 인풋에 있는 Axis맵핑 비우기

PlayerInput->ActionMappings.Empty();    //콘트롤러 인풋에 있는 Action맵핑 비우기

// InputComponent 제거 - InputComponent = Character->GetInputComponent();

InputComponent->ClearBindingValues();    //소유한 AxisValue 초기화

InputComponent->ClearActionBindings();    //바인딩된 Action값 비우기

InputComponent->AxisBindings.Empty();    //바인딩된 Axis값 TArray 비우기


키맵핑을 하던 컨트롤러를 다른 곳으로 Pawn으로 옮겨 재사용하기 위해서는

그 플레이어 컨트롤에 들어있는 Input값을 초기화 해주어야 깔끔하다.

이동하기 전에 가지고 있던 InputComponent까지 지울 필요는 없었겠지만

깔끔하게 해보자고 해서 알아봤다.


혹시 키맵핑(바인딩) 설정 방법을 못보고 왔다면 아래 링크에 들어가 보자.

http://midason.tistory.com/418