======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 primitives//,//spheres//,//tubes//。每个 Primitives 都会为刚体提供碰撞几何体;而在 primitives 上的点则会包含属性,用于存储相关的信息,比如方向(orientation),质量,速度等等。\\ \\ 这导致该节点的效率远远高于 //RBD Fractured Object//、//RBD Point Object//。该节点现在只能被 //Bullet Solver// 识别。
====Point Attributes====
之所以要提前讨论属性,是因为这些属性初始状态下只存在于 DOP netowork中(//geometry spreadsheet -> geometry//),但我们可以提前在 SOP 中设置好这些属性供 DOP 使用。而正因为这些都是 point attribute,而 //Packed Objects// 正是基于点来模拟位移与方向的,因此这些属性可以为每一个实例(instance)添加初始状态。
//Bullet Solver// 使用如下的点属性(point attributes)来存储 //Packed Object// 中每一个部分需要的信息。
^ Name ^ Type ^ Description ^
|active| Int |指定对象**是否能够**与模拟中的其他对象交互。\\ \\ **关联参数**: ''initial Object Type'' 。|
|animated| Int |指定是否将 SOP 的变换(也就是自带的动画)更新到 DOP中(以 timestep 为单位)。\\ \\ 该选项只在 ''active'' 为 ''0'' 的时候使用。\\ \\ **关联参数**: ''initial Object Type'' 。|
|bullet_add_impact| Int |开启该选项后,任何在模拟中出现的冲击将被存储到 ''impacts'' 与 ''Feedback'' 数据中。|
|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 几何体上的 ''v'' 和 ''w'' (线速度和角速度点属性)将覆盖对象自身的初始属性。|
|mass| Float |对象的质量。受 ''computemass'' 的影响。\\ \\ **关联参数**:''Mass ''。|
|name| Quaternion |对象的方向。|
| P | Vector |对象**当前的质心位置**。|
|pivot| Vector |质心的位置。由自动计算或者手动指定生成。\\ \\ **关联参数**:''Center of Mass''。|
|v| Float |对象的线速度。\\ \\ **关联参数**:''Velocity ''。|
|w| Float |对象的角速度。\\ \\ **关联参数**:''Angular Velocity''。|
===Collision Shape Attributes===
下列属性可以用于自定义**碰撞形状**。该属性来自于 ''Bullet Data'' 节点。\\ \\
^Name^ Type ^Description^
|bullet_adjust_geometry| Int |收缩碰撞几何体的范围,防止 collision padding 带来的碰撞几何体增大导致模拟发生变化。该属性可以防止碰撞几何体的交叉,去除 collision padding 带来的几何体缝隙。|
|bullet_autofit| Int |当碰撞几何体的表现形式为 box、Capsule、Cylinder、Sphere、Plane 的时候,该参数决定是否使用碰撞几何体的 bounds 来作为碰撞外形。|
|bullet_collision_margin| Float |碰撞外形之间的 padding,用于提升 Bullet 的碰撞检测的稳定性和表现。**该属性与场景的比例有关系。**\\ \\ 该 padding 会同样增加碰撞外形的大小,因此推荐使用 ''Shrink Collision Geometry'' 来防止碰撞外形的变化。该选项不支持 ''Concave'' 、''Plane''。|
|bullet_georep| String |碰撞外形的表现形式。比如 //Convex Hull//。|
|bullet_groupconnected| Int |当表现形式是 Convex Hull 的时候,指定解算器是否以已连接的 primitives 为单位(Packed Primitives),创建一个包含多个 //Convex Hull// 的复杂碰撞外形。|
===Collision Attributes===
以下属性用于使指定对象忽略与模拟中其他对象的碰撞行为。
|collisionignore|String|如果对象处于**未激活**状态,且''min_activation_impulse '' 的值为正,那么该对象不能通过与任何满足 ''collisionignore'' 中表达式的对象进行碰撞而达到**激活**的效果。|
|activationxformgroup|String||
|collisionignore| String |若指定对象满足该属性中的表达式,那么该对象不会与任何其他对象进行碰撞。\\ \\ 该表达式可以使用 DOP 对象的名字,ID、DOP Groups,或 RBD pakced object 中的 ''collisiongroup'' 属性。同时,POP Collision Ignore 节点可以用于生成该属性。以下是语法:\\ \\
* ''*'' 会关闭所有的碰撞,留空会开启所有的碰撞。
* ''* ^object1'' 会导致对象只与名为 ''object1'' 的对象碰撞。
* ''wall*'' 会关闭 Packed primitive 中,所有 ''collisiongroup'' 属性中,以 ''wall'' 开头的对象。
* ''object1/wall*'' 同上,但指定了 Packed primitive 的来源为 ''Object1''。
|