======Colliding Objects===== //All about Houdini’s dynamics networks / simulations.// ---- ====Rigid Body Dynamics==== 在 Houdini 中,''Rigid Body solver'' 用于模拟**刚体对象**的运动以及碰撞。我们将该种类型的模拟称为刚体动力模拟(//Rigid Body Dynamics//) 简称 //RBD//。 \\ \\ RBD 对象分为主动(//active//)和被动 (//passive//)对象。主动的对象受力和碰撞的影响;被动的对象可以与主动对象碰撞,但不会移动,同时也不受力的影响。 \\ \\ 常见的,可以通过 shelf 创建的 RBD 对象有: * RBD Object * RBD Fractured Object:该对象基于 ''name'' 属性创建。 * Static Object:该对象为被动对象,参与并影响模拟中的其他对象,但自身的运动并不受模拟影响 * RBD point object:在源几何体的每个点上创建一个新的模拟对象。 * Ground Plane:无限的地面,本身为静态对象。 * Terrain Object:同为静态对象,与 Ground plane 类似。该对象允许创建凹凸不平的 3D 表面。该对象的大小与源几何体相同。1 ===Constraints in RBD=== 待完善 ===Solver type=== Rigid Body Solver 内置三种物理引擎://Bullet//、//Houdini RBD//、//ODE//。每一种都有自己的优势和劣势: * //**Bullet**// * 该引擎速度比 RBD 快,可以用于带有大量的数据的场景,支持破碎,同时也是唯一一个支持 ''glue adjacent'' 功能的引擎。 * 没有选项可以区分 impact data 中的 resting impact,不支持在对象层级的缩放。 * //**Houdini RBD**// * Houdini 原生物理引擎,支持所有 Houdini 的模拟内容。可以很好的模拟任何形状物体之间的碰撞。 * 速度最慢 * //**ODE**(Open Dynamics Engine)// * 支持**高速**模拟简单的几何体(盒子、球、圆柱、胶囊状几何体)。如果被模拟的几何体符合 ODE 中的简化形状(//simplified shapes//) ,那么解算的速度回大大提高。因为这些特性,ODE 在模拟大量的简单物体上非常有优势。同时,因为 ODE 与 RBD 之间非常容易切换,因此我们也可以利用 ODE 完成初始的模拟,再到 RBD 中进行更细致的模拟。 * ODE 只支持简单几何体的碰撞,即便我们的几何体看上去很不规则,但如果使用 ODE 模拟,结果也会像简单几何体一样碰撞。同时,ODE 不支持破碎,不支持 glue,不支持三角面几何体之间的碰撞,不支持在对象层级的缩放。 ===Glue=== Houdini 中允许使用 ''glue'' 将两个不同的 RBD 对象粘连起来。在物体受力的程度超过 glue 的上限之前,两个对象都会作为一个整体。 \\ \\ 使用 glue 主要有两种工作流程: * 将指定的 RBD 对象与其他对象粘合在一起 * 创建一个碎片化的整体(也就是很多碎片组成的整体),然后将其作为被 glue 粘合好的整体导入。 该工作流程在我们希望模拟破碎的场景时非常有用。 \\ \\ ==Gule adjacent== 待完善 ===重要的 RBD 对象属性=== * ''Use deforming geometry'' * 因为效率的原因,默认情况下动力学引擎并不会使用带动画的对象。如果需要使用带动画的几何体作为对象,使用该选项即可。该选项可以进行关键帧设置,因此我们可以只在需要的时候将其值设为 ''1''。 * Number of objects * 使用该选项将会创建一系列对象的副本,但会在同一个位置创建这些副本。因此这些副本是重合的,看上去任然是一个物体。如果不想其充电,可以使用 ''Position'' 属性对其进行分离。通常我们使用 ''$OBJ'' 本地变量来控制(该值为 object number,1 等于 1个 copy 的间隔。)