BlueRoseNote/03-UnrealEngine/Rendering/Character/使用Ornatrix来制作Ue4头发流程学习笔记(二)——引导曲线头发.md
2023-06-29 11:55:02 +08:00

67 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 前言
4.24出了头发渲染与模拟功能,这真是一件令人兴奋的事,所以我稍微花了点时间进行测试,在此分享一些经验。
### 使用步骤
使用步骤大致如下具体的可以参考文档https://docs.unrealengine.com/en-US/Engine/HairRendering/QuickStart/index.html
1. 首先在项目设置启用Support Compute Skincache,并禁用Tick Animation on Skeletal Mesh Init。
2. 启用Alembic Groom Importer与Groom插件之后重启引擎。此时大概会编译大概5000多的Shader
![image](https://pic3.zhimg.com/v2-05069ca0849d59afee7d02e289edbf26_r.jpg)
1. 导入带有Groom信息的abc缓存文件。
![image](https://pic3.zhimg.com/v2-3c65d36047e05d909b39106e5fce1e7a_r.jpg)
4. 设置Groom Asset属性。主要是设置头发宽度
5. 设置Groom材质。ShadingModel需要设置hairGroom对象的材质有两种设置方式1、从ContentBrowser中设置GroomAsset的属性 2、在场景中设置Groom对象的属性
![image](https://pic3.zhimg.com/v2-a60f943d7d801da07a7834949e7c9786_r.jpg)
6. 将GroomAsset拖入场景中并且attach到场景中的骨骼模型上并调整位置。直接放入蓝图的骨骼模型引擎会崩溃
![image](https://pic1.zhimg.com/v2-c9b7ed1a85e63911c8430e809488e420_r.jpg)
7. 设置场景中的Groom物体属性给它挂载Niagara Particle System并且设置GroomAssetSystem。
![image](https://pic4.zhimg.com/v2-5877574508ff6a77038ea770e36d1793_r.jpg)
![image](https://pic2.zhimg.com/v2-ba1db289e98e5478476fb7bb43071b51_r.jpg)
8. 设置Niagara物理参数。
**最终结果:**
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/hair.gif)
**关于头发对齐问题与Bind Groom to Skeletal Mesh选项**
我是复制了头皮模型并以此为基础制作头发的。所以理论上头发是不需要对齐。但导入后头发还是需要手动位移可能是我导出的时候没有勾选Unreal Engine Export的关系
**Bind Groom to Skeletal Mesh**这个选项应该让Groom根据蒙皮数据进行运动但我用下来感觉这个选项没什么卵用如有正确思路还请告知而且头发会发生错误的位移。然后在你勾选这个选项后将GroomAsset清空或者将Groom对象从骨骼物体上解除Attacked都会触发一个LOD的断言从而导致引擎直接关闭。这明显是因为容错逻辑没有写完所造成的的但也可以理解毕竟4.24.1出的时候都要过年了。
**Hair to Guide Density**
导入的头发与Groom和Ornatrix渲染的头发量Hair From Guides中的Render Count有关和Ornatrix的引导曲线无关。因为本人没有看过源代码所以以下是个人的无责任猜测
Ue4在导入头发时(abc里的数据还是类似曲线一样的东西),会根据头发分布重新生成"引导曲线"以此来进行物理模拟。因为我在进行测试的时候发现3000个引导线与9000个引导线在静态环境下渲染结果与帧数都是相同。而在设置Niagara Particle System与GroomAssetSystem时会耗费较长的时间。
所以Hair to Guide Density的默认参数0.1,这个就不要更改了。
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/Hair.png)
从这个图中可以看出一些靠近边缘的区域需要增加头发密度不然就有可能出现图中这种25岁程序员的头发。
### Ornatrix导出abc
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/OrnatrixExport.png)
导出abc的时候需要在Ornatrix的大纲视图选中最上面的节点实际上就是选中Ornatrix的形状节点你可以Maya的关系编辑器中通过查看上下游节点进行查看。
之后点击“导出当前选择”选择OrnatrixAlembic文件类型。勾选
文件类型特定选项-Export Components-Unreal Engine Export选项之后就可以导出了。
### Groom ID
Ornatrix中可以通过StandGroup对头发进行分组编辑。Ue4会通过这些StandGroup作为Groom ID数据。你可以对Groom ID的头发使用不同的参数。这样可以实现一个GroomAssetabc文件存储头发、睫毛、眉毛多种类型毛发不同的宽度与材质
Strand Groups一般是通过Edit Guides节点进行指定的。指定步骤如下
1. 在Edit Guides,点击Edit Stands按钮进行编辑Stands模式。
2. 选中需要添加组的头发。
3. 之后在StandsGroups选项卡中勾选Use Stands Groups并在调整Stands Group Index后点击Assign。
4. 此时取消头发选择,如果之前选中过的头发变色了,就代表分组已经成功。
**Ornatrix导出文档**
https://ephere.com/plugins/autodesk/maya/ornatrix/docs/2/Exporting_Hair_to_Alembic.html
**Strand Groups文档**
https://ephere.com/plugins/autodesk/maya/ornatrix/docs/2/Strand_Groups.html
### 个人评价
因为本人电脑存在问题,打开一个测试场景帧数都是不稳定的,所以本人没有进行性能方面的测试。但是我感觉目前渲染效率还不错(帧数没有下降特别多)。目前存在问题,容易崩。再过几个版本迭代就可以直接拿来做项目了吧。
### 官方文档中所说的限制
1、帧数受Groom大小、分辨率与硬件影响。
2、目前不支持多屏显示与VR。