UE5管理内容-毛发渲染

传统的实时毛发渲染采用基于发片的渲染方案(或其他类似技术)。 在基于发片的工作流中,通过使用大量卡片状的发片来近似模拟大量毛发的形状和运动。而虚幻引擎的Groom系统和工具允许你单独渲染每一根发丝/发束,从而大幅提高毛发实时模拟的视觉逼真度。
虽然毛发Groom当前尚无标准文件格式,但Groom系统提供了一种基于Alembic(.abc)文件格式和特定命名规范的方案,帮助引擎从建模软件导出的毛发文件中提取数据。Groom系统还提供了对单个Alembic文件中的多个毛发组(例如头发、绒毛、胡须、睫毛和眉毛)、一流的毛发着色器和渲染系统,以及使用Niagara的动态集成的支持。
Groom系统旨在最低限度地实现发束导入、渲染和模拟。本更新不提供毛发梳理解决方案。毛发的定型或梳理需在外部DCC工具中执行,例如Maya中的XGen、Ornatrix、Yeti、刮脸和理发或Houdini。
在项目中启用毛发
要在项目中使用毛发,必须启用以下设置和插件。
要使其中每一项生效,需要重启编辑器。
项目设置
转至 编辑(Edit) > 项目设置(Project Setting) ,打开项目设置。在 渲染(Rendering)> 优化(Optimizations) 中,启用 支持计算皮肤缓存(Support Compute Skin Cache) 。

插件浏览器
转至 编辑(Edit) > 插件(Plugins) ,打开插件浏览器窗口。在 几何体(Geometry) 类别下,启用这些插件:

Alembic Groom导入器
Groom
基本工作流
以下流程图描述将自己的毛发Groom导入Unreal Engine,并连接到可动画化的骨骼网格体角色的高级流程。

在喜好的DCC应用程序中创建毛发Groom。
将毛发Groom导出为Alembic (*.abc)文件。
将该Alembic Groom文件导入Unreal Engine。
(可选)在内容浏览器中为你的骨架网格体创建一个绑定资产(Binding Asset)。
将Groom资产置于世界场景中(作为蓝图中的Actor)。
使用转移蒙皮将Groom组件(Actor)连接到骨骼网格体插槽。
设置并指定毛发材质
完成这些步骤后,就获得了交互式groom,可用于正在动画化的已连接骨骼网格体。
Groom资产
Groom 资产表示你导入的Alembic(.abc)文件的毛发Groom,并且存储在内容浏览器(Content Browser)中。双击Groom资产将打开 Groom资产编辑器(Groom Asset Editor) 。

你可以使用Groom资产编辑器管理和编辑Groom的各个部分。你将能够执行以下操作:
分配材质
创建表示发束、发片或网格体的细节级别网格体
启用和配置物理设置
使用不同的视图模式调试Groom
右键点击内容浏览器中的Groom资产后,有多个额外的 Groom操作可用于:

根据Groom导入选项 重建(Rebuild) 所选Groom的构建设置。
创建绑定(Create Binding) 以生成用于将Groom附加到骨骼网格体的绑定资产。
使用所选Groom为毛囊和发束 创建纹理(Create Textures)。
生成发束纹理
使用 Groom 资产,你可以根据导入的Groom中的发束数据创建纹理。你可以为骨骼网格体生成毛囊遮罩,更好地将毛发与其网格体表面混合。你还可以创建多个发束纹理,以用于创建毛发网格体或发片。
你的Groom可用于生成可以应用于网格体的纹理。



设置毛发材质
为使毛发几何体正确渲染,它需要分配有 着色模型(Shading Model) 设置为 毛发(Hair) 的材质。

你还需要在用法(Usage)类别下启用 用于发束(Use with Hair Strands) 。这应该会在首次应用于Groom时自动启用,但如果未启用,你可以手动将其启用。
下面是使用 毛发属性(Hair Attributes) 表达式的示例毛发材质:

绑定资产
绑定资产用于将Groom组件添加并蒙皮到骨骼网格体上。通过这种方法,Groom可以指定给需要用到它的骨骼网格体,还能指定给享有相同拓扑的骨骼网格体。

在内容浏览器中右键点击 Groom资产(Groom Asset) 并在快捷菜单中选择 创建绑定(Create Binding) 。在创建绑定时,请使用 Groom绑定选项(Groom Binding Options) 窗口指定 目标骨骼网格体(Target Skeletal Mesh) 和 源骨骼网格体(Source Skeletal Mesh) 。
创建绑定资产时,必须指定 目标骨骼网格体(Target Skeletal Mesh) ,否则在此期间不会创建任何绑定。
启用物理模拟
打开 Groom资产编辑器(Groom Asset Editor) ,并从 物理(Physics) 面板选中 解算器设置(Solver Settings) 下的 启用模拟(Enable Simulation) 旁边的复选框,启用Groom上的物理。

启用后,你可以浏览影响Groom组件的各种物理设置。
调试毛发
使用以下控制台变量调试项目中的毛发:
r.HairStrands.DebugMode
启用以下命令模式之一,将有关毛发渲染的各种统计信息和调试信息绘制到屏幕:
0 - 关闭
1 - 群集信息
2 - 所有DOM光源边界
3 - 屏幕投影群集
4 - 深度不透明贴图
5 - 亚像素样本计数
6 - TAA解析类型(常规/响应)
7 - 毛发覆盖类型
8 - 毛发密度体积
9 - 毛发切线体积
10 - 毛发底色体积
11 - 毛发粗糙度体积
12 - 毛发网格体投影
13 - 毛发覆盖
r.HairStrands.StrandMode
启用此命令以渲染场景中发束的选定调试模式:
0 - 关闭
1 - 模拟发束
2 - 渲染发束影响
3 - 根UV
4 - 根UV UDIM纹理索引
5 - 毛发UV
6 - 毛发种子
7 - 毛发尺寸
8 - 毛发半径变体
9 - 毛发顶点颜色
10 - 毛发顶点粗糙度
已知限制
帧率取决于groom大小、分辨率,以及采用的底层硬件。例如,对于1080p的人类groom,底层硬件应为2080Ti,帧率30Hz或更高。
视图模式尚不支持毛发。
多视图(毛发在多个开放窗口上可见)尚不受支持,或会导致出现瑕疵。
HairWorks用户
有些人会使用NVIDIA的毛发解决方案 HairWorks ,它包含DCC工具集成以及实时毛发渲染和模拟,需要注意的是,虚幻引擎自4.16版本开始就废弃了HairWorks。我们的长期计划是让Groom系统功能帮助为目前使用HairWorks集成的人提供迁移路径。
虽然NVIDIA通过其GitHub分支为UE4提供的最后一个正式HairWorks版本是4.16版本,但有各种补丁和升级已创建并在线提供,不过它们不受官方支持。