唯一ID,物体ID,物体名

每个物体和数据项都有一个通用唯一ID。这个128位数字在所有机器上的所有模拟中总是唯一的。你可以使用此值来判断在每个时间步共享和/或重新创建数据包的时间。唯一ID 在 Geometry Spreadsheet 中显示为物体和数据项上的属性。

houdini GEOMETRY houdini geometry spreadsheet_houdini GEOMETRY


每个物体都有一个物体ID。这是一个简单的整数,用于唯一标识此模拟中的物体。与通用唯一ID不同,它在不同的模拟网络、计算机、模拟等中不是唯一的。

每个物体还有一个物体名。物体名本质上是为了更方便——它比简单的物体ID编号更容易记住和识别。即使在同一个模拟中,物体名也不是唯一的:多个物体可以具有相同的名称(这在某些情况下甚至有用途)。

在物体创建节点(如 RBD物体空物体)中,Object name参数控制创建的物体的名字。如果还使用 Number of objects 参数一次创建多个对象,则可以使用 $OBJ 局部变量将创建的物体编号附加到名称。例如,如果Object namebrick$OBJ 并且Number of objects是3,Houdini 将创建名为brick0brick1brick2 的物体。

使用运动模糊进行渲染会改变结果

Rendering with motion blur will cause the simulation to be evaluated at shutter open (frame number - shutter time) and shutter close,例如 1.7 帧和 2 帧。这种强制的子步会改变模拟的结果。

为了修复它,可以缓存模拟到硬盘并使用Timeblend geometry node

数据名

每个物体和数据段都有一个数据名。解算器按照名字查找物体上的数据。 例如,刚体解算器会在一个物体上寻找名为Forces的文件夹,并使用在其内部找到的任何作用力数据来更改物体的位置。

houdini GEOMETRY houdini geometry spreadsheet_数据_02


由于节点是使用名字来附加数据的,所以如果你尝试使用多个相同类型的节点,例如两个风扇作用力,如果它们都将数据附加为Forces/Fan,则一个会覆盖另一个的数据。 所以Houdini有 Unique Data Name 选项,可以在数据名中添加一些文字,使其独一无二。

houdini GEOMETRY houdini geometry spreadsheet_houdini_03


例如,在下面这个节点网络中:

houdini GEOMETRY houdini geometry spreadsheet_选项卡_04


只要两个风扇作用力节点上有Unique Data Name,物体就会有两个单独的作用力数据附加到上面:Forces/Fan_fan1Forces/Fan_fan2。 由于解算器使用它在Forces文件夹下找到的任何作用力,因此这么做可以正常工作。

如果你确实希望之后的节点覆盖具有相同名称的之前节点的数据,则可以关闭Unique Data Name。 如果你为较早和较晚节点的Activation设置动画,这可能很有用,例如在两个不同的风扇作用力节点之间切换。 节点将从左到右,从上到下进行计算。你还可以使用“设置”弹出菜单(见下文)更好地控制一个节点如何使用相同的数据名称覆盖另一个节点。

数据共享

  • 对于每一段数据,Houdini可以为每个物体附加一个新的拷贝,也可以在物体之间共享相同的数据段。
  • 在每一个时间步,Houdini都会为模拟中的每个物体创建一个新拷贝。
  • 对于每一段数据,Houdini可以为每个时间步都创建新的拷贝,也可以在时间步之间共享相同的数据段。

Data Sharing选项控制了物体以及时间步的数据共享。

houdini GEOMETRY houdini geometry spreadsheet_选项卡_05


No Sharing(不共享)

——Houdini不在物体间共享数据,并会在每个新的时间步中创建数据的拷贝。

houdini GEOMETRY houdini geometry spreadsheet_houdini GEOMETRY_06


Share Data In One Timestep(在一个时间步内共享)

——在每个时间步内,数据由使用相同数据名的所有物体所共享,但会为每个时间步创建数据的新拷贝。

当你知道这个数据不会依赖于关于物体的任何信息时,就可以使用这个选项。

houdini GEOMETRY houdini geometry spreadsheet_houdini_07


Share Data In Across All Time(在所有时间中共享)

——数据由使用相同数据名的所有物体在所有时间步中共享。

当你确定一个数据不依赖于任何物体的信息且和时间无关(即,它对于所有物体都是相同的,并且在整个模拟长度内都是恒定的)就可以使用此选项。 例如,重力。

houdini GEOMETRY houdini geometry spreadsheet_houdini_08

默认状态下,设定为No Sharing(无共享),因为这会提供最可预测的结果。 但是,如果你知道可以在物体之间或所有时间步上安全地共享数据,则可以通过使用共享选项来减少模拟使用的内存量。 如果你知道在某些地方可以共享数据,以防止这些数据在每个时间步上复制到成千上万的物体上,你就可以显著地减少模拟使用的内存量。

你可以使用组节点在模拟中创建物体组,就像你在粒子网络和几何网络中创建的组一样。

你可以按物体ID或物体名将物体包含在组中,也可以按组名包含其他组。

“组”在动态模拟中具有三种用途/效果:

  • 在设置了组之后,你就可以通过组名来引用一组对象,而不是使用复杂的mask。
  • 从技术上讲,影响关系存在于组之间,而不是单个物体之间。
  • 由于组中的物体会相互影响,因此组内的所有内容都必须同时解算。

碰撞表示

Houdini 刚体解算器支持两种类型的碰撞表示:体积薄板。对普通物体使用基于体积的碰撞,对没有体积的物体使用薄板碰撞。

基于体积的碰撞检测会创建每个物体的体积表示。你可以使用物体参数的Collision选项卡上的Volume选项卡上的选项来可视化物体的体积表示并控制它的创建方式。

houdini GEOMETRY houdini geometry spreadsheet_数据_09


为了检测碰撞,Houdini 将一个物体的表面表示与另一个物体的体积表示相交,反之亦然。几何体默认的表面表示只是物体的点。这适用于密集的几何体,而如果物体具有锐利的边缘或者说点数不多,那么效果就不好。作为替代,你可以使用来表示表面。在物体的参数中,点击Collisions选项卡,然后点击Surface选项卡,Surface representation可以设置为 Edges。

houdini GEOMETRY houdini geometry spreadsheet_选项卡_10


用边表示比使用点更昂贵,而且对于大多数复杂的模型来说,这是不必要的。但是,对于某些几何类型,例如面上没有点的立方体,就需要使用边。如果你的物体没有体积(例如纸片和地平面),那就在物体的Collision选项卡上关闭 Use Volume Based Collision Detection,让 Houdini 将其视为薄板。

houdini GEOMETRY houdini geometry spreadsheet_选项卡_11


如果薄板物体与基于体积的物体碰撞,则会使用基于体积的碰撞。但是,如果两个薄板物体发生碰撞,Houdini 会使用 per-triangle 的碰撞检测。

薄板物体不能很好地堆叠。如果你需要将它们堆叠起来,你应该增加 DOP 网络节点上的最小子步的数目。