使用Houdini制作藤蔓攀爬

作者:炫云 2022-09-23

今天教大家用Houdini制作藤蔓攀爬效果,如下图

用到的是一个搜索最短路径的节点“Find Shortest Path”。该节点可以根据给定的起点和终点沿着模型现有的结构线进行搜索,找到最短的路径。

以一个立方体为例,用“remesh”节点对其进行表面重构。调节“Target Size”的值,得到如图所示的三角形网格线。该值越小,网格线越密。

以上作为输入的模型,用一个空节点“Null”标记,可命名为“MESH”。按快捷键【C】可设置节点的颜色。

创建“Find Shortest Path”节点,该节点需要输入Surface Geometry,即表面网格模型。

连接后在其属性中可见需要有“Start Points”和“End Points”的选集。显然,在此之前需要“group”相关节点进行选集的设置。

起点直接选择任一点的编号,如0号点。注意“Group Type”应为Points。“Group Name”为$OS的意思是,默认以节点名称作为组的名称。比如将节点名称改为“start”,那么在节点属性中可以看到名为“start”的点组。

终点可以选择所有的点,设置方式为在“Base Group”一栏输入*,表示全部的意思。“Group Type”同样为Points,然后将节点名称改为“end”。

“Start Points”和“End  Points”分别拾取“start”和“end”点选集,然后将“Output Paths”改为“From any start to each end”,从任一起点至每个终点。即可得到如下图所示的路径样条。

添加“smooth”使得样条平滑。

将原来的网格模型平滑并稍加缩放后,与生成的样条叠加显示可以更清楚。

现在得到的样条是由很多根独立的样条组成的,每根样条都是一个primitive,且起点都是0号点的位置。如果用“explode view”节点可以将它们炸开显示如图。

接下来给每根样条从起始端到末端添加渐变色,需要借助于能确认样条上点的百分比位置的属性。可以用“Attribute Create”节点创建一个名为“ratio”的属性,并将其“Value”设置为“@ptnum/(@numpt-1)”。“@ptnum”是点的编号,“@numpt”是点的总数,因为是从0号开始,所以要减去1。这样ratio的值就在0~1之间变化。

由于每根样条含有的点的数量是不同的,需要逐个进行计算。这里用到的是“For-Each Connected Piece”节点。关于“foreach”的节点有好几个,本质上都是一样的,根据参与循环的对象和控制条件的不同来设置不同的属性。

“For-Each Connected Piece”节点会根据对象的连接性进行拆分,每个primitive(这里为每根样条)会分配一个“class”属性。按照class0到classN进行循环。

针对每个primitive的循环中,创建名为“ratio”的点属性,“Value”值见上。在“Geometry Spreadsheet”窗口可以查看点属性中是否多出“ratio”的选项,其数值范围应为0.0~1.0。

然后添加“color”节点,着色方式“Color Type”选择“Ramp form Attribute”,用前面创建的ratio属性来设置红蓝渐变色,如下图所示——

调节颜色渐变范围,结果如下——

除了颜色渐变外,粗细渐变也可以用类似的方法得到。属性名为width,“Value”可设为“(1.2-@ptnum/(@numpt-1))*0.01”。这里不再细述。

如果要实现生长动画的效果,只需要连接“carve”节点,将“First U”的值设为0,增加“Second U”的值即可。

按住【Alt】键点击参数数值可以设置关键帧。例如在第1帧的位置设置“Second U”的值为0,在第240帧处设置其值为1。点击播放按钮就可以看到样条生长动画。

你也可以将起始点设为不止一个,得到多点同时生长的效果。