Troubleshooting Collisions in Houdini

 

One of the hardest things to do to in Houdini is how to problem solve when things go wrong. Houdini is such a complex software , that sometimes everything or one thing may be wrong. One the biggest problems that happen in creating simulations is dealing with collision objects. These can make or break a simulation. Collisions can also be one of the easiest or hardest things to fix. In this article I will be covering how to figure out where and how to fix your collision objects. So let's get started.

Creating and working with Proxy Geometry 

In a simulation you may need to create proxy geometry for your collisions. This helps reduce any existing problems from your existing geometry that you are trying to simulate. The process of creating and adding your proxy happens before you add your collision object to your DOP network. You can then feed into the DOP network as a static,deforming,RBD, or other object. There are a few basic ways to create proxy geometry. Let's break down a few of them.

  • Convex decomposition can help create better collision with static objects. However, it cannot work with deforming geometry. Such as an animated character. The goal of creating a proxy, is to keep the object simple, but also keep it's size, shape, and structure. Convex decomposition keeps the original shape of your object and cuts it up into chunks for better understand it. The segment attribute on the Convex decomposition SOP calculates the separation of the hulls it creates. If you chose to turn on merge nearby segments, the node will decrease the tolerance range, and the object will be divided into larger chunks. 

 

  • Caching any heavy geometry you are using before hand helps the sim run smoother. Making sure all collision geometry are converted to polygons helps as well. 

 

  • Poly-reducing static objects also works. If your ground object has a high poly count, reducing them might speed up your simulation. Re-meshing your static objects might also work. You can also convert your ground geometry to a proxy geometry by using  the convex decomposition SOP.

  • You can create compound collision shapes by converting your objects to VDBs, and then reconverting them to polygons. This also allows for more freedom when editing your object.

  • Keep in mind that if your proxy geometry is a different shape that your original, then the movements might not be conveyed as well or appear the same. 

  •  You can also create proxy spheres for an object. You can do this by scattering some points, copying a sphere to the points, and adjusting the pscale. However, your outputted movement might act like a sphere instead of behaving as your object's desired shape.

Working with Static Objects and

Deforming Objects

In Houdini, static and deforming objects work a

bit differently from each other. These are the

main differences.

Static Objects: This is an object that once

specified, will become a collision object not

affected by the motion of other objects in the

scene. These objects can move, but you will need to select use object transform for the animation to be transferred. Example: a floor, chair, resting object for other objects. 

Deforming Objects: These objects are created to interact with static objects. They can contain animation, and are meant for objects that deform the simulation in some way.

Working with Bullet and RBD

  • I like to keep my physical bounce on my RBD packed objects at 0, in case sliding or jumping occurs.

 

  • For impact collisions use bullet. Bullet works best by using the convex hull setting on your static and deforming objects. If you do not use convex hull, your objects may look like they are passing through other geometry, bouncing. Or bullet may consider it an open surface.

Creating Constraints for Collision Objects

  • Make sure your constraints are controlled in your Geometry Object Node, not the DOP network you might be using. This creates a more controlled environment for your custom constraints. As well as less of a need to touch the SOP constraint network values.

 

  • When creating constraints you can unpack your original object geometry that you are breaking/simming in your scene and add a Connect Adjacent Pieces SOP from the object. Make sure you create a name attribute before hand for the DOP net to recognize. Then you can add a rdbconstraintprop SOP to create the final constraints for the sim.

  • RBD Constraint Properties SOP affects the groups being exported into the constraints and their values. It specifies if the  groups are handled as hard or soft constraints, and gives them variation.

  • When working with the Group Constraints SOP, you can create four different primitive groups for weaker or stronger constraints. You can also create different groups of constraints for different pieces of your geometry, or the individual pieces or clusters.

  • A spring constraint needs less substeps to operate than a soft constraint. But the soft constraint SOP is the newer and upgraded version of the spring constraint. It also has an underlying constraint network that you can edit.

Working Above the DOP Net

Here are some general tips and advise you can

use after creating your DOP net and working with

your simulation.

  • To avoid stretching on point deforms, up the

    minimum amount of points value.

  • Remember to poly fill any geometry that is

      hollow before simming.

  • You can point deform your original geometry 

      back onto your sim after you create your

      simulation with your proxy geometry.

  • Instead of using a point deform SOP to transfer DOP network data back onto your object, you can use an Extract Transform SOP. You can change the point position this way, transfer animation, and output point data as well.

Slow Motion Simulations

  • For slow motion sims focus on adjusting the constraint iterations and number of substeps in the RBD solver or bullet solver. By either lowering these or raising these, you can reduce jumping on your simmed objects. I would focus on number of substeps more. This can reduce or increase the jumping of your objects.

External Collision Resources

SideFX Collisions: https://www.sidefx.com/docs/houdini/dopparticles/collisions.html
SideFx Jeff Wagner Collisions In DOP Sims: https://www.sidefx.com/community/collision-geometry-in-dop-simulations/
Collisions In Vellum: https://forums.odforce.net/topic/41861-collisions-in-vellum/
Houdini Pyro Collisions: https://forums.odforce.net/topic/40567-houdini-pyro-collision/
Smoke Collision, Effective TDs: https://www.effectivetds.com/forum/viewtopic.php?f=49&p=4460
Volume Collisions: https://www.reddit.com/r/Houdini/comments/9yms3f/houdini_for_the_artist_quick_tips_volume/
Houdini DOPs, CgWiki: http://www.tokeru.com/cgwiki/index.php?title=HoudiniDops
Houdini Tips and Tricks, Deborah  Fowler: http://www.deborahrfowler.com/HoudiniResources/HoudiniTipsAndTricksComplex.html
Static Object Dynamics Node: https://www.sidefx.com/docs/houdini/nodes/dop/staticobject.html
Collision Issues with Static Objects, Forms, SideFx: https://www.sidefx.com/forum/topic/59989/?page=1#post-296015
FLIP Fluids and Static Objects: https://www.sidefx.com/forum/topic/57157/?page=1#post-256433