BlueRose
文章97
标签28
分类7
使用Ornatrix来制作Ue4头发流程学习笔记(二)——引导曲线头发

使用Ornatrix来制作Ue4头发流程学习笔记(二)——引导曲线头发

前言

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
  3. 导入带有Groom信息的abc缓存文件。
    image
  4. 设置Groom Asset属性。(主要是设置头发宽度)
  5. 设置Groom材质。(ShadingModel需要设置hair,Groom对象的材质有两种设置方式:1、从ContentBrowser中设置GroomAsset的属性 2、在场景中设置Groom对象的属性)
    image
  6. 将GroomAsset拖入场景中并且attach到场景中的骨骼模型上,并调整位置。(直接放入蓝图的骨骼模型引擎会崩溃)
    image
  7. 设置场景中的Groom物体属性,给它挂载Niagara Particle System,并且设置GroomAssetSystem。
    image
    image
  8. 设置Niagara物理参数。

最终结果:
image

关于头发对齐问题与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,这个就不要更改了。
image
从这个图中,可以看出一些靠近边缘的区域需要增加头发密度,不然就有可能出现图中这种25岁程序员的头发。

Ornatrix导出abc

image
导出abc的时候需要在Ornatrix的大纲视图选中最上面的节点,实际上就是选中Ornatrix的形状节点,你可以Maya的关系编辑器中通过查看上下游节点进行查看。

之后点击“导出当前选择”,选择OrnatrixAlembic文件类型。勾选
文件类型特定选项-Export Components-Unreal Engine Export选项,之后就可以导出了。

Groom ID

Ornatrix中可以通过StandGroup对头发进行分组编辑。Ue4会通过这些StandGroup作为Groom ID数据。你可以对Groom ID的头发使用不同的参数。这样可以实现一个GroomAsset(abc文件)存储头发、睫毛、眉毛多种类型毛发(不同的宽度与材质)。

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。