혼합 현실 캡처 보정 툴 사용법

Mixed Reality Capture Calibration Tool 사용 안내서입니다.

Windows
MacOS
Linux

보정의 목표는 가상 및 실제 카메라를 가상 세계와 일치시키는 것입니다.

AdjustingAlignmentStep.png
런타임에 게임이 알아야 하는 것은 다음과 같습니다.

  • 사용하는 카메라와 렌즈 유형

  • 가상 씬 기준 카메라 위치

씬 합성을 위해 게임이 알아야 하는 것은 다음과 같습니다.

  • 크로마 배경 색 (보통 초록)

  • 크로마 색을 잘라낼 때의 적극성

  • 카메라 프레임에서 완전히 잘라낼 영역

게임은 이와 같은 것을 알아야 가상 카메라로 실제 카메라를 모방할 수 있습니다. 여기서 보정 툴의 역할이 있습니다. 보정 툴은 이 모든 세팅을 한 번에 구성하여, 그 정보로 보정 세팅 파일을 만듭니다. 이 세팅 파일을 다른 게임에서도 재사용할 수 있습니다.

보정 설정 전

혼합 현실 캡처를 시작하기에 앞서, 올바른 장비가 필요합니다. 필요 장비에 대한 개요와 설정 방법에 대한 몇 가지 팁을 알려드립니다. 여기에는 캡처 작업을 위한 기본 그린 스크린과 카메라 설정은 물론 교정에 필요한 장비 및 소프트웨어가 포함됩니다.

그린 스크린과 카메라

MR_GreenScreenSetup.png

  1. 비디오 카메라
    UE4 는 매우 한정된 비디오 캡처 디바이스만 지원합니다. 현재 지원하는 디바이스 목록은 지원 비디오 디바이스 문서를 참고하세요. 목록에 있는 디바이스를 PC 에 스트리밍 용으로 연결합니다.

  2. 크로마 배경
    크로마 키 작업에는 보통 그린 스크린을 사용합니다. 그린 스크린을 설치할 때는, 특히 피사체 뒷 부분이 팽팽하고 주름이 가급적 없도록 해줍니다. 라이팅을 설정하는 경우, 피사체 바로 뒤로 그림자를 드리우지 않도록 하는 것이 좋습니다. 부드럽고 무난한 색이 좋습니다. 배경에 걸친 초록색 음영 부분이 많을 수록, 크로마 키 작업이 더 어려워집니다. 피사체가 배경에서 가급적 멀리 떨어져 있으면 도움이 됩니다. 피사체의 발을 촬영할 계획이라면, 바닥도 그린 스크린을 고려해보세요.

  3. 카메라 마운트
    초기 설정(보정)의 경우, 카메라는 고정이어야 합니다. 웹캠을 사용하는 경우 간단히 책상/모니터에 붙이면 됩니다. 또다른 옵션은 카메라를 삼각대에 장착하는 것입니다.

  4. 멀티 마운트 + 트래커 (옵션)
    촬영 도중 카메라를 움직일 계획이라면, HTC Vive Tracker 와 같은 트래킹 디바이스를 카메라에 붙이는 것이 좋습니다. 또는 멀티 마운트 로 카메라와 트래커를 연결하여 한 곳에 단단히 고정시킬 수 있습니다.

보정 전용 장비

(캡처 프로세스와 달리) 보정 프로세스 전용으로 필요한 아이템이 몇 가지 있습니다.

MR_RequiredSetupItems.jpg

  • HTC Vive 또는 Oculus Rift
    보정 툴은 위의 두 VR 시스템 중 하나가 있어야 작동합니다. 컨트롤러의 트래킹 기능을 사용하여 카메라의 위치를 평가합니다. HTC Vive 또는 Oculus 시스템을 설정한 적이 없는 경우, 먼저 셋업 프로세스를 마쳐야 보정이 정상 작동합니다.

  • 인쇄한 체스판 패턴
    인쇄한 체스판 패턴을 (카드보드 조각처럼) 평평하고 단단한 표면에 붙입니다. 체스판 패턴 예제는 보정 툴을 다운로드하면 포함되어 있습니다.

    체스판 인쇄물을 테이프로 붙일 때, 체스판 패턴 자체를 테이프로 붙이지 않도록 하세요 (투명 테이프도 스페큘러 리플렉션때문에 카메라가 인식하기 힘들 수 있습니다).

