在Houdini种植植物

null

胡迪尼的优点始终是程序性。通过一些节点和一小组表达式,您可以创建复杂且自然的结果 - 模型和场景将永远以传统方式创建。

长期以来,Houdini一直是视觉效果行业许多大型制作的支柱。然而,由于其程序性方法,它经常声称太难学。

虽然几年前这可能是真的,但事情已经发生了变化。随着更多的访问许可方案和Houdini界面的彻底改造,它继续向小型工作室,艺术家和爱好者开放。来自其他软件包,但它仍然是一种非常不同的思维方式。

在本教程中,我们将概述该程序。我们将从叶子和草的基本建模技术开始。我们将介绍采样VDB卷以分配工厂增长,并最终使用VEX代码和争用节点来动态生成几何体。

我们将看看每个人对Houdini的看法是否属实:一旦你走向程序,你将永远不会回头!

下载文件本教程。

01.有条不紊

Make life easier for your future self by giving your shapes meaningful names

通过赋予形状有意义的名称,让您的未来生活更轻松

从你想要在树叶中覆盖的废墟模型开始。确保以有意义的方式命名形状。这允许稍后为不同目的容易地对几何体进行分组。将它分成墙壁,木板,砖块,窗户和玻璃。 Houdini Alembic导入将在导入时设置路径属性。然后,您可以轻松使用拆分或爆炸节点来选择所需的部分。

02.创建叶子

Make your leaves single-sided with a low poly count

使用低多边形数量使叶子单面

随着废墟的到位,是时候开始创建单独的叶子以便稍后用于实例化。如果您想获得更真实的结果,请始终使用自然界中的参考图像。我们需要叶片是单面的并且聚合计数相当低。首先制作一条类似外叶形状的曲线。使用remesh节点添加一些曲面细分。通过柔和的变换,稍微抬起杆的中心。还要添加具有不同绿色阴影的颜色属性。

03.草股

Put as much variety into your grass strands as you can

尽可能多地将各种各样的品种放入草丛中

我们还需要单独的草丛来覆盖地板。同样,具有不同宽度的简单单侧多边形股线就足够了。一般来说,更多变化总是更好。但即使只有五种不同的形状,你也会获得非常逼真的效果。由于我们的设置是程序性的,因此可以在以后轻松添加。重要的是要确保所有网格都在原点的中心位置,并且枢轴位于其脚部。这样我们就可以直接将它们用作实例。

04.自然分配

Find a rule that will make your grass grow in a natural-looking way

找到一条规则,让您的草以自然的方式生长

有很多方法可以决定草的生长地点。找到类似于自然分布的规则。我们将在没有被建筑物或瓦砾覆盖的地面上使草生长。墙壁和岩石的增长需要更密集和更长。将地面与几何体隔离开来,并使用重新网格节点获得相当高的细分水平。

05. AttributeTransfer

Use white points for the walls and grey for the ground

墙壁使用白点,地面使用灰色

在墙壁上添加白点颜色,在地面上添加灰色。使用AttributeTransfer将墙壁颜色映射到地面上。调整节点上的混合半径以适合墙壁的底部。用VDBfromPolygons将墙壁变成VDB。在AttributeWrangle中,使用volumesample函数获取每个点的VDB值。删除具有负值的点。

06.准备属性

With some random settings you'll quickly have some great-looking grass

通过一些随机设置,您将很快拥有一些漂亮的草

在使用复制印记之前,需要准备一些属性。在VEX中,使用随机数来驱动随机数的斜坡。这是控制比例分布的可视方式。以同样的方式,将颜色设置为随机绿色。要使股线指向略微不同的方向,请通过在X和Z方向上添加随机偏移来更改法线。瞧,你长草了!

07.攀缘植物

You'll need to write a solver for climbing plants

你需要写一个攀爬植物的解算器

对于攀援植物,我们需要在VEX中编写我们自己的求解器来模拟生长机制。这可能听起来令人生畏,但我们一路走来。不要忘记在VEX上使用Houdini Reference。为了找到根点,我们采用了与草地相同的机制。从靠近墙壁的地面上的几个点开始。

08.植物力量

These are the three forces that govern the plants' growth

这是控制植物生长的三种力量

我们有三种力量在起作用。第一个我们打电话给UP,指着远离地面对抗引力。第二个是名为WANDER的矢量,沿着墙壁随机指向。第三种力量称为WALL,指向最近的障碍物。这模仿了植物攀爬的愿望。我们将在每次增长迭代中使用所有三种力。

09.种苗

Grow the seedling in short segments

在短片段种植幼苗

现在是时候让我们用点角力潜入VEX了。在for循环中,我们通过添加到已经用起始位置初始化的变量pos来在短片段中生长幼苗。现在,只沿UP向量增长。

最好使用ch()和chv()函数来向接口公开参数。然后,您可以通过交互式更改这些值来轻松地试验算法的结果。

10.自然效果

The WANDER force gives your growth a more natural appearance

WANDER力量让您的成长更自然

为了更自然的外观,添加WANDER力量。在每个步骤基于噪声函数计算随机方向。该随机向量增加了种子移动的方向。为了更好地平衡,还要在界面上引入两个加权因子,向上或向下缩放力。结果是葡萄藤的生长变化很大,但它们现在可以穿透它们遇到的障碍物。为了避免这种情况,第三种类型的力量派上用场,即WALL方向。

11.最后的力量

Finally, add the WALL force

最后,添加WALL力

通过对废墟的值和梯度VDB进行采样,将最后一个力添加到VEX循环。这为您提供了点与墙之间的距离以及墙的法线方向。计算指向墙壁的力并将其添加到生长方向。在新位置再次对VDB进行采样,以检查该点是否在墙内。如果是这样,只需沿正常方向推出即可。

12.软化变化

It's easy to fix things if your vines start looking unnatural

如果您的葡萄藤开始看起来不自然,那么很容易解决问题

葡萄藤看起来仍然不自然。这是因为他们可以在每一步快速改变方向。在前一步和当前步骤的方向之间进行软混合以使其平滑。如果位置离墙太远,你也想停止增长。查看从VDB样本获得的墙距是否超过某个阈值。如果确实如此,那么就跳出for循环。

13.分支行为

Getting your vines to branch is fairly straightforward

让你的葡萄藤分支是相当简单的

攀爬植物的另一个方面我们仍然需要添加 - 分支。但这很容易实现。用一定概率标记每个生长步骤作为分支点。然后在每个标记点上再次运行增长算法,使用点本身作为根。

最好在第二次通过时调整增长参数,以便更加徘徊,更少向上,以填满墙上的区域。

14.完成分支

It's time to turn your points into real-looking branches

现在是时候将你的观点转变为真实的分支

我们现在已经创建了类似于分支生长的点序列。利用点上的id属性并创建一个Add节点,将它们转换为单独的曲线。

设置为行和列的UV纹理将沿曲线长度提供UV,然后沿着它们各自的长度渐变到名为pscale的属性。 Polywire节点将曲线转换为管,您可以使用$ PSCALE作为厚度。之后添加一个山和一个方面,以完成分支。

15.实例叶子

For the leaves, follow a similar technique to the one you used for the grass

对于树叶,遵循与用于草的方法类似的技术

实例化的叶子有点像早期的草股。我们沿着生长算法中出现的曲线定义分布属性。在每个分支的开始处为零,然后在尖端处为1。使用散点图根据该属性沿曲线放置点。改变pscale看起来更好。使用复制标记将准备好的树叶放到这些点上。

这篇文章最初出现在3D世界问题225;在这里买

相关文章:



翻译字数超限