이 가이드에서는 헤드 마운트 스테레오 카메라 커플에서 캡처된 데이터를 가져와 언리얼 엔진용 메타휴먼 플러그인에서 처리하기 위해 꼭 필요한 단계를 안내합니다.
플러그인은 데이터가 특정 파일 포맷으로 되어 있으며 특정 디렉터리 구조를 사용할 것으로 예상합니다. 데이터 포맷이 올바르면 재구성에 필요한 캘리브레이션 파라미터를 계산 및 익스포트할 수 있습니다. 에픽에서는 이 작업을 지원하기 위해 일부 Python 스크립트와 캘리브레이션 애플리케이션을 제공해 드립니다.
캘리브레이션 애플리케이션과 스테레오 파이프라인 스크립트는 현재 마켓플레이스에서 배포되는 플러그인과 함께 제공됩니다.
애플리케이션과 스크립트는 엔진 위치에 상대적으로, 다음 경로에서 사용 가능합니다.
[엔진]\Engine\Plugins\Marketplace\MetaHuman\Content\StereoCaptureTools
이 가이드에서는 이러한 툴을 설치 및 사용하여 샘플 데이터를 준비하는 방법을 다룹니다. 최적의 데이터를 캡처하는 방법에 대한 가이드는 페이셜 연기 캡처 가이드라인 페이지를 참조하세요.
설치 및 구성
다음 단계를 따라 필요한 툴을 설치 및 구성합니다.
시작하기 전에, 다음 항목이 컴퓨터에 설치되어 있어야 합니다.
- Python 3.6 이상. Python.org에서 다운로드할 수 있습니다.
- ffmpeg(최신 버전). FFMPeg.org에서 다운로드할 수 있습니다.
어느 디렉터리에서든 편리하게 호출할 수 있도록 이 두 가지가 모두 시스템 경로에 있어야 합니다.
그런 다음, 아래 설치 단계를 따라 계속합니다. Windows 설정 > 환경 변수 로 이동하여 path
변수에 새 항목을 추가합니다.
-
플러그인 위치에서 툴과 스크립트를 찾습니다. 플러그인의 EULA에 명시된 목적을 준수하는 한, 선호하는 위치로 툴과 스크립트를 이동해도 됩니다.
-
msi
파일을 사용하여 캘리브레이션 애플리케이션을 설치합니다. 화면의 지시를 따릅니다. 캘리브레이션 애플리케이션은 다음 경로에 있습니다.C:\Program Files\Epic Games\Calibration App
-
Windows 설정의 시스템 경로 환경 변수에 디렉터리
C:\Program Files\Epic Games\Calibration
애플리케이션을 추가합니다. -
스테레오 캡처 툴이 포함된 디렉터리에서
cmd
콘솔을 엽니다. 기본적으로 이 디렉터리는 다음과 같습니다.[엔진]\Engine\Plugins\Marketplace\MetaHumanTest\Content\StereoCaptureTools\stereo_capture_tools-0.1.9
-
requirements.txt
파일을 사용하여 Python 종속성을 설치합니다.pip install -r requirements.txt
Python 종속성을 설치하기 전에 다음 명령을 사용하여 가상 환경을 제작하는 것이 좋습니다(필수는 아닌 권장 사항).
python -m venv venv
그리고 다음 명령으로 초기화합니다.
.\venv\Scripts\activate.bat
이제 설치가 완료되었습니다.
스테레오 캡처 툴을 사용할 cmd
창에서 activate.bat
을 실행하여 가상 환경을 활성화하는 것을 잊지 마세요.
데이터 준비
입력 데이터
다음 섹션은 사용자에게 일부 캘리브레이션 영상 및 퍼포먼스 영상이 있으며, 1개의 캘리브레이션 샷과 2개의 배우 퍼포먼스(하나는 아이덴티티 생성 용도, 다른 하나는 실제 퍼포먼스 용도)도 보유하고 있다고 가정합니다.
아래 스니펫 예시에서는 'example_data' 아래 녹화된 영상의 3가지 개별 타입을 나타내는 데 'calibration', 'identity', 'performance'를 사용합니다.
모든 사례에는 mov
포맷 비디오 파일 한 쌍이 있으며, 하나는 상단 카메라( top.mov
)용, 다른 하나는 하단 카메라( bot.mov
)용입니다. performance의 경우 wav
포맷의 오디오인 audio.wav
도 수반됩니다.
+---example_data
| +---identity
| | audio.wav
| | bot.mov
| | top.mov
| |
| ---performance
| audio.wav
| bot.mov
| top.mov
|
+---calibration
| bot.mov
| top.mov
데이터가 이와 다르게 구조화된 경우 데이터 구조에 아래의 지침을 적용합니다.
데이터 변환
다음 예시는 사용자가 기본 위치에서 스크립트를 사용 중이며, 또한 스테레오 영상이 C:\MyData\example_data
에 있다고 가정합니다.
-
cmd
창을 엽니다. -
준비된 데이터의 새 위치를 다음과 같이 생성합니다.
mkdir c:\MyData\example_data_prepared
-
다음 명령으로 캘리브레이션 데이터를 변환합니다.
가상 환경을 사용 중인 경우 이 명령을 실행하기 전에 가상 환경을 활성화해야 합니다.
python "C:\Program Files\Epic Games\UE_5.2\Engine\Plugins\Marketplace\MetaHumanTest\Content\StereoCaptureTools\stereo_capture_tools-0.1.9\stereo_capture_tools\mh_ingest_convert.py" top c:\MyData\example_data\calibration\top.mov bot c:\MyData\example_data\calibration\bot.mov c:\MyData\example_data_prepared\calibration
top 및 bot 이름은 표시된 대로 사용해야 합니다. 이 프로세스가 완료되면, 준비된 데이터 폴더에 캘리브레이션에 필요한 메타데이터 및 이미지와 함께 캘리브레이션 하위 디렉터리가 생길 것입니다.
-
아이덴티티 생성 및 퍼포먼스 데이터를 다음과 같이 변환합니다.
python "C:\Program Files\Epic Games\UE_5.2\Engine\Plugins\Marketplace\MetaHumanTest\Content\StereoCaptureTools\stereo_capture_tools-0.1.9\stereo_capture_tools\mh_ingest_convert.py" --audio-path c:\MyData\example_data\performance\audio.wav top c:\MyData\example_data\performance\top.mov bot c:\MyData\example_data\performance\bot.mov c:\MyData\example_data_prepared\identity
이 프로세스가 완료되면, 준비된 데이터 폴더에 아이덴티티 생성에 필요한 메타데이터 및 이미지와 함께 아이덴티티 하위 디렉터리가 생길 것입니다.
-
퍼포먼스 데이터에도 다음과 같이 프로세스를 반복합니다.
python "C:\Program Files\Epic Games\UE_5.2\Engine\Plugins\Marketplace\MetaHumanTest\Content\StereoCaptureTools\stereo_capture_tools-0.1.9\stereo_capture_tools\mh_ingest_convert.py" --audio-path c:\MyData\example_data\performance\audio.wav top c:\MyData\example_data\performance\top.mov bot c:\MyData\example_data\performance\bot.mov c:\MyData\example_data_prepared\performance
이 프로세스가 완료되면, 준비된 데이터 폴더에 퍼포먼스에 필요한 메타데이터 및 이미지와 함께 퍼포먼스 하위 디렉터리가 생길 것입니다.
필요한 경우 모든 추가 영상에 위 단계를 반복합니다.
캘리브레이션
준비된 데이터에서 스테레오 카메라 캘리브레이션 프로세스를 시작하려면 다음 명령을 실행합니다.
CalibrationApp -f c:\MyData\example_data_prepared\calibration
-e c:\MyData\example_data_prepared\calibration\calib.json -n 30
이 프로세스는 몇 초 정도 걸리며, 다음 출력이 제공됩니다.
Detection Started!
Detection Finished!
Intrinsic Calibration Started.
bot: 30/30 selected images for intrinsic calibration. (0 blurry images).
top: 30/30 selected images for intrinsic calibration. (0 blurry images).
Intrinsic Calibration Finished.
Extrinsic Calibration Started.
60 selected images for extrinsic calibration.
2.12488e+08 3084.77
Calibration has been saved to: C:\MyData\example_data_prepared\calibration\calib.json
Calibration process complete
Extrinsic Calibration Finished. mse = 0.413976
Calibration Finished.
마지막으로 calib.json 파일을 각 퍼포먼스 디렉터리에 복사해야 합니다. 이 경우에는 다음과 같습니다.
copy C:\MyData\example_data_prepared\calibration\calib.json c:\MyData\example_data_prepared\identity\calib.json
copy C:\MyData\example_data_prepared\calibration\calib.json c:\MyData\example_data_prepared\performance\calib.json
커스텀 캘리브레이션 보드
기본 보드와는 정사각형 개수와 크기가 다른 캘리브레이션 보드를 사용할 수 있습니다. 이렇게 하려면 C:\Program Files\Epic Games\Calibration App\default_hmc_config.json
에서 기본 환경설정의 사본을 가져와 수정하면 됩니다.
patternHeight
, patternWidth
, squareSize
를 캘리브레이션 보드에 맞게 업데이트합니다.
patternHeight
- 보드의 높이를 이루는 내부 모서리의 개수입니다. 따라서 이 값은 정사각형 개수 - 1입니다.patternWidth
- 보드의 너비를 이루는 내부 모서리의 개수입니다. 따라서 이 값은 정사각형 개수 - 1입니다.squareSize
- 각 정사각형의 변 길이(cm)입니다. 정사각형이 아닌 그리드는 지원되지 않습니다.
캘리브레이션 명령을 실행할 때는 -c
파라미터를 추가하여 커스텀 환경설정 파일을 지칭합니다. 예시는 다음과 같습니다.
CalibrationApp -f c:\MyData\example_data_prepared\calib
-e c:\MyData\example_data_prepared\calibration\calib.json -n 30 -c c:\MyData\example_data_prepared\custom-config.json