단계

장비를 설치했으면 여기서 교정 툴을 다운로드할 수 있습니다. 파일을 다운로드했으면 압축을 풀고 MRCalibration.exe 를 실행합니다.

교정 프로세스는 몇 단계로 나뉩니다. 각 단계마다 아래 자세히 설명합니다.

  1. 디바이스/카메라/트래커 선택

  2. 렌즈 보정

  3. 정렬 보정

  4. 정렬 조정

  5. 합성 보정

  6. 가비지 매트 작업

보정 도중, 각 단계가 끝날 때마다 진행상황이 저장됩니다. 필요한 경우 빠져나가 툴로 돌아가면 됩니다. 보정 프로세스 완료 후 툴이 생성한 세팅 파일을 다른 프로젝트에서 사용하면 MRC 세션을 시작할 수 있습니다.

보정 진행상황은 세팅 파일에 기록됩니다. 보정 프로세스를 다시 시작하려면 세팅 파일을 지워야 합니다. 세팅 파일 이름은 MrcCalibration.sav 이며, 툴의 /Saved/SaveGames/ 디렉터리 아래에서 찾을 수 있습니다.

공유 컨트롤

각 단계마다 구분되는 별도의 컨트롤이 있긴 하지만, 툴 전반적으로 쓰이는 컨트롤도 몇 가지 있습니다.

  • Enter : 다음/확인/수락/제출

  • End : 생략 (단계 요건이 충족되었을 때만 적용되며, 생략할 수 없는 단계도 있습니다.)

  • P/썸스틱 : 프리뷰

  • M : 비디오 피드 미러링

  • R : 변경한 세팅 리셋

  • Esc : 종료

아직 거친 부분이 있는 툴이라, 곳곳에 유용성 개선이 있을 수 있습니다. 툴 작동은 하지만, 나중에 릴리즈 버전에서 유용성을 향상시킬 계획입니다. 피드백 환영합니다!

보정 프로세스

1. 디바이스/카메라/트래커 선택

PC 에 연결된 비디오 캡처 디바이스가 여럿인 경우, 사용할 것을 지정해야 합니다. 위/아래 키로 순환시킵니다.

MR_DeviceSelection.png

또한 각 카메라는 여러가지 포맷과 해상도를 사용할 수 있습니다. 최상의 포맷과 해상도를 자동 선택 시도하지만, 왼쪽/오른쪽 키로 선택을 바꿀 수 있습니다.

카메라 피드 해상도는 혼합 현실 캡처의 출력 해상도에 영향을 주지 않습니다. 캡처의 출력 해상도는 캡처 대상 게임 프로젝트가 제어합니다. 카메라 피드 해상도는 씬 안에서 피드의 선명도만 제어합니다.

디바이스 선택 컨트롤

  • 위/아래 : 비디오 캡처 소스 선택

  • 왼쪽/오른쪽 : 비디오 캡처 포맷 선택

  • Tab : 카메라 트래커 선택

트래커 선택

촬영 도중 카메라를 움직일 계획이 있는 경우, 트래킹 디바이스에 붙여줘야 합니다.

다음 단계로 넘어가기에 앞서, Tab 키를 누르면 사용가능한 트래킹 부착물을 순환시킵니다. HTC Vive 의 경우, 첫 트래커 이름은 부착물 목록에서 “Special_1” 입니다.

적절히 선택한 후, Enter 키를 누르면 다음 단계로 넘어갑니다.

2. 렌즈 보정

카메라 렌즈 굴절율에 따라 상이 여러가지 방식으로 왜곡됩니다 (어안 렌즈를 떠올려 보세요). 캡처한 씬에 그런 왜곡이 있으면 좋지 않으니, 이 렌즈 보정 단계를 통해 이미지 왜곡을 없애는 법을 알아봅니다. MR_LensCalibration.png

