What & How & Why

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
vfx:houdini:dop:colliding_objects [2019/09/12 00:18] – [Solver type] 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//) 简称 //RBD//。 在 Houdini 中,''Rigid Body solver'' 用于模拟**刚体对象**的运动以及碰撞。我们将该种类型的模拟称为刚体动力模拟(//Rigid Body Dynamics//) 简称 //RBD//。
 \\ \\
行 16: 行 16:
   * Ground Plane:无限的地面,本身为静态对象。   * Ground Plane:无限的地面,本身为静态对象。
   * Terrain Object:同为静态对象,与 Ground plane 类似。该对象允许创建凹凸不平的 3D 表面。该对象的大小与源几何体相同。1    * Terrain Object:同为静态对象,与 Ground plane 类似。该对象允许创建凹凸不平的 3D 表面。该对象的大小与源几何体相同。1 
-====Constraints in RBD====+===Constraints in RBD===
 <WRAP center round todo 100%> <WRAP center round todo 100%>
 待完善 待完善
 </WRAP> </WRAP>
 ===Solver type=== ===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 的间隔。)