DOP RBD

animated static object

RBD DOP.hiplc - .hip file

H17 Masterclass - [Rigid Body Solver]
H18 Sigraph

Destruction FX | 2 | RBD Simulation
Houdini Masterclass Tutorial: RBD Smart Activation Workflow


Solvers

Rigid Body Solver

The RBD engine uses volumes and is useful for complicated, deforming, stacked, geometry.

  1. OBJECT
    • objects - rbdpackedobject / rbdfractureobject / rbdobject (hero)
  2. PRE-SOLVE
    • pop forces - apply pop forces in RBD
  3. POST-SOLVE
    • sop solver - will take geometry and transform it

.

  • Unable to enforce glue constraints between RBD Objects and Static Objects. You can work around this limitation by (using constrained RBD Objects perhaps with some RBD Pin Constraint DOPs instead of a Static Object)

Bullet Solver

The Bullet engine offers simpler collision shapes and is suitable for fast, large-scale simulations. Bullet likes pieces between 0.1 and 100 if you need smaller pieces, scale up and boost gravity proportionally

  1. OBJECT
  2. DATA STREAMS

Subframes

Subframes: in global anim options (global subs?) And Time is float turn off / solver substeps (expensive when stacking obj) / constraint substeps

Substeps


SOP

Geometry :

  • pack!
  • convex !
  • s@name (point [packed])

Constraints:

  • s@name (point) - name same as geometry. (s@name = "piece" + itoa(@ptnum);)
  • s@constraint_name (prim)
  • s@constraint_type (prim)

States

Point attribute on packed SOP geometry:

  • i@active=1; - Do the actual solve.
  • i@deforming=1; Animation before packing. (Will recompute collision every frame! )
  • i@animated=1; Packing before animation.

Can set up with [RBD Configure] SOP :

Animate:

To animate state ude SOP solver:

  • if (@Frame >21){
    i@active=1;
    i@animated=0;
    }
    

Physical properties

  • @density -
  • @bounce - how much energy conservation there is when two objects collide, this is multiplication between the two objects (e.g. sphere and the ground) - 0 dont bounce
  • @friction -how difficult is to move object from rest. 0 - no resistance at all - 0 is ice.
  • dynamic friction - multiplier for objects that are already moving
  • rotational stifness - how much object will spin (how much object inherites rotation when hit by another object), 0 - means no rotation
  • @name - name pieces
  • v@v - velocvity
  • v@w - angular velo
  • @mass -

DOP

Objects

[RBD Packed Object] DOP

Multiple packed pieces connect to 1op in solver.

  • rotation for packed RBD : dop angular momentum ? ??? or use POP torque !
  • geometry source can be fires tcontext geo

[RBD Object] DOP (Hero)

[RBD Fracture Object] DOP

[Static Object] DOP

[Static object] DOP

For collisions after solver

Constrains

  • Change data name in DOP to match input geometry @constraint_name.

Attributes

required:

  • s@name (point) - same as packed geometry point name.
  • s@constraint_name (prim)
  • s@constraint_type (prim)

optional:

  • broken (prim}group will be ignored by solvers on subsequent frames.
  • next_constraint_name
  • next_constraint_type
  • i@propagate_iteration Detail

Hard

Soft

Use it a lot (ony bad case is lot of oscilation with small dumping witch require lot of substeps) not enough subs can cause unexpected damping

  • stiffness - (mass indep.) frq (nr of iter per sec) 1 > 100 stiffer > to infi. (will bend anyway, oyu can increase substeps)
  • damping ration - (mass indep.) 0 - bedzie oscylowac zanim wroci, 1 soft return to standard pos. Over >1 can incresse even more

Glue

halftime - remove impact pwer (decay over time)
propagation rate - 1 - will spread evn to naaighb.
propagate iteration (same as solver iteration ovveride on other consrains) -1 < use default value /1 propagate. Override it in SOP as prim attrib propagationiterations

Spring

  • strenth - string constant (mass dep.)
  • damping - damping coeficient (mass dep.)

Slider

Animate

Animate in SOP Solver attached to constraint net.

  • if (f@impact >= 1000) {
     s@constraint_name = '';
    }
    

Collision

Sphere Representation

For bulletsolver use spheres collision representation, fastest!. Not for one sided surfaces and sharp corners.

Setup:

  • In RBD Object DOP change:
  • Bullet Data > check: [x] Create convex hul per set of connected primitives

Convex Decomposition

.

? Volume collision source

  • mode: collision intersect to volume source
  • proxy volume: vdb path

? Mesh collision source

for mesh collision source:

  • if its plane turn off volume based collision

SOP Solver

lets the DOP simulation use a SOP Network or chain of SOPs to evolve an object’s geometry over time - dop geo impact and feadbacks and gve tou also import merge geo.

Sops in dops TUT
Sops in dops YT

POP Forces

  • forces inside dop

Proxy

Use transfor pieces SOP to move orginal over proxy.

.

Packed geometry - have packedfulltransform is 4x4 matrix transform (rot, trans, scale)

Proxy - Unpack transform from sim: matrix m = primintrinsic(1,'packedfulltransform',0); and copy to full geo

Deforming to animating extraction

To make sim more efficient. Can pick up scale

  • Extract transform SOP


Fracture

Boolean fracture

  • special sop that provide constraints

RBD Material Fracture

Voronoii ++

  • glass - radial
  • wood - boolean based - per piece can detect wood longer edge direction
  • Voronoii 2.0

  • can do multiuple and append to name attribute.

    RBD Interior detail

  • 1op - geo
  • 2op - constraint
  • 3op - proxy geo

RBD Cluster sop

Can Cluster from voronoii or boolean.

Set up i@cluster point attribute (on constraints)

But for static permanent connection

Pack

RBD Pack RBD Unpack

Some of attributes can run over ‘pieces’:

  • Piece Attribute
  • Attribute Promote - can calc center ! (compute aver ‘P’ )
  • Convex Decomp + assemble
  • Extract Centroid - can calculate actual center of mass.
  • rbdconstraintproperties SOP «« !!!!!! ?????
[Static Solver] DOP
[Multi Solver] DOP
  • multisolver is for pops (and rigid body)