이 단계에서는 보정 툴과 함께 다운로드한 체스판 이미지를 출력해야 합니다. 보정 툴은 체스판 패턴을 기준으로 계속해서 스크린샷을 찍습니다.

카메라 앞 여러 위치에 출력물을 잡아두세요. 특히 프레임 가장자리 주변에 다양한 앵글과 깊이를 사용하여 보정 툴에 다양한 샘플 컬렉션을 확보합니다. 보정 툴 샘플이 충분하면 화면 상단의 텍스트가 바뀝니다.

카메라가 자동 포커스 설정된 경우, 이 단계에서는 꺼두는 것이 좋습니다.

재투영 오차

보정 툴이 샘플을 충분히 수집했으면, 툴은 왜곡 없는 피드 프리뷰를 표시합니다. 피드가 괜찮아 보이면 Enter 키를 눌러 계속합니다. 필요한 경우 샘플을 추가하거나, R 키를 눌러 리셋하고 다시 시작하면 됩니다.

왜곡 제거 프로세스가 통했는지 알 수 있는 좋은 방법은 프레임에서 (벽 구석, 통로 등) 직선인 부분을 찾아보면 됩니다. 렌즈 왜곡은 자주 직선을 (특히 프레임 모서리쪽으로) 뒤틉니다.

MR_ReprojectionError.png

“reprojection error” (재투영 오차) 보고를 통해 프로세스가 생각하는 정확도를 알 수 있습니다. 재투영 오차 값은 낮을 수록 좋습니다. 값이 1 미만이면 훌륭합니다!

화각

아마 이 단계의 가장 중요한 용도는 카메라의 화각(angle-of-view), 다른 말로 시야(FOV, field-of-view) 추정치를 구하는 것입니다.

FOV 는 카메라가 월드를 얼마나 볼 수 있는지를 결정하며, 가상 카메라의 FOV 를 이 값에 최대한 일치시키는 것이 중요합니다.

카메라의 (각도 단위) FOV 값을 이미 알고 있다면, mrc.FovOverride 콘솔 변수로 설정하면 됩니다.

대부분의 USB 카메라 제조사는 장치에 대각선 FOV (DFOV) 를 명시합니다. 하지만 관심 있는 것은 (각도 단위) 수평 FOV 입니다. 다음 공식으로 대각선 FOV 에서 수평 FOV 를 계산해낼 수 있으며, 이전 단계에서 산택한 해상도의 높이(h)와 너비(w)를 사용합니다.

MR_FOVFormula.png

DSLR 렌즈의 수평 FOV 를 계산하는 방법도 있습니다.

카메라의 구체적인 FOV 값을 몰라도 걱정하지 마세요. 여기서 근사값을 구할 수 있습니다.

카메라 렌즈를 조절할 수 있는 경우, 보정을 마친 뒤 줌 조절을 하지 않도록 주의하세요. 줌을 조절하면 물리적 카메라의 시야(FOV)만 변하고 가상 카메라는 그대로입니다. 가상 카메라는 보정 도중 사용된 FOV 를 사용합니다. 보정 이후 카메라의 줌을 조절한 경우, 보정 프로세스를 반복해야 합니다.

  1. 정렬 보정

AdjustingAlignment2.png

이 단계에서는 완료될 때까지 Align (정렬) 및 Adjust (조정) 단계를 재실행해야 합니다.

  1. 화면상의 모델로 컨트롤러를 정렬합니다.

  2. 샘플 정렬을 조정합니다.

  3. 반복합니다.

컨트롤러에서 정확한 트래킹 데이터를 얻을 수 있도록 헤드셋 센서를 가리는 것이 중요합니다.

HTC Vive 의 경우 컨트롤러가 켜졌는지 확인한 후 툴을 실행하세요. 그렇게 하지 않으면 보정 툴이 정렬할 모델을 표시하지 못할 수 있습니다 (툴이 사용 중인 컨트롤러 유형을 인식해야 합니다).

