0°

几种在houdini中随机缩放大小的方式 Houdini入门小技巧

转载翻译自:https://houdinitricks.com/different-ways-to-randomize-scale-in-houdini/

所以当我第一次开始学习Houdini时,我会尝试重新创建我经常在Cinema 4D中做的一些简单场景。 其中之一就是物体的大小随机化。 听上去够简单吧。 然后当我开始创建场景,我突然发现不知从何开始了。WTF! Houdini随机化肯定没那么难!

呃,事实是这其实非常简单。 我只是不知道一个称为@pscale的重要属性。 我敢打赌,如果你刚刚开始,你也成为了它的受害者。 所以这个小技巧适用于所有初学者。 我将向您展示几种不同的方式来随机化Houdini的模型。 请记住,这只是一个起点。 你需要自己添加更多来完善这件事。

1、场景设置

属性是Houdini许多事情的秘诀。 你需要了解它们是因为Houdini中的大部分东西都围绕着属性来的。 属性的使用是一个简单的概念,但是对于初学者,在属性框里输入数值是件很困难的事。 特别是当你不知道要输入什么关键字时。 我们大多数人习惯于移动滑块或勾选复选框。 首先是场景设置,如下图所示:

1/创建一个Grid SOP,一个Box SOP和一个Copy to Points SOP。
2/将Box连接到Copy to Points SOP的第一个输入。
3/将网格连接到Copy to Points SOP的第二个输入。

@PSCALE ATTRIBUTE

现在你应该看到一堆复制到Grid上每个点的Box。等同于Cinema 4D cloner。我们接下来要做的是随机缩放每个Box。这需要@pscale属性。该属性是几何体的统一点标度。

所以你可能想知道@pscale这个属性放到哪里去?在Box里面还是Grid里面还是放在Copy to Points后面?谁承担这个责任?那么,你想要的是改变每个盒子的规模。

由于Box被复制到Grid的点上,每个Box将读取Grid上每个点上可用的属性。如果@pscale属性可用,则这些Box具有该点的规模值。

所以如果你想改变每个Box的尺寸,你必须改变Grid上的点的尺寸。如果随机化点刻度,则当每个Box被复制到Grid上的每个点时,每个Box将具有不同的刻度值。该Box将读取@ pscale属性以便自行缩放。我想我自己有点困惑。还是实践出真知。

使用POINT EXPRESSION SOP随机@PSCALE

创建随机@pscale的第一种方法是使用Point Expression SOP。 按Tab键并输入 point。 这是一个戴着时髦红色牛仔帽的节点。 将它插入Grid后,将属性参数更改为Scale(pscale),并在VEXpression参数下拉列表中选择Constant Value。 现在,您可以使用滑块向上和向下缩放您的Box。

如果你中鼠标点击Copy to Points SOP,你现在应该有一个@pscale属性。 打开Spreadsheet查看具有相应值的属性。 但是,我们需要随机化每个值,因为现在所有的点都是相同值。

回到VEXpression下拉菜单,你会看到已经为你设置的Random值的一些预设。 选择它们中的任何一个,你应该看到随机缩放的Box了。 参数字段预填充了一个表达式,您可以将它与您心中的值进行调和。 另外,请检查您的Spreadsheet并查看点数值是如何改变的。 养成使用Spreadsheet的习惯!

Randomizing @pscale with a Point Expression

Random @pscale attribute

使用ATTRIBUTE CREATE SOP随机@PSCALE

创建@pscale属性并对其进行随机化的另一种方法是使用Attribute Create SOP。这个需要打一些字,但不需要写太多。禁用或删除Point Expression sop,并在Grid节点下创建Attribute Create SOP。你要做的第一件事是将name参数从attribute1更改为pscale。只要pscale。不要包含@符号。

一旦你这样做,你的Box就会消失。检查您的Spreadsheet,您应该看到所有点的@pscale属性都变为0.0。其他的默认值都没问题,所以你需要做的唯一改变就是最后一个参数的第一个字段,即Value。这就是您刚刚创建的属性设置值,即@pscale。默认值是0,所以这就是为什么这些Box就会消失。在第一个字段框中输入1。请记住,这是一维浮点值(统一标度),因此您只需要担心第一个值。

