首先,访问官方资料(Epic的文档):
- Groom 白皮书:使用虚幻引擎实现逼真的头发和毛皮——获取白皮书!
- 头发渲染与模拟文档:虚幻引擎头发渲染与模拟 | 虚幻引擎 5.1 文档
- 基于发丝的头发创建指南: 毛发创建XGen指南
头发制作:
你可以使用 Maya(xGen 或交互式 Groom 样条线)或 Blender 粒子系统来创建 UE5 中虚幻Metahuman(Metahumans)的基于发丝的头发。
建议研究 Metahuman Creator 中的 Groom 资产,学习制作虚幻元人头发的“最佳实践”。
设计时考虑性能优化:
- 检查 CV 的数量(曲线数量乘以每条曲线的 CV 数量)——这非常重要,数量越多,渲染开销越大。
- 根据不同会被动画化的部分,将发型分组——关闭部分 Groom 的模拟是极佳的性能优化手段。最好在 Maya 中将各组设为独立的描述(或将几个描述合并为一组)。
- 有时我会降低“隐藏”或不太显眼的头发部分的密度,这仅适用于不进行动画的头发区域。
- 为保持制作流程整洁,在不知道客户如何动画头发的情况下,建议第一个聚集(Clumping)修改器基于指南(Guides)创建,因为这些 Guides 可用于 UE 中引导动画。
导出到虚幻引擎:
- 请查看 UE 官方文档中的导出步骤: 虚幻引擎XGen毛发创建指南 | 虚幻引擎 5.6 文档 | Epic Developer Community
- 从 Maya xGen 导出 Alembic 头发:
我写了一个脚本自动化文档中的操作步骤,你可以购买此脚本: xGen2UE Script - Export Alembic Hair from Maya xGen to UnrealEngine5(我将不再维护此脚本,但如果你懂操作,它能节省大量时间)。 - 查看 Charlie 的视频和博客(含 Epic 脚本链接),Epic 在基于发丝头发功能刚发布时公开了他们用于导出 Maya xGen 的脚本,支持高密度 Groom,效果不错,但目前不再支持且无法导出组信息。 Unreal Engine 4.25 Groom Q&A
- 导出流程的核心是将头发导出为 ALEMBIC 文件,并带有 UE 用于高光(如 rootUVs)、组(group_id)以及动画曲线数据的特定属性(使用基于 Guides 的聚集时,Guides 会作为曲线属性写入,但我认为如果你使用组,这些曲线动画属性可能不起作用)。
UE 项目设置:
请确保安装以下插件:
- Groom
- Alembic Groom Importer
头发渲染:
如果头发在 UE5 中效果不好,可以尝试调整以下变量:
r.HairStrands.RasterizationScale = 0.1(默认值为“1”)
其他相关 cVar:
r.HairStrands.RasterizationScale:发丝渲染像素映射缩放等级r.HairStrands.StableRasterizationScale:用于“稳定”头发选项的像素映射缩放(不可低于1)r.HairStrands.VelocityRasterizationScale:高速度时的像素映射缩放r.HairStrands.ShadowRasterizationScale:阴影视角下的像素映射缩放
其他建议:
- 为提升性能,考虑关闭头发模拟。
- 头发资产密度越低,光影计算越轻松。
- 主光源开启“Cast Deep Shadow”选项(性能开销较大)。
将头发添加到 MetaHuman:
- 导入 Hair.abc 到 UE5 项目
- 右键 Groom,选择“Create Binding”将其绑定到 MetaHuman 面部网格
- 选择 [MHname]_FaceMesh 骨骼网格
- 可以创建毛囊贴图(右键 “Create Follicle Map”),生成毛囊蒙版,后续可用于面部材质,以实现发根的优质渲染效果。
- 在 GroomAsset 窗口(双击头发资产)进行调整:
“Strands”标签:调整头发宽度、发根/发梢缩放、阴影密度等。
若需开启头发模拟,转至 Groom Asset 窗口的“Physics”标签,启用 Solver Settings > Enable Simulation。
更多资料阅读:
- MetaHuman 配置及 Groom 相关 cVar: Metahuman文档| 虚幻引擎 5.6 文档 | Epic 开发者社区
- Groom 白皮书: 用虚幻引擎制作逼真毛发:获取白皮书!
- 头发渲染与模拟文档:头发渲染与模拟指南| 虚幻引擎 5.6 文档 | Epic 开发者社区
- 基于发丝的头发创建指南: 毛发创建XGen指南 | 虚幻引擎 5.6 文档 | Epic 开发者社区