What & How & Why

这是本文档旧的修订版!


RBD Packed Object

Creates a single DOP object from SOP Geometry that represents a number of RBD Objects.

RBD Packed Object 节点 会在 DOP 中创建一个 DOP 对象,供 DOP 模拟使用。该节点从指定的 SOP 路径获取几何体,并使用一个单独的点和每个具有变换的 primitive 来描述 RBD 对象。这些 primitives 可以是 packed primitivesspherestubes。每个 Primitives 都会为刚体提供碰撞几何体;而在 primitives 上的点则会包含属性,用于存储相关的信息,比如方向(orientation),质量,速度等等。

这导致该节点的效率远远高于 RBD Fractured ObjectRBD Point Object。该节点现在只能被 Bullet Solver 识别。

Point Attributes

之所以要提前讨论属性,是因为这些属性初始状态下只存在于 DOP netowork中(geometry spreadsheet → geometry),但我们可以提前在 SOP 中设置好这些属性供 DOP 使用。

Bullet Solver 使用如下的点属性(point attributes)来存储 Packed Object 中每一个部分需要的信息。

Name Type Description
active Int 指定对象是否能够与模拟中的其他对象交互。

关联参数initial Object Type
animated Int 指定是否将 SOP 的变换(也就是自带的动画)更新到 DOP中(以 timestep 为单位)。

该选项只在 active0 的时候使用。

关联参数initial Object Type
bullet_add_impact Int 开启该选项后,任何在模拟中出现的冲击将被存储到 impactsFeedback 数据中。
bullet_angular_sleep_threshold Float 速度低于该值(上限)的对象将被视作没有运动
bullet_ignore Int 指定对象是否会被 Bullet Solver 忽略

active 设置为 0 不同的是,该值意味着对象不会再与任何其他对象碰撞。

bullet_linear_sleep_threshold Float 线速度低于该值(上限)的对象将被视作没有运动
bullet_want_deactivate Int 被视作为“没有运动”的对象将不再参与到模拟中,直到他们重新开始运动。“没有运动” 由线 / 角 速度的两个上限判定。
computecom Int 指定是否计算质心

关联参数Compute Center of Mass
computemass Int 指定是否通过对象的形状和密度计算质量。

关联参数Compute Mass
creationtime Float 对象的创建时间($SF
dead Int 指定下次解算中哪些对象应该被删除。POP kill 节点可以用于生成该属性。
deforming Int 指定对象的形状是否在碰撞后进行重建

关联参数Initial Object Type
density Float 指定对象的密度

关联参数Density
friction Float 指定对象的静摩擦力0 代表光滑。

关联参数Friction
inertialtensorstiffness Float inertial tensor 的缩放参数。越高代表对象旋转的趋势越小。

关联参数Rotational Stiffness
inheritvelocity Int 如果该值不为 0,来自 SOP 几何体上的 vw (线速度和角速度点属性)将覆盖对象自身的初始属性。
mass Float 对象的质量。受 computemass 的影响。

关联参数Mass
name Quaternion 对象的方向。
P Vector 对象当前的质心位置
pivot Vector 质心的位置。由自动计算或者手动指定生成。

关联参数Center of Mass
v Float 对象的线速度。

关联参数Velocity
w Float 对象的角速度。

关联参数Angular Velocity