这很棒,但我们所有的盒子都有1.o的值。为了随机化值,我们需要在参数字段中使用一个类似于Point Expression SOP自动为我们做的表达式。

为此,我们要用到rand(值)函数。这个方便的函数接受一个种子值并返回一个从0到1的伪随机数。一种技术和你经常用到的技术是将@ptnum属性作为种子值传递。这是几何图形的当前点编号。这很有效,所以我们会使用它且可以随意使用它。只需输入rand(@ptnum),你现在应该有随机缩放的Box。

                                                                            Randomizing @pscale with an Attribute Create

使用POINT VOP随机@PSCALE

创建随机@pscale的第三种方法是使用Point VOP。 VOP是编写手动VEX的可视版本。这个给你更多的灵活性,因为你可以通过对你的值进行各种数学运算来真正地定制你的输出。毕竟,你是编程,但以一种视觉的方式。

在Grid节点之后添加一个Point VOP节点,然后进入内部。将此节点视为将影响几何图形上的点的所有操作的容器。一旦进入Point VOP,您首先需要添加一个Bind Export节点,因为这是您创建@pscale属性的方式。确保你创建了一个Bind Export,而不是一个常规的Bind。在名称参数字段中输入pscale(不带@符号)。其余的默认参数。请注意,您可以根据正在创建的数据类型更改属性的数据类型。

现在我们要随机化。按tab搜索random。有好几个节点会产生随机数,但我们还是使用简单随机节点。将随机节点的输出插入到Bind Export的输入中。从Random获取位置(pos)输入并将其插入到geometryvopglobal1节点的ptnum中。 ptnum属性是几何点编号。如果跳回copytopoints的Spreadsheet ,则应该看到附加到copytopoints的@ pscale属性。我们做了和输入rand(@ptnum)一样的东西。

使用ATTRIBUTE WRANGLE随机@PSCALE

我们最后一个,最简单,最快和最灵活的方法是使用Attribute Wrangle。所有这些方法基本上都以相同的方式进行,只是方式稍有不同。再次,这只是一个起点。每个人都有自己的做事方式,正如Paul Ambrosiussen用他的几句话说的:

只要您达到预期的最终结果,在Houdini中做任何事都没有错误一说。

因此,在grid 后面和Copy to Points SOP之前添加一个Attribute Wrangle。输入wrangle 快速到达它。确保Run Over参数在Attribute Wrangle中设置为Points。我们将使用我们在Attribute Create SOP中使用的相同表达式。就语法而言,您需要遵循一些更严格的规则。在Wrangle中输入以下代码:

@pscale = rand(@ptnum);
完成!我们首先输入属性名称。注意这里我们需要使用@符号。接下来,我们使用我们在Attribute Create方法中使用的相同函数以及相同的种子值。确保你用分号结束该行。毫无疑问,您可以通过各种操作获得真正的想法,甚至创建参数滑块来控制您的值。不是说你不能用其他方法做到这一点,但我个人认为Wrangles是最干净的方法。

总结

使用@pscale属性随机化Houdini中的比例的四种方法。这很容易。而且,这绝不是唯一的方法。还有其他方法,一个例子是旧的Point SOP。 SideFX建议您改用Point Expresion SOP。

顺便说一句,如果你知道其他方法,我很乐意听到他们的消息。通知我!

我忘记了所有最简单的方法之一。感谢Nnois指出了我。

使用ATTRIBUTE RANDOMIZE随机@PSCALE

如果您不了解@pscale属性,则很容易错过,因为您不知道要查找哪个属性。但是,一旦您知道,SOP将为您完成所有工作,而无需键入任何代码甚至更改设置。只需将它指向属性即可完成。

如果你按tab搜索randomize,你会得到Attribute Randomized SOP。默认情况下它使用点颜色属性@Cd。只需将“属性名称”字段中的Cd替换为pscale,然后签出这些随机立方体即可。关于这个节点的好处是你有能力改变随机分布函数。不喜欢均匀分布?试用指数或LogNormal。它还使您能够设置混合和最大值。没有你必须写一行代码。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论