Linus Tegelbratt 在 Houdini 中创建栅栏生成器
Linus Tegelbratt 分享了可定制栅栏生成器背后的工作流程,展示了项目中使用的节点,并解释了门 HDA 的功能。

介绍
你好呀!我叫 Linus Tegelbratt,来自瑞典。我的职业生涯始于 MachineGames 的实习生,作为一名环境艺术家在 Wolfenstein Youngblood 工作。然后我作为合约材质艺术家在 Marmoset 工作,主要专注于为 Toolbag 4 库创建基础材质。

Houdini
几年来我每天都使用 Substance 3D Designer,我喜欢它的程序方面。此外,我真的很喜欢制作有用的节点来加快我的工作流程并使事情变得更容易。
感觉下一个自然的步骤就是开始学习 Houdini 并将类似的程序工作流带到更大规模。在找出问题的特定解决方案时,我喜欢解决问题的过程。
要想掌握Houdini的工具和节点,需要看很多教程,熟悉程序和所有节点,然后开始制作自己的项目。一开始从小项目开始,然后随着您对程序的熟悉程度逐渐尝试更大、更复杂的项目。
就个人而言,我觉得 Houdini 的 VEX 部分是最令人生畏的方面,所以一旦我觉得我已经掌握了基础知识,我就会尝试专注于这部分。我强烈建议熟悉 Wrangle 节点,因为它们使用起来非常灵活,可能是我项目中最常用的节点之一。
我喜欢做的一件事是有时尝试使用 VEX 重新创建标准节点的功能。例如,如果你想测量一条有 2 个点的曲线的距离,你可以使用测量节点或在 VEX 中检查点 0 和 1 之间的距离。

围栏生成
我的主要目标是创建一个易于使用的工具,我还想看看我是否可以拥有可以在特定地块上生成的功能门。我希望它在外观方面是可定制的。所以我只希望它使用您输入工具的几何图形,而不生成任何自定义几何图形。这样,我认为用户可以更轻松地制作不同类型的栅栏或墙壁。
该工具使用曲线作为形状的输入,然后是要使用的 3D 模型的输入,如果用户想要门,则使用蓝图输入。
对于我的主曲线,我在输入曲线上使用了一个 Resample 节点,以便轻松控制线段的长度。此外,相同的曲线用于生成栅栏的主杆。

对于将用于在每个段中生成木板的次要曲线,我使用主曲线和一个原始的 wrangle 来设置每个曲线段中向外的点法线。然后我根据主杆宽度移动这些点。


然后我再次进行重新采样以控制将在曲线上生成的木板数量。

然后我使用 Carve 节点将曲线分割成单独的部分,以便我可以测量每个部分。对于测量,我使用原始 wrangle 来找到每个原始上每个点之间的距离,测量的长度用于设置木板的宽度比例,这样它们就不会相互交叉。
现在我需要在每条线的中间创建点,这些点将用作生成点。为此,我使用了一个 Subdivide 节点,然后是一个 Attribute Promote 节点来将长度提升到点类而不是基元类。然后我使用一个点 wrangle 只保留由 Subdivide 节点添加的点,那些点在中间。本质上,我是在检查我的细分曲线是否在非细分曲线的那些点附近有任何点,然后删除它们。


我在使用现有模型时遇到的一个问题是它们的方向可能都不同,所以我不得不在开始时手动旋转每个对象。所以我做了一个小设置,让所有导入的模型根据长度和宽度自动定向,然后与地板对齐。

然后我所有导入的几何体都被缩放以适应 X、Y 和 Z 的 1 个单位。这样几何体的大小由每个点的比例值决定,这是通过使用点整理节点设置的。



限制与定制
一方面是几何体可能会拉伸很多,如果使用不适合您正在制作的栅栏的几何体,纹理看起来不会那么好。与如果几何体也在 Houdini 中生成相比,那么 UV 可以缩放到您设置的任何大小。所以如果你想制作一个高度为 2 米的栅栏,那么如果你想避免纹理中不必要的拉伸,你可能需要让输入几何体具有相似的尺寸。
门 HDA
门 HDA 更多是概念验证,而不是用于创建门的微调 HDA。它本质上是栅栏 HDA 的副本,只是稍作调整以创建一个门。理想情况下,您会想要充实该工具并使其更加可定制。现在它是如何工作的,你用你想要的网格创建一个门,将它烘焙成静态网格,然后将该网格放入蓝图,这样你就拥有了当玩家与之交互时门会打开和关闭的功能。您在 Fence 工具中分配正确的蓝图,然后它会生成并缩放它以使其适合。

结尾
主要挑战之一可能是让向外弯曲和随机旋转按照我的意愿正确工作。在使用 orient 属性时,一开始需要反复试验。与我过去使用过的许多其他 3D 程序相比,使用 Houdini 时,使用矢量和涉及的数学也有点习惯。为工具制作和组织系统有时会让人觉得很复杂,因此使用注释来描述节点和功能始终是一个好习惯,保持图表井井有条,以便您自己或其他人轻松理解它是如何制作的。

