找回密码
 立即注册
查看: 1059|回复: 20

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

[复制链接]
发表于 2023-2-14 14:10 | 显示全部楼层 |阅读模式
前言

4.24出了头发渲染与模拟功能,这真是一件令人兴奋的事,所以我稍微花了点时间进行测试,在此分享一些经验。
使用步骤

使用步骤大致如下,具体的可以参考文档:

  • 首先在项目设置启用Support Compute Skincache,并禁用Tick Animation on Skeletal Mesh Init。
  • 启用Alembic Groom Importer与Groom插件,之后重启引擎。(此时大概会编译大概5000多的Shader)


3.导入带有Groom信息的abc缓存文件。


4.设置Groom Asset属性。(主要是设置头发宽度)
设置Groom材质。(ShadingModel需要设置hair,Groom对象的材质有两种设置方式:1、从ContentBrowser中设置GroomAsset的属性 2、在场景中设置Groom对象的属性)


6.将GroomAsset拖入场景中并且attach到场景中的骨骼模型上,并调整位置。(直接放入蓝图的骨骼模型引擎会崩溃)


7.设置场景中的Groom物体属性,给它挂载Niagara Particle System,并且设置GroomAssetSystem。




8.设置Niagara物理参数。
最终结果:



关于头发对齐问题与Bind Groom to Skeletal Mesh选项 我是复制了头皮模型,并以此为基础制作头发的。所以理论上头发是不需要对齐。但导入后头发还是需要手动位移(在dcc中对齐头发貌似是无效的,你需要计算head骨骼与头发的相对距离,之后在dcc或者ue4中手动对齐,我测试了设置导出轴向,貌似没有一个对的)
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,这个就不要更改了。


从这个图中,可以看出一些靠近边缘的区域需要增加头发密度,不然就有可能出现图中这种25岁程序员的头发。
Ornatrix导出abc



导出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节点进行指定的。指定步骤如下:

  • 在Edit Guides,点击Edit Stands按钮进行编辑Stands模式。
  • 选中需要添加组的头发。
  • 之后在StandsGroups选项卡中,勾选Use Stands Groups,并在调整Stands Group Index后点击Assign。
  • 此时取消头发选择,如果之前选中过的头发变色了,就代表分组已经成功。
Ornatrix导出文档:
Strand Groups文档:
个人评价

因为本人电脑存在问题,打开一个测试场景帧数都是不稳定的(不知道是显卡还是固态机械混用的关系),所以本人没有进行性能方面的测试。但是我感觉目前渲染效率还不错(帧数没有下降特别多)。目前存在问题,容易崩。再过几个版本迭代就可以直接拿来做项目了吧。
因为我目前还没学过Niagara,所以无法测试使用解算的缓存来驱动hair。如果可以,那影视方向的企业以后就可以使用这个头发系统来做片了。
官方文档中所说的限制


  • 帧数受Groom大小、分辨率与硬件影响。
  • 目前不支持多屏显示与VR。
分享以下我制作的ABC

因为花的时间不多,效果仅供参考。
https://pan.baidu.com/s/14daaue7On6xsnGkjVmLFVA pjct

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-2-14 14:14 | 显示全部楼层
12.25 20:58更新了测试用abc文件下载地址
发表于 2023-2-14 14:23 | 显示全部楼层
头发材质只能用默认的吗?重新指指不上。
发表于 2023-2-14 14:26 | 显示全部楼层
我可以指定的,没遇到问题,你是不是没有设置shared model
发表于 2023-2-14 14:26 | 显示全部楼层
能把maya头发缓存导入到ue吗
发表于 2023-2-14 14:26 | 显示全部楼层
对于引导曲线肯定是可以的,其他一些用maya应该会选择使用xgen来制作引导曲线。

至于头发缓存,新的hair系统应该还不支持,但是可以通过解算头发面片+播放的方式来实现(sequencer支持abc导入缓存并播放)。一些企业也已经使用这个技术来制作短片,比如灼华互娱。
发表于 2023-2-14 14:32 | 显示全部楼层
那要是毛发多套同时导入利用骨骼驱动毛发动画,他只识别一套毛发,另一套无效,还有就是你这个xgen毛发可以用吗?
发表于 2023-2-14 14:41 | 显示全部楼层
我上周也试了下,结论跟你差不多。不过我有个问题就是,这个头发目前不支持碰撞吗?看起来无论任何形式的碰撞都不会有反应,并且也没什么相关的选项。
发表于 2023-2-14 14:48 | 显示全部楼层
物理部分使用Niagara来实现,所以就需要看Niagara粒子是否支持与 角色的物理资源(胶囊体)碰撞。不过因为本人目前还没学习niagara所以目前无法回答你的问题。
发表于 2023-2-14 14:50 | 显示全部楼层
目前骨骼是不能控制头发的,毕竟你无法给niagara进行蒙皮操作。
分组是需要对引导曲线赋予id。

关于xgen,我找了一下油管与骨骼也没有找到导出引导曲线的方法。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-22 10:15 , Processed in 0.170433 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表