|On this page|
Often, doing physics simulation (such as the Edit tool’s "Use Physics" mode, or the Drop tool) with highly-detailed models is slow. To make simulation faster, you can simulate a lower-resolution proxy of the original model, which has the same basic shape but eliminates unnecessary detail.
There are two basic ways of using this node to create proxy geometry:
This node can automatically generate proxy geometry from an original model. The node has multiple methods for simplifying geometry, and you can use multiple methods at the same time.
You can dive inside this node and use the SOP subnet inside to simply build the proxy geometry manually.
The input to the subnet is the result of any automated simplifications you applied on the node above, so you can combine automatic reduction and hand-editing.
When you create the proxy geometry, the node automatically sets up a USD proxy relationship between the proxy and the original model. When USD-aware tools such as Edit and Drop see this relationship, they know to simulate the proxy geometry.
While you can make the proxy geometry visible, it overlaps with the original model. Unfortunately, you can’t hide the original without also hiding the proxy because of how USD visibility is inherited.
It’s inconvenient, but you can see the collison proxy alone by first hiding the original in the USD scene graph tree, and then diving into the node. While you're in the SOP network, the SOP viewer shows the output of the SOP network, no matter what’s visible in USD.
In general, you want to reduce to a proxy that reasonably matches the shape of the original, with the fewest polygons possible. For simulation purposes, the "quality" of the polygons doesn’t really matter (for example, it’s fine if the proxy has long skinny polygons).
If you enable multiple simplification methods, they are applied in the order they appear in the parameters.
VDB Resurface is excellent at simplifying models that are bumpy or full of holes (it’s a way of "blurring" out fine detail in the original model).
If you are using the Convex Hull method with Decomposition, it can produce extraneous polygons. You can use the "Final Polygon Reduction" step to clean them up, however don’t set the "percent to keep" too low. Poly reduction can change the shape enough that it destroys the convexity, or introduces other problems such as zero-volume enclosures.
If you use the SOP network inside this node to generate polygonal proxy geometry, all faces must have a SOP primitive string attribute named
usdprimpathwhere the value is the prim path of the original model’s polygon mesh (for example,
The primitive(s) the node should operate on. You can drag primitives from the scene graph tree pane into this textbox to add their paths, or click the Reselect button beside the text box to select the primitives in the viewer, or ⌃ Ctrl-click the Reselect button to choose prims from a pop-up tree window. You can also use primitive patterns for advanced matching, including matching all prims in a collection (using
Exclude Primitives with Existing Proxy
If a prim selected in Primitives already has proxy geometry, ignore it.
Display the generated proxy geometry in the viewport. See Tips above.
These parameters set up a proxy geometry cache on disk. This makes cooking the node faster, since it doesn’t have to recompute the proxy unless the input geometry changes. (Note that once you write the scene to USD and use it in a Houdini scene, the USD file itself is a file cache containing the proxy geometry.)
Load from Disk
Load the proxy geometry from the file specified below.
File path to save the generated geometry to. Use
.bgeo.sc as the file extension.
Save to Disk
Click to regenerate the proxy geometry and save it to the file path above.
Uses PolyReduce to produce a proxy with fewer polygons while keeping the same general shape.
Percent to Keep
The percentage of polygons to keep. For example, if the original model has 1000 polygons, setting this to
10 will generate a proxy with 100 polygons.
Converts geometry to a VDB surface volume and then back to polygons. This is a good method for getting clean/simple surfaces out of very complex/bumpy geometries like woven fabrics or baskets (it essentially "blurs" out small details).
The voxel size of the VDB surface, in world units. The larger the voxel size, the chunkier the proxy will be.
The distance in voxels to dilate & erode the VDB surface by. You can use this to close any gaps and small holes in the geometry for a cleaner, smoother surface.
Post Percent to Keep
This node automatically uses PolyReduce on the surface generated from the VDB volume, since it tends to have many polygons, even though the overall shape is simpler. This is the percentage of polygons to keep. For example, if the surface has 10000 polygons, setting this to
5 will generate a proxy with 500 polygons.
Turn meshes into convex hulls, which are ideally suited for physics simulation.
The Bullet RBB solver is much more efficient with purely convex collision geometry than with complex/concave geometry. If the model can be well represented by a "skin" stretched around its outside, choose "Convex Hull Per Primitive". If the original model has space between disconnected pieces, choose "Convex Hull per Connected Piece". If your model is concave, you can try using "Decompose Each Connected Piece" to see if the computer can approximate the original shape using multiple convex shapes (this can benefit from using VDB Resurface to blur out details first).
Convex Hull Per Primitive
Create a single convex hull for each mesh primitive. Use this for primitives that only need to be represensted roughly by their outer shape. This is great for creating simulation friendly geometry from even very compex primitives. For example turning a detailed flower pot into a single convex hull will remove all the flower & leaf details while still keeping an accurate representation of the bottom of the pot, which might be all you're interested in when putting it on a table or shelf.
Convex Hull Per Connected Piece
Generates individual convex hulls for each connected piece of geometry within each prim, potentially resulting in a much more detailed representation.
Decompose Each Connected Piece
Decompose each connected piece into approximate convex segments. Lowering the value of the Max Concavity parameter will create more segments and have a better fit to the original geometry.
When Granularity is "Decompose Each Connected Piece", the maximum distance from a point on the geometry to its closest convex hull edge (in world units). Lowering this may give you a better approximation of a concave original, but increases complexity of the proxy.
Uses PolyReduce on the results any enabled steps above. This can be useful for a final cleanup for "Convex Hull", which can sometimes leave behind useless co-planar polygons.
Post Percent to Keep
The percentage of polygons to keep.