MetaHuman 数字人
MetaHuman
MetaHuman 是 Epic 的一套完整框架,用来创建、驱动和使用带完整绑定、照片级的数字人。从 UE 5.6 起,MetaHuman Creator 完全集成进引擎(双击 MetaHuman Character 资产打开),可以把角色组装 (Assembly) 成针对不同目标环境优化的资产。在引擎层面,最需要关心的是 LOD:MetaHuman 由多个 LOD 数量不同的组件组成,由 LODSync 组件统一切换;毛发是 Groom 资产,可以在发丝、发片、网格三种几何之间按 LOD 切换。
框架与 UE 5.6 的变化
官方:MetaHuman 是让创作者在 UE5 项目中创建、驱动和使用完整绑定的照片级数字人的完整框架,包含 MetaHuman Creator、Crowds(大规模人群,处理优化资产生成、LOD 管理和动画)、Capture(用 Live Link Face 在 iOS/Android 上采集表演)和 Animator(从视频和音频生成动画)。(MetaHuman Documentation)
从 UE 5.6 起,MetaHuman Creator 完全集成进虚幻引擎,可以直接在项目里创建 MetaHuman,生成完整绑定、可用于游戏的资产。导入工具可以从自定义网格、模板网格、DNA 文件或 MetaHuman Identity 资产创建角色;Assembly 把角色组装成针对不同目标环境优化的资产。从网页版升级到 UE 5.6 的角色适用 UE EULA。(MetaHuman Creator in Unreal Engine)
LOD 与 LODSync 组件
MetaHuman 由多个组件组成,各自的 LOD 数量不同。LODSync 组件统一管理和同步这些组件的 LOD,让它们同时切换,而不是像普通 LOD 那样按各自的屏幕尺寸单独切换。例如脖子以上的组件(脸和所有毛发 Groom)最多 8 级 LOD,脖子以下(Body、Feet、Legs、Torso)只有 4 级,因此脖子以上每变化两级,脖子以下才变化一级。(Controlling MetaHuman Levels of Detail (LODs))
上式是对官方「两级对一级」说法的形式化表示,不是引擎中的公式。
| LODSync 属性 | 说明(官方) |
|---|---|
| Num LODs | 其他组件可用的最大 LOD 数;-1 表示根据所有组件计算 |
| Forced LOD | 强制所有组件使用某级;默认 -1 自动切换,0 最高质量,8 最低。大量 MetaHuman(如人群)设为 0 或 1 会明显拖累性能 |
| Min LOD | 同步时使用的最低 LOD |
| Components to Sync | 每个组件的同步选项:Drive(参与决定 LOD)、Passive(跟随)、Disabled(不受影响) |
当前可见且优先级最高的组件决定其他所有组件的 LOD。(Controlling MetaHuman Levels of Detail (LODs))下图表示这种驱动关系:
flowchart LR F["Face 8 级 LOD Drive"] --> S["LODSync 组件"] S --> G["Groom 毛发 8 级"] S --> B["Body/Torso/Legs/Feet 4 级"] S -."Forced LOD 覆盖".-> G S -."Forced LOD 覆盖".-> B
图中脸部作为 Drive 组件决定 LOD,其余组件跟随;Forced LOD 不为 -1 时直接覆盖所有组件。通用 LOD 理论见 细节层次。
毛发 Groom
MetaHuman 的发型、眉毛、睫毛、胡子和汗毛 (vellus) 都存为 Groom 资产,各自在 Groom Asset Editor 中配置。Groom 支持三种几何:发丝 (Strands)、发片 (Cards)、网格 (Meshes)。每级 LOD 可以设置抽稀 (decimation) 比例、切换到下一级的屏幕尺寸,以及使用哪种几何。官方举例:一个实时场景中有几十个使用最高 LOD 发丝 Groom 的 MetaHuman,在低端硬件上可能跑不动,换成发片或网格能提升性能;对性能要求严格的平台还可以在 LOD 面板中设置 Minimum LOD。(Controlling MetaHuman Levels of Detail (LODs))发丝与发片的渲染原理见 毛发渲染。
与其他系统的关系
- 皮肤:MetaHuman Creator 的材质工具可以定制皮肤、眼睛、妆容和牙齿(MetaHuman Creator in Unreal Engine);皮肤透光的原理见 实时次表面散射(RTR4 理论,MetaHuman 具体的着色实现本次未找到官方说明)。
- 身体与动画:身体是蒙皮骨骼网格(顶点混合与蒙皮),动画复用与重定向见 IK Rig 与动画重定向;服装模拟见 Chaos 布料。这些对应关系是归纳。
面部绑定:DNA 与 RigLogic
MetaHuman 文档站中面部绑定的页面只返回目录,以下依据 Epic 发布的两份官方资料:Rig Logic 白皮书(Epic Games / 3Lateral,v2,archive.org 收录标注 2022)和 Epic 官方 GitHub 上的 MetaHuman DNA Calibration 文档。
RigLogic 是 3Lateral(2019 年并入 Epic)开发的运行时面部绑定解算器,也是 MetaHuman Creator 使用的绑定解算器。它依赖一套定义人脸肌肉系统的通用规则,以及 3Lateral 的专有文件格式 MetaHuman DNA,后者完整描述一个 3D 对象的绑定和几何。术语:表情 (Expression) 由一组关节变换、混合形状 (Blend Shape / Morph Target) 和动画贴图 (Animated Map) 定义;控制器 (Control) 保存一个基本表情的权重,理想情况下每个 FACS 动作单元 (Action Unit) 对应一个控制器;修正表情 (Corrective Expression) 用来细化复杂的表情组合。(RIG LOGIC)
DNA 文件分成若干逻辑层,后面的层依赖前面的层,并且可以只加载到指定的层:
flowchart TB D["Descriptor 层 名字/年龄/原型/元数据"] --> F["Definition 层 绑定姿势与 LOD 过滤信息"] F --> BH["Behavior 层 驱动绑定的动态数据"] F --> G["Geometry 层 网格/蒙皮权重/混合形状目标"]
图中 Behavior 层和 Geometry 层互不依赖:只需要驱动绑定(运行时求值)时可以不加载几何数据,因此方案可以移植到任何持有面部几何的应用中。Behavior 层负责:把 GUI 控制器映射成原始控制值、计算修正表情、计算关节变换、混合形状通道权重和动画贴图权重。(RIG LOGIC)
性能设计:早期版本把每个参数编码成斜率函数 并存进稀疏 CRS 矩阵;后来发现非零参数聚集成若干稠密子矩阵,并且恰好对应面部的不同区域,于是引入关节组 (Joint Group),用稠密子矩阵存储,配合缓存和 SIMD 友好的分块布局实现全向量化,填充带来的内存开销低于 2%。关节、混合形状、动画贴图都按 LOD 排序,所以切换 LOD 没有额外开销。(RIG LOGIC)
工具:DNACalib 可以检查和修改 DNA 文件,包括重命名或删除关节、网格、混合形状,旋转、缩放、平移整个绑定,删除 LOD,修改中性姿势和混合形状增量;DNAViewer 可以在 Maya 中生成可用的绑定(期间加载 RigLogic 插件)、按 LOD 导出 FBX、读取 DNA 内部数据。(MetaHuman DNA Calibration — DNA Calibration documentation DNA Calibration Contents MetaHuman DNA Calibration Overview Ex)
版本说明
LOD 一节依据 UE 5.6 版本的 MetaHuman 文档(5.8 版本只返回标题);RigLogic 与 DNA 一节依据白皮书和 GitHub 文档,二者都没有标注引擎版本。
出处
- MetaHuman Documentation MetaHuman 文档
- MetaHuman Creator in Unreal Engine MetaHuman 文档(UE 5.6+)
- Controlling MetaHuman Levels of Detail (LODs) MetaHuman 文档(UE 5.6 版本)
- RIG LOGIC Epic/3Lateral 白皮书 v2(2022)
- MetaHuman DNA Calibration — DNA Calibration documentation DNA Calibration Contents MetaHuman DNA Calibration Overview Ex Epic 官方 GitHub 文档