1 단계 - 모델 정렬

화면에 있는 분홍 새끼 고양이 모델로 컨트롤러를 정렬합니다. 컨트롤러와 모델이 나란히 있을 때 컨트롤러를 화면쪽으로 쥐고 트리거를 당깁니다.

트리거를 당기면, 화면이 멈추고 다음 단계로 넘어갑니다.

2 단계 - 샘플 조정

트리거를 처음 당길 때 (손이 떨리거나 해서) 완전 정확하지 않을 수 있습니다. 이 단계에서는 마지막 샘플이 프레임에 보다 정확히 정렬되도록 조정합니다.

3 단계 - 반복

정렬할 점 개수는 총 11 개입니다. 정렬이 만족스럽다 생각한다면, 모든 점을 돌아볼 필요는 없습니다.

image alt text

조정 컨트롤

  • 위/아래 : 모델을 세로로 이동합니다.

  • 왼쪽/오른쪽 : 모델을 가로로 이동합니다.

  • Num +/- : 모델을 줌 인/아웃 합니다.

  • Alt + 위/아래 : 모델을 세로로 회전합니다 (피치).

  • Alt + 왼쪽/오른쪽 : 모델을 가로로 회전합니다 (요).

  • Alt + Num +/- : 모델을 좌우로 회전합니다 (롤).

  • H : 모델과 그 윤곽선을 숨깁니다.

  • Alt + H : 모델만 숨깁니다 (윤곽선은 놔둡니다).

  • P : 정렬을 미리봅니다.

  • Enter : 정렬을 수락합니다.

결과 미리보기

샘플을 취하면서, 화면에는 색 입힌 (십자 및 타깃) 아이콘 시리즈가 표시됩니다. 각 짝이 얼마나 가까운지를 보면 정렬이 얼마나 가까운지 알 수 있습니다. 모든 짝이 최대한 가까이 있는 것이 좋겠지만, 하나가 멀리 떨어져도 걱정하지 마세요 (부정확한 샘플일 수 있습니다).

P 키를 (또는 썸스틱을) 누르고 있으면 정렬이 얼마나 가까운지 미리볼 수 있습니다. 결과에 만족하고 나머지 점 정렬을 건너뛰려면, End 키를 누릅니다.

MR_PreviewResults.png

비디오 지연: 비디오 피드와 컨트롤러 트래킹 사이 약간의 지연이 있을 수 있습니다. 그러면 둘이 제대로 정렬됐는지 알기가 힘들어집니다. 이 문제를 해결하려면 mrc.TrackingLatencyOverride 콘솔 변수로 지연을 넣어 동기화를 개선시킬 수 있습니다.

4. 정렬 조정

지금까지 한 번에 하나의 샘플 정렬만 조정했습니다. 이 단일 샘플은 보정 툴에 카메라 위치를 잘 추정해 주지만, 프레임 구석에 보정했을 때가 더 좋을 수 있습니다.

Click to play animation

이 단계에서는 화면에 흰색 박스가 5 개 있습니다. 컨트롤러 하나를 각 박스로 이동하고 트리거를 각각 당깁니다.

이 프로세스는 촬영하고자 하는 동일 깊이(카메라와의 거리)에서 하는 것이 좋습니다.

각 박스는 해당 지역에서 샘플을 취하면 사라집니다. 손으로 트래킹하는 모델이 박스 안에 완전히 있어야 샘플을 취할 수 있습니다.

조정 가하기

박스 5 개를 전부 취하면, 화면이 분할 화면처럼 바뀝니다.

MR_MakingAdjustments.png

이전 정렬 프로세스에서처럼 모델을 이동, 회전, 스케일 조절하여 이미지에 맞춥니다.

