在Houdini中创建一个具有物理效果和贴图的布料,导入到Unity中,实现一个效果良好的、可以与模型互动、有贴图的静态布料模型。

参考视频:Houdini+Unity 2021制作布料全流程!_哔哩哔哩_bilibili

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 Plug-In | SideFX

将这个包拖到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将刚才的设置应用一下。

设置良好的情况下,模拟出来的效果非常漂亮: