What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
vfx:houdini:dop:node:objects:rbd_object [2019/10/02 12:20] – [Bullet Data] codingharevfx:houdini:dop:node:objects:rbd_object [2021/11/11 08:08] (当前版本) codinghare
行 1: 行 1:
 ======RBD Object====== ======RBD Object======
 <color #7092be>**//从指定的几何体创建 RBD 对象。//**</color> <color #7092be>**//从指定的几何体创建 RBD 对象。//**</color>
-===== =====+----
 该节点用于创建 RBD 对象。 该节点用于创建 RBD 对象。
 ====Attributes==== ====Attributes====
行 68: 行 68:
 |<color #900>AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry</color>|开启该选项之后,houdini 将使用对象几何体的子数据来对其进行分析。如果是简单几何体(primitives)或者是 Plane,将使用 bounding 来创建形状。| |<color #900>AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry</color>|开启该选项之后,houdini 将使用对象几何体的子数据来对其进行分析。如果是简单几何体(primitives)或者是 Plane,将使用 bounding 来创建形状。|
 |<color #900>Collision Padding</color>|该属性控制形状之间的填充距离。使用该选项我们可以更好的控制 Bullet 解算的可靠性和性能。需要注意的是,padding 功能会增加碰撞形状的大小,因此最好开启 ''Shrink Collision Geometry'' 来防止碰撞大小的增加。\\ \\ 该选项对 Plane 类型的几何体无效。| |<color #900>Collision Padding</color>|该属性控制形状之间的填充距离。使用该选项我们可以更好的控制 Bullet 解算的可靠性和性能。需要注意的是,padding 功能会增加碰撞形状的大小,因此最好开启 ''Shrink Collision Geometry'' 来防止碰撞大小的增加。\\ \\ 该选项对 Plane 类型的几何体无效。|
