在Houdini中创建一个具有物理效果和贴图的布料,导入到Unity中,实现一个效果良好的、可以与模型互动、有贴图的静态布料模型。
1、创建节点
首先创建一个obj文件:
随后右键这个节点,创建一个Digital Assret。
进入Type Properties界面,可以设置属性。
在打开的面板中找到Parameters选项卡,可以在这里设置hda文件向外界暴露的属性。
我们可以在unity的属性界面更改暴露出来的属性,方便操作。
双击进入obj文件中。
按下右键创建一个网格grid,创建一个uvproject,以及一个remesh
grid是基础的网格面,uvproject能为我们设置uv,remesh能够改变网格形状,使其不是标准的长方体。
可以调节其中的属性来优化效果。例如remesh组件中的target size可以调整网格大小:
继续创建:
用vellumcloth以及vellumsolver来模拟布料,创建一个getcloosion来模拟碰撞
下面接入timeshift。这能够使模型停止在某一帧上。在unity中我们通过调整可以让布料停止在空中,当然也可以完全落下。
添加vellumpostprocess,随后添加polyreduce以减少不需要的面,提升性能。
使用switch节点连接,我们后续可以在unity中设置是否使用polyreduce
最后添加一个unity material以及输出output。
2、调整属性
调整属各个节点的属性,满足自己的要求。
例如,可以让网格面更大、更小,调整位置、修改polyreduce的百分比等等
在unity material中,填写如下代码以设置材质:
3、设置暴露属性
打开前面提到的菜单,我们使用alt+鼠标中键点击物体的某个属性,就能够将属性添加到暴露出来的属性中。
这样后面我们就能在unity中编辑这些属性。
首先Alt+鼠标中键点击暴露grid节点的size属性,让我们能够在untiy中编辑网格面的大小。
Alt+鼠标中键点击的时候请保持属性界面一直开着,如上图所示。
暴露remesh节点的target size属性。
暴露getcollsion节点的object1属性。暴露后会呈现绿色。
暴露timeshift的frame属性,方便在unity中设置。
暴露polyreduce的percent to keep属性。
暴露switch节点的select input属性。
4、找到hda文件
属性界面中,最上面会显示hda文件的所在位置。在这里就能找到hda文件
5、导入unity
导入hda文件前,需要找到Houdini的Unity包,插件网址:
将这个包拖到unity中安装即可。
安装完包之后,将hda文件拖到unity的文件中导入。
6、在 Unity 中设置
将hda文件拖动进场景中。
通过修改右侧的属性调整最终效果。
首先创建一个material,然后按下右键选择copy path
将得到的路径粘贴到布的material属性中。这样布就有了材质。
材质贴图可以到https://ambientcg.com下载
在collision input中点击add slot添加碰撞,把需要参与碰撞的模型拖到Input中:
这样,布料就有了碰撞。
调小target size,调成0.2以提高模拟精度。
调整time shift到合适的值,如果时间太短的话布料可能会呈平面不动。
调整其他属性,例如布的大小。
点击Rebuild将刚才的设置应用一下。
设置良好的情况下,模拟出来的效果非常漂亮: