本指南将帮助你了解从头戴式立体摄像机组获取已捕获数据,并准备数据以便使用虚幻引擎MetaHuman插件进行处理的必要步骤。
此插件要求数据采用特定的文件格式,并使用采用特定的目录结构。如果数据格式没问题,则可以计算并导出校准参数,用于重新构建。我们提供了一些Python脚本和校准应用帮助完成这些任务。
目前校准应用与立体管线脚本与虚幻商城发布的插件绑定。
可通过引擎位置相关的以下路径找到它们:
[engine]\Engine\Plugins\Marketplace\MetaHuman\Content\StereoCaptureTools
本指南将介绍如何安装并使用这类工具来准备示例数据。有关如何捕获最佳数据的指引,请参阅面部表演捕捉指南。
安装和设置
遵照以下步骤安装并设置所需工具。
在你开始前,你需要在计算机上安装以下工具:
- Python 3.6或更新版本。你可以从Python.org下载。
- ffmpeg(最新版本)。你可以从FFMPeg.org下载。
确保这两项位于系统路径中,以便可以从任何目录方便地调用它们。
然后,你可以继续以下安装步骤。前往 Windows设置(Windows Settings)> 环境变量(Environment Variables) ,并将新条目添加到 路径
变量中。
-
从插件位置找到工具和脚本。你可以选择将它们移动到偏好位置(符合插件的最终用户许可协议中注明的目的)
-
使用
msi
文件安装校准应用。遵循屏幕指令。校准应用位于以下路径:C:\Program Files\Epic Games\Calibration App
-
将应用目录
C:\Program Files\Epic Games\Calibration
添加到Windows设置中的环境变量系统路径。 -
在包含立体捕获工具的目录中打开
cmd
控制台。默认为:[engine]\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
来激活虚拟环境。
数据准备
输入数据
以下小节假定你已有校准素材和一些表演素材。还假定你有一段校准镜头和两段演员表演(一个用于身份创建,另一个用于实际表演)。
在下面的片段示例中,我们使用“校准”、“身份”和“表演”指代“example_data”中所记录的三种不同的素材类型。
在所有情况下,都有一对 mov
格式的视频文件,一个用于顶部摄像机(top.mov
),一个用于底部摄像机(bot.mov
)。对于表演,还有 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