项目概述

将无标定、无动捕设备的单目视频还原为 Unreal Engine 中可再编辑的角色动画与相机轨道。人体姿态与面部表情由单目动捕求解,相机轨迹与世界坐标由 SLAM 与 SfM 重建,两者在统一坐标系下装配为 Level Sequence 并渲染输出。管线覆盖单人动作复刻、运镜克隆与多人场景重建三类任务。

三条链路与共用底座。

管线结构

三条链路依次展开,每一条在前一条基础上只多解一类信息:运镜克隆多解相机运动,多人动捕多解各主体的世界定位与身份关联。世界坐标统一、足部贴地与朝向修正、Level Sequence 装配与渲染输出由三条链路共用,新增素材只需补上自身的求解节点。

与引擎官方方案的差异

UE 5.8 的 MetaHuman Animator 单目动捕解出的是相机坐标系下的单人姿态,不含相机运动,也不含角色在场景中的位置;多个主体只能逐个求解,彼此没有共同的空间参照。本管线在同一世界坐标系下同时给出姿态、相机与站位,人物之间、人物与相机的相对关系因此得以保留。

同一段视频:官方方案与本管线的结果对比。

单人动捕:复刻结果

每组画面中间一栏为 SMPL 求解结果,用于核验;进入引擎的身体与面部动画来自 MetaHuman 单目动捕,相机与世界锚点来自 TRAM。左下俯视图为该时刻相机(蓝)与角色(粉)在同一世界坐标系中的路径。

四段运镜下的单人复刻结果。

单人动捕:求解与装配

两条分支分别提供数据:TRAM 通过 DROID-SLAM 求解相机轨迹,camcalib 估计焦距,并给出 SMPL 人体与 pelvis 世界锚点;MetaHuman 单目动捕批量输出身体骨骼与面部表情曲线。坐标统一转换为 UE 的厘米、Z 轴向上、左手坐标系,再做足部贴地、根节点约束与朝向修正。相机位姿逐帧带有抖动,用三次控制点拟合整条轨迹,控制点间距决定平滑程度,运镜幅度保持不变。Level Sequence 中包含 CineCamera 位姿与焦距曲线、由 pelvis 锚点定位的身体动画轨道和面部曲线轨道;Body 与 Face 为独立骨架,Torso、Legs、Feet 通过 Leader Pose 跟随。最终经 Movie Render Queue 输出 PNG 序列并由 FFmpeg 合成。

双分支求解、轨迹去抖与 Level Sequence 轨道结构。

运镜克隆

解算出的相机运动以可编辑数据保存,同一条运镜可迁移到其他场景与角色。画面内的相对运动可以由相机走位承担,也可以由主体走位承担,按几何关系拆分为两路驱动,构图保持不变。由于焦距与机位距离在成像上近似可以互换,指定新焦距后反解机位距离,主体的画面占比和位置不变,只改变透视压缩与景深。

左上为原片,其余三格为同一运镜在不同 UE 场景中的复刻。
相机运动的分解、等构图焦距变更与多场景复用。

多人动捕

前景主体与背景群体分别求解后合成;双人多镜头序列用 COLMAP 重建相机,逐镜头独立内参,跨镜头共享同一世界坐标系。PromptHMR 求解逐人 SMPL-X 轨迹,各主体的世界位置由相机经脚点投射的射线与 RANSAC 拟合的地平面求交得到,头顶射线给出重建单位下的身高,再按角色实际身高确定米制尺度。身份在跨镜头间按世界位置匹配,多机位素材按音频起音包络对齐时间。核验以多主体包围盒高度与质心位置相对画面高度的误差为判据。分镜以子序列嵌入主序列,最终渲染走完整序列,使布料与毛发解算跨镜头保持连续。

上排:前景主体与背景群体分别重建后合成;下排:双人多镜头序列。
世界定位与站位求解、原片与复刻的站位对齐、多镜头序列结构。

参考文献与开源实现

TRAM:Global Trajectory and Motion of 3D Humans from In-the-Wild Videos,ECCV 2024,用于单人链路的相机轨迹与世界坐标。PromptHMR:Promptable Human Mesh Recovery,CVPR 2025,用于多人链路的逐人姿态求解。SMPL-X:Expressive Body Capture,CVPR 2019,多人链路的人体表示。Unreal Engine 5.8 MetaHuman Animator:身体与面部单目动捕、装配与渲染。其他工具:COLMAP、Python、PyTorch、FFmpeg。

展示视频

动捕与运镜演示

技术内容整理自作者作品集及项目文件。

下一个项目程序化箱体工具