Skip to main content

最近在做一个地形作品,在研究houdini工具架自带的地形预设时,被其中一个操作困住了很久不理解什么意义。于是就研究了下。

点击工具架中Terrian:Hills预设时,会有一行使用slump节点的操作。

preset是工具架节点流,custom是自定义节点流

这个预设中使用slump的方式很奇怪,并不是直接像左边节点流那样直接使用slump节点,而是绕了一圈。

slump节点的作用是在高度场中创建泥石流等物料下滑堆积在山底产生的效果,从视觉上来说,它可以填平山谷的沟壑。这种效果对于制作雪山效果最方便了。

slump节点需要一个mask层,但是它又不像其他节点提供一个mask输入端,而是只有一个输入端。所以在它上面需要额外连接一个mask层。

我们先看看官方预设是怎么使用slump节点的。

首先使用的是HeightField Noise来产生mask层,但是基本上就是一个纯的全部都被覆盖的mask。

然后连入slump节点,slump节点本身也会覆盖重新产生一个新的mask层,也是自己产生效果的地方。

紧接着又连接了一个Isolate Layer节点。它的作用其实是用来查看其他的高度场层的。但是现在被heightfield visualize取代。使用方式是连入一个高度场,选择要查看的层,这里查看的mask层。然后勾选Overwrite Height,高度场就被压平了。

高度场被压平

但是其实并不是完全压平,还是有一些起伏。这里的高低其实就代表了slump节点产生的mask层的强弱。试想下slump的作用是填平沟壑,那么想填平,深的地方要填充的高度就要比浅的地方填充的高度要更高,而这个高低就是用mask的强弱来表示的。而且也能对比发现压平后,凸起更高的地方,恰好是slump之前山体最低的沟壑区域。

为了验证这个想法,可以直接在slimp节点下连接convertheightfield,直接转为polygon,那么之前的mask层就变为了属性,可以直接查看属性的数值。

可以看到沟壑的地方数值是更大的

换句话说,Isolate Layer中的高度,表示了想要填平沟壑所需要的高度。

接着又连接一个heightfield noise节点添加细节这个很简单。

最后使用HeightField Layer节点将两个高度场合并在一起,模式是add模式。就实现了将slump节点的效果添加在山体上的效果了。之所以使用add模式,是因为正好之前的高度场加上代表添加沟壑高度的Isolate Layer高度场,正好填平了。

可以想象下将Isolate Layer高度场反转过来然后插入原始高度场,是正好插入沟壑的槽中的。

那么为什么官方的预设要选择这么绕的节点搭建方式呢?我觉得主要是两点原因,一个是这样做可以将添加的slump节点分支到另一个节点流上,使节点网络阅读起来更容易清晰。

另一个原因是slump节点还会生成flow和flowdir等多个层,这些层一般来说是用不到的,而高度场好像也没有一个方便的办法直接删除不需要的层,这就会造成资源浪费。

我又回头看了下,其实是可以被删除掉的。取消勾选slump节点上第二个面板Calculate Flow Fields就好。

而官方预设的方式中,slump产生的多余层,则会在Isolate Layer节点中被过滤掉,就没有了这个问题。

产生的多余层

虽然理解了这个节点流的工作原理也没有太大用处,但是它就摆在那里,不弄明白心里总过不去哈哈。

保持好奇探索的心态。

(完)

Leave a Reply