조정 컨트롤

  • 위/아래 : 모델을 세로로 이동합니다.

  • 왼쪽/오른쪽 : 모델을 가로로 이동합니다.

  • Num +/- : 모델을 줌 인/아웃 합니다.

  • Alt + 위/아래 : 모델을 세로로 회전합니다 (피치).

  • Alt + 왼쪽/오른쪽 : 모델을 가로로 회전합니다 (요).

  • Alt + Num +/- : 모델을 좌우로 회전합니다 (롤).

  • **</>** : FOV 를 위아래로 조정합니다 (주의하세요).

  • R : 조정을 리셋합니다.

  • P : 정렬을 미리봅니다.

  • Enter : 정렬 조정을 수락합니다.

한 샘플에 대한 조정/최적화가 다른 샘플에서 얼마나 벗어나는지 확인할 수 있습니다.

이 단계에서의 회전은 약간 이해하기 어려울 수 있는데, 모든 모델을 한 번에 일제히 이동하기 때문입니다. 전체 모델의 가운데를 중심으로 단일 모델처럼 회전한다 생각해 보세요. 가운데 샘플은 화면 중앙에 두고 먼저 정렬한 뒤, 기준점으로 사용해 보세요.

5. 합성 보정

이 단계에서는, 특정 합성 세팅을 조정합니다. 혼합 현실 캡처에서와 같은 합성 씬을 처음 보게되는 단계입니다. 지금 종료해도 모든 것이 정상 작동할 것입니다.

MR_CompositingCalibratrion.png

화살표 키를 사용하여 특정 값을 선택하고 설정합니다.

크로마 키 세팅

이 단계의 세팅 대부분은 크로마 키 프로세스에 관계된 것으로, 블로그 글 에서 자세히 다루고 있습니다.

세팅

설명

ChromaColor

크로마 색 - 크로마 배경 색입니다 (보통 초록입니다).

Luminance Power

휘도 세기 - 보이는 색의 색조를 줄 수 있는 그림자와 배경색을 분리하는 데 사용됩니다.

Chroma Clip Threshold

크로마 클립 한계치 - 크로마 색과 이 허용치까지 일치하는 색은 완전 잘라냅니다. 값이 클 수록 잘라내는 부분이 커집니다. 값이 0 이면 크로마 색과 똑같은 픽셀만 완벽 투명해진다는 뜻입니다.

Chroma Opacity Strength

크로마 불투명도 강도 - 나머지 픽셀의 불투명도에 대한 스케일입니다. 값이 클 수록 반투명도는 줄어듭니다. 크로마 색에 가까운 색일 수록, 이 값을 올려야 투명해지지 않습니다.

Despill Strength

번짐제거 강도 - 번짐제거 강도 스케일입니다. 값이 0 이면 번짐제거 보정을 하지 않는다는 뜻입니다.

Despill Cutoff Cap

번짐제거 잘라내기 상한 - 크로마 색과 이 허용치 이상 다른 색은 번짐제거 보정에 영향받지 않습니다. 값이 클 수록, 색 보정이 많이 됩니다.

Despill Sharpness

번짐제거 선명도 - 번짐제거 그러데이션을 부드럽게 하는 데 사용됩니다. 번짐제거 감쇠 커브를 정의합니다. 번짐제거 강도 스케일을 기하급수적으로 조절합니다. 값이 작을 수록 미묘해/부드러워 집니다.

Faux Bounce Intensity

가복원 강도 - 번짐제거 프로세스의 일부로 제거한 색의 대체색 세기에 적용할 스케일입니다. 값이 0 이면 가복원 색을 적용하지 않는다는 뜻입니다.

Faux Bounce Color

가복원 색 - 번짐제거 프로세스의 일부로 제거한 크로마 색이 번진 부분을 대체할 색입니다.

다른 합성 세팅

세팅

설명

Tracking Latency

트래킹 지연 - 비디오 캡처 디바이스에 따라, 비디오 피드가 컨트롤러에 비해 지연이 있을 수 있습니다. 이 세팅을 사용하면, 컨트롤러에 지연을 적용하여 둘 사이 동기화를 개선시킬 수 있습니다.

Depth Offset

