This commit is contained in:
2023-06-29 11:55:02 +08:00
commit 36e95249b1
1236 changed files with 464197 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
## 前言
本文仅为使用Ornatrix制作角色头发的流程笔记只为记录制作流程。但因为本人非专职美术没有分析过面片头发也没有制作头发经验所以本文仅供参考。
## Ornatrix的优点
插件目前支持max、maya、c4d。拥有大部分xGen的功能我无法保证所有功能都有除了制作头发之外它还可以制作羽毛与编织物。以下是官方介绍视频
https://www.bilibili.com/video/av80061009
个人觉得优点有下:
### 节点式的流程
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/OrnatrixOutline.png)
节点式流程就代表着流程是非线性的,这意味着你可以任意拖动节点位移或者可以随时对节点树中的节点进行修改,并预览效果。同时你可以把做成完成的头发保存为预设,下次再遇到相似的发型就可以直接使用了,以此加快制作进程。
### 各种使用节点
梳理节点:
你可以通过画几个箭头就完成对发型的大致梳理。
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/SurfaceOnCombTool.png)
旋转节点这个节点对于游戏面片头发的制作相当不错。另外Ornatrix可以设置生成面片的段数、UV等其他属性这也是我放弃xGen转而使用Ornatrix的原因。
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/CardGenerate1.png)
使用旋转节点前
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/CardGenerate2.png)
使用旋转节点后
另外还有Frizz、Curl等节点出个大形的速度非常快。
## EPIC模型分析
这里本人使用虚幻争霸中的一个角色作为参考因为本人能力有限所以使用官方提供的头发材质进行渲染。这样只需要制作出符合高度贴图、id贴图即可。这里我为了方便分析贴图所以给不同的头发进行填色以此来判断头发组成。因为本人不知道如何在Maya中解决透明排序的问题所以结果就凑合地看吧
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/HairColorVisual.png)
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/HairColor.png)
- 红色为最底层的头发,形状和头皮一样为了防止穿帮。
- 蓝色为主要头发,头发相对于红色部分会稍微稀疏一些。
- 剩下的黄色、绿色、亮红色为点缀部分。
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Character/HairColorVisualLayer.png)
## 制作流程
### 设计发型与分块
尽管Ornaterix可以通过各种分组手段对不同类型头发进行分组使得可以将所有头发效果都做到一个Ornaterix节点中。但是我还是选择了使用多个Ornaterix物体来制作不同类型的头发。我这么做的原因有以下几点
1. 方便分组,可以随时隐藏头发以便于观察其他头发。
2. 如果其中一个崩溃报错了,不至于所有的工作都白费了。
### 制作头发
以下我分享以下我所知道的制作思路首先我本人采用了导入外部引导曲线的方式来制作头发因为之前学习了一段时间的xGen所以可以直接将之前制作的引导曲线导入Ornatrix中。
- 对于一些短发可以直接生成通过生成几根引导曲线,生成头发。之后再用这些头发生成更多的引导曲线来生成头发模型。
- 对于一些有着具体形状或是沿着路径生成的头发可以使用Ornatrix的发片add hair from mesh strips功能快速生成适用于睫毛、打底层头发等。
上述这些曲线以及面片生成都是带了历时的,你可以随时通过修改面片与曲线来调整头发生成结果。
模型替代:
https://www.bilibili.com/video/av56489034
这个视频中可以看出,作者使用了三棱锥模型,而非普通面片,这个可以使用(add Mesh from stands)中的proxy mesh stands来实现。从视频中可以看得出使用这个方法增强了头发的立体感。
长发不适合用随机生成的方法来制作,且需要精准控制遮盖、效果与面数,所以对于长发我推荐使用官方的方法来做:
https://www.bilibili.com/video/av79618784
### 导出模型
直接导出貌似是无效的可能是我Maya的问题我搜索了油管与文档都没有发现导出方法。所以以下的方法我不能保证一定是正确的
在加入Mesh Frome Stand节点后将Maya设置为多边形选择模式选中需要导出的面之后选择复制面命令。之后多边形就会出现在大纲视图的Or节点下面了。
### 烘焙id贴图与高度贴图
我因为对Vray、Arnold烘焙流程不熟且不会烘焙分组的id贴图所以还是选择简单易懂的xNormal流程
https://www.bilibili.com/video/av56489034
使用这个流程在烘焙id贴图前还需要把毛发模型进行分组并导出。作者提供的插件是根据百分比随机从当前物体中选择物体所以如果你要分成5份就需要依次使用20%、25%、33%、50%分离物体并导出。因此对于这个流程,插件还有很大的改进空间。
如果你对Arnold或者Vray以及maya节点系统熟悉的话可以选择官方流程这个流程的优点是制作完马上就可以预览效果
https://www.bilibili.com/video/av79619146
### 是先制作模型还是先制作贴图?
个人还是倾向于先制作贴图,因为制作贴图本身不会受制于模型,而且在之后的模型制作中就可以随时预览制作效果了。如果先制作模型,很可能会出现因为效果没有达到预期,而造成返工修改模型的情况。
## 官方网站与国内购买网站
官方网站:
http://www.ephere.com/
官方油管频道:
https://www.youtube.com/channel/UCzzR4qt--4OcXgvyUTsgW6w
文档地址:
https://ephere.com/plugins/autodesk/maya/ornatrix/docs/2/
官方频道上的教程挺多的再加上这个插件使用不难很多基础功能光看英文就能知道如何使用再看看文档与视频就差不多。但如果你想快速入门我推荐aboutcg的教程。
国内有aboutcg代理了以下是购买网址
https://tool.aboutcg.com/tool/ornatrix-maya/
## 学习过的资料
https://new.80.lv/articles/tips-tricks-on-hair-for-games/
视频的话我已上传到B站
https://www.bilibili.com/video/av56489034
Ornatrix官方视频
https://www.bilibili.com/video/av79618784
https://www.bilibili.com/video/av79619146
https://www.bilibili.com/video/av79618545
## 使用插件
我使用了《Tips & Tricks on Hair for Games》作者提供的Maya插件。
```
https://pan.baidu.com/s/1DDAj9bdMTMzvpU9ZnFevrw w6ar
```

View File

@@ -0,0 +1,67 @@
## 前言
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。