What & How & Why

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
vfx:houdini:dop:colliding_objects [2019/09/08 03:54] – [Overview] codingharevfx:houdini:dop:colliding_objects [2021/11/11 08:08] (当前版本) codinghare
行 1: 行 1:
 ======Colliding Objects===== ======Colliding Objects=====
 <color #7092be>//All about Houdini’s dynamics networks / simulations.//</color> <color #7092be>//All about Houdini’s dynamics networks / simulations.//</color>
-===== ===== +---- 
-====Overview==== +====Rigid Body Dynamics==== 
-在 Houdini 中,''Rigid Body solver'' 用于模拟**刚体对象**的运动以及碰撞。我们将该种类型的模拟称为刚体动力模拟(//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=== 
 +<WRAP center round todo 100%> 
 +待完善 
 +</WRAP> 
 +===Solver type=== 
 +<color #ff7f27>Rigid Body Solver</color> 内置三种物理引擎://Bullet//、//Houdini RBD//、//ODE//。每一种都有自己的优势和劣势: 
 +  * //<color #ffc90e>**Bullet**</color>// 
 +    * 该引擎速度比 RBD 快,可以用于带有大量的数据的场景,支持破碎,同时也是唯一一个支持 ''glue adjacent'' 功能的引擎。 
 +    * 没有选项可以区分 impact data 中的 resting impact,不支持在对象层级的缩放。 
 +  * //<color #7092be>**Houdini RBD**</color>// 
 +    * Houdini 原生物理引擎,支持所有 Houdini 的模拟内容。可以很好的模拟任何形状物体之间的碰撞。 
 +    * 速度最慢 
 +  * //<color #00a2e8>**ODE**</color>(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== 
 +<WRAP  round todo 60%> 
 +待完善 
 +</WRAP> 
 +===重要的 RBD 对象属性=== 
 +  * ''Use deforming geometry'' 
 +    * 因为效率的原因,默认情况下动力学引擎并不会使用带动画的对象。如果需要使用带动画的几何体作为对象,使用该选项即可。该选项可以进行关键帧设置,因此我们可以只在需要的时候将其值设为 ''1''。 
 +  * Number of objects 
 +    * 使用该选项将会创建一系列对象的副本,但会在同一个位置创建这些副本。因此这些副本是重合的,看上去任然是一个物体。如果不想其充电,可以使用 ''Position'' 属性对其进行分离。通常我们使用 ''$OBJ'' 本地变量来控制(该值为 object number,1 等于 1个 copy 的间隔。)