-|<color #900>Shrink Collision Geometry</color>|+|<color #900>Shrink Collision Geometry</color>|该选项用于阻止因 ''Collision Padding'' 导致的碰撞形状的增大。\\ \\ 该选项可以通过阻止非常靠近的形状的穿插,和除去因 ''Collision Padding'' 导致的对象之间的间隙,来提高解算的稳定性和表现。\\ \\ 当使用 //Primitives// 作为几何表现的时候,''Shrink Amount'' 会直接作为减数应用到对应形状的半径 / 长度上。\\ \\ 当使用 //Convex Hull// 作为几何表现的时候,所有的多边形将往**内**“平移”,平移量等同于 ''Shrink Amount''。\\ \\ 该选项对 //Concave// 和 //Plane// 无效。 | 
 +|<color #900>Add Impact Data</color>|开启该选项将记录所有的 //Impacts// 和 //Feedback// 数据。| 
 +|<color #900>Enable Sleeping</color>|开启该选项后,所有没有移动的对象均不参与到模拟中,直到这些对象再次移动。Houdini 通过线速度和角速度来判定对象是否移动。(可以看到对象在没移动的情况下的颜色是未激活颜色)。| 
 +|<color #900>Linear Threshold</color>|线速度低于该上限的对象将被视作没有移动。| 
 +|<color #900>Angular Threshold</color>|角速度低于该上限的对象将被视作没有移动。| 
 +===Physical=== 
 +|<color #900>Compute Center of Mass</color>|该选项开启后会自动计算对象的质心(center of Mass)。 // // <WRAP center round tip 100%> 
 +质心和重心比较相似,但是有区别。重心由重力场定义,在均匀重力场中,质心的位置与重心相同。但在无重力的情况下,重心没有定义,但质心依然存在。 
 +</WRAP>
 +|<color #900>Center of Mass</color>|如果不开启自动计算质心,那么使用指定的值作为质心。需要注意的是,对象旋转的时候,其中心点就是质心,因此我们可以利用这一点来使对象往指定方向倾斜。| 
 +|<color #900>Compute Mass</color>|决定是否要计算对象的质量。| 
 +|<color #900>Density</color>|质量等于密度乘以体积。默认的 1000 指的是 $1000cm^3$,也就是水的密度。| 
 +|<color #900>Mass</color>|对象的绝对质量| 
 +|<color #900>Rotational Stiffness</color>|当对象收到一个倾斜方向上的力,通常它会旋转。旋转的程度取决于对象的形状和质量的分布(被称为 //Inertial tensor//,惯性张量)。\\ \\ //Rotational Stiffness// 会作为一个乘数应用到 //Interial tensor// 上。该值越高,对象**越不容易**旋转;反之越容易。| 
 +|<color #900>Bounce</color>|对象的弹力。''1.0'' 代表不会失去任何能量,''0.0'' 会失去所有能量。| 
 +|<color #900>Bounce Forward</color>|(可能等同于 shearing elastic stress,未确定)。 对象的 tangential elasticity。 如果该参数为 ''1.0'',则切线方向的移动只受摩擦力印象。如果是 ''0.0''那么两个对象的切线移动将一致。| 
 +|<color #900>Friction</color>|对象的//摩擦系数//。''0'' 代表对象是**绝对光滑**的。该参数同时影响对象碰撞后的切线速度([[https://study.com/academy/lesson/what-is-tangential-velocity-definition-formula.html|tangential velocity]])。| 
 +|<color #900>Dynamic Friction Scale</color>|相比静止的对象,滑动的对象通常拥有更大的动摩擦系数。该系数与静摩擦系数不同,但在 Houdini 中可选取的范围也是 ''0-1''。当该参数为 ''1'',意味着动摩擦力等同于静摩擦力。''0'' 意味着只要克服了静摩擦力,该对象将像没有摩擦力一样运动。| 
 +||<color #900>Temperature</color>|//Temperature// 决定对象的冷热程度。该选项用于在烟雾解算中指定 fuel 的燃点,或者用于浮力计算。\\ \\ 需要注意的是,该温度并不与真实世界的温度挂钩。在该温度的度量下,环境温度(室温)通常被认为是 ''0''。| 
 +====Useful Locals==== 
 +  * **ST**:记录某个节点总共被模拟了多少时间。该变量保证了模拟是从 0 开始的。 
 +  * **SF**:记录某个节点总共被模拟了多少帧,该变量不等同与 ''F'',而是等同于 ''ST / timestep''。 
 +  * **SNOBJ**:模拟中对象的总数。好的使用方法:''object_$SNOBJ''。 
 +  * **NOBJ**:当前 timestep 中 参与模拟的对象总数。该变量会返回 ''0'' 当前节点处理的对象对象并不是按序列被处理的。 
 +  * **OBJ**:被当前 Node 处理对象的编号。该编号指定当前对象在处理序列中的位置,但并不会验证当前对象是否处于模拟中。该变量适用于为每个对象生成随机的编号,或者将对象简单的分成好多个组。 
 +  * **OBJID**:每个被处理的对象拥有的唯一ID。当对象被处理时,每个对象都被指定一个唯一的整型编号。处理完毕之后,该编号将不再被复用。\\ \\ 该变量适用于如果我们想对不同对象进行不同的处理,同时也适用于寻找特定的对象并进行操作。 
 +  * **OBJNAME**:当前被处理对象拥有的名字(string value)。\\ \\ 该名字并不是唯一的;不过如果我们可以手动的为对象指定唯一的名字,那么该变量实际上比 ''OBJID'' 要更加直观。\\ \\ 该变量也可以用于一系列类似的物体(通常这些物体都拥有同样的名字),并将其视作一个组。比如:我们需要特别处理一个组的对象 ''myobject'',让其在指定的位置激活。如果这些对象的名字都相同,那么我们就可以使用:''stracmp(OBJNAME, ''myobject'') == 0'' 的表达式来对其进行激活了。 
 +====参考资料==== 
 +  * [[http://www.sidefx.com/docs/houdini/nodes/dop/rbdobject.html#physical|RBD Object dynamics node]]