깊이 오프셋 - 기본적으로 비디오는 헤드셋 깊이에 맞춰 정렬됩니다. 피사체 앞뒤로 렌더링할 것을 결정할 때 사용합니다. 씬의 앞이나 뒤로 오프셋을 적용할 수 있도록 해줍니다.

Enter 키를 누르면 한 세팅을 다음 세팅으로 순환합니다. 구성에 만족하면 End 키를 눌러 저장합니다. 언제든 툴을 다시 시작하여 나중에 이 값을 조정할 수 있습니다.

6. 가비지 매트 작업

Garbage matting (가비지 매트 작업)은 비디오 피드에서 항상 잘라낼 영역의 윤곽을 잡는 프로세스입니다.

그린 스크린이 전체 프레임을 덮지 않는 경우, 이 추가적인 프로세스를 통해 캡처에서 초과된 구역을 잘라내야 합니다.

조정 프로세스의 마지막 단계입니다. 이 문제가 없거나 해결할 필요가 없는 경우, 이 단계를 건너 뛰고 종료해도 됩니다.

MR_GarbageMatting.png

유일하게 툴에서 VR 작업을 해야하는 단계입니다. 헤드셋을 쓰면 컨트롤이 앞에 표시될 것입니다.

가비지 매트 작업 컨트롤

  • End/Esc : 저장하고 툴을 종료합니다.

왼쪽 컨트롤러

오른쪽 컨트롤러

  • Grip : Alt (쥐고 있으면 컨트롤이 바뀝니다.)

  • Trigger (쥐고 드래그) : 기즈모 이동입니다.

  • Thumbstick : 실행 취소입니다.

왼쪽 그립을 쥔 채로:

  • Trigger : 기즈모 위치 리셋입니다.

  • Thumbstick : 다시 실행입니다.

  • Grip : 그립 - 매트 모델을 생성합니다.

  • Trigger : 트리거 - 매트 모델을 선택/해제합니다.

  • Thumbstick : 썸스틱 - 다음 기즈모 (회전, 이동, 스케일 등의) 모드입니다.

왼쪽 그립을 쥔 상태에서:

  • Trigger : 모두 선택 해제합니다.

  • Thumbstick : 썸스틱 - 이전 기즈모 모드입니다.

클릭하면 애니메이션을 재생합니다.

VR 월드 에디터 작동방식과 비슷하게, 3D 평면을 배치하고 위치를 잡습니다. 평면을 캡처에서 잘라내려는 현실 섹션과 일치시킵니다.

VR 에는 미리보기 창이 있어, 매트를 변경하면서 결과를 확인할 수 있습니다. 이 시점에서 카메라를 (트래커에 부착된 경우) 움직여 다른 각도에서 어떻게 보이는지 확인할 수 있습니다.

매트를 완벽하게 정렬하는 것은 어려운 프로세스가 될 수 있습니다. 문제가 있는 경우, 매트를 놓으려는 곳에 서서 직접 가져와 보세요. 화면 속 화면(picture-in-picture) 기능을 사용하면 진행하는 데 도움이 됩니다.

원하는 영역을 매트로 걸러낸 이후 (End 또는 Esc 키로) 앱을 종료하면 모든 세팅이 저장됩니다. 필요한 경우 툴을 다시 시작하여 세팅을 조정할 수 있습니다.

최종 결과

보정 프로세스를 마쳤으면, 툴을 종료해도 됩니다. 툴의 Saved/SaveGames/ 디렉터리에 MrcCalibration.sav 파일이 있을 것입니다.

클릭하면 애니메이션을 재생합니다.

MrcCalibration.sav 파일이 생겼으면, 게임의 /Saved/SaveGames/ 폴더에 복사합니다. 게임에 아직 SaveGames 디렉터리가 없으면, 수동 생성해야 합니다.

이 프로세스는 한 번만 해 두면 (설정이 바뀌지 않는 한) 다시 할 필요가 없습니다. 같은 보정 세팅 파일을 여러 UE 타이틀에 (MRC 프레임워크 플러그인을 활성화했다면) 재사용할 수 있습니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