Nick Petit

npetit

About Me

Connect

LOCATION
Not Specified
WEBSITE

Houdini Skills

Availability

Not Specified

My Badges

SideFX Staff
Since Feb 2008

My Talks

obj-image HIVE
New RBD Workflow Tools in Houdini 18

Recent Forum Posts

RBD Car Fracture Rig Collision Troubleshooting Jan. 13, 2026, 8:05 p.m.

It's hard to tell without seeing the hip file unfortunately. If the car pieces fall apart right from the get-go, it means one of 3 things:
  1. the constraints anchor names point to pieces that don't exist
  2. the constraints break and disappear immediately upon impact with the ground
  3. there are no constraints between the pieces that break apart

For 1) a hip file would really help to see what went wrong with the constraint creation.
For 2) the vehicle mass is too high or the constraint strengths are for too low and you have constraint breaking thresholds enabled for all constraints (including the soft constraints for metal parts of the car which shouldn't break) so the glue constraints break immediately, switching to the next constraints (soft with plasticity enabled) which then get deleted by the constraint breaking threshold as they probably stretch beyond the default distance threshold.
For 3) Make sure you have neighbor constraints enabled between the sections - you only want to disable those when you want to create your own constraints, i.e for a door where you want to position the hinges precisely, or the hood, or the boot, etc...

If it's none of those, it'd be really helpful to see a file. If you can't share it publicly, file a bug and upload it there so I can take a look.

Solaris convert 4x4Matrix to separate TRS transformation Jan. 1, 2026, 9:19 p.m.

For issue 1, /World gets a default transform because the SOP Create LOP is creating that prim and authors whatever transform you specify in the "Transform" tab of the node - in your case the transform parms are left blank so you get an identity matrix which does nothing.
Adding a default transform set to identity isn't necessary as it does nothing - you'd just be adding unnecessary bloat.

For issue 2, having those old leftover xformOps doesn't hurt since they are no longer in the xformOpOrder list. However, if they were authored in the current layer, you may be able to remove them - in your python LOP:

for prim in stage.Traverse():
    if prim.IsA(UsdGeom.Xformable):
        xform = UsdGeom.Xformable(prim)
        if convert_matrix_to_trs(xform):
            count += 1
        order = prim.GetProperty("xformOpOrder") or []
        if order:
            order = order.Get()
        for prop in prim.GetPropertiesInNamespace("xformOp"):
            if prop.GetName() not in order:
                prim.RemoveProperty(prop.GetName())

How to Transform Fractured Pieces During RBD Bullet Solver? Dec. 30, 2025, 3:34 p.m.

Dive inside the RBD Bullet Solver and drop a Geometry Wrangle and animate the `pscale` or `scale` attributes, for example:
float @pscale = 1; // initialize it at 1
if (@Frame > 10) @pscale *= 0.95; // start scaling the pieces down after frame 10