Houdini Tutorial Week 3

The third week is to do the destruction effect. I try to import the model I made in Maya into Houdini for special effects production. Every session is having access to new content, which really makes me feel very challenging and having a sense of accomplishment. Rigid body breaking is a very powerful function in Houdini. In fact, most of the core work is done in SOP, such as breaking shape of different materials, constraint generation control, attribute control and packed object conversion, including adding details and material rendering in the later stage.

Voronoi

Voronoi is a kind of subdivision of space plane, which is characterized by that any position in the polygon is closest to the sample points of the polygon (such as residential areas), far away from the sample points of adjacent polygons, and each polygon contains and only contains one sample point. Because of the equal division of Voronoi, it can be used to solve the nearest point, the smallest closed circle and many other spatial analysis problems, such as adjacency, proximity and accessibility.

Broken nodes with three preset shapes

This node allows you to generate three types of broken concrete, glass and wood.

It has four input ports: geometry, constraint geometry, proxy geometry, and an optional input, which can be connected with extra points to control the shape of fragmentation. You can directly select three broken presets in material type. If a constraint geometry is connected, it will automatically generate constraints between the fragments for you.

Use different display modes

The guide geometry option controls different display modes. Fractured geometry is a mode in all three presets. As the name suggests, it shows the broken shape.

Constraint network is also the mode of all presets. It will display the constraint network between fragments (press w to switch the wireframe display).

Primary volume and edge detail are specific patterns of concrete, which represent the distribution of each primary fracture level and the cutting surface used by Boolean operation to cut objects.

Concentric Noise and Edge Detail are the unique modes of glass, which display the cutting lines used to generate the broken glass.

As for the three display modes unique to wood, they represent three forms of wood fragmentation: grains, cuts and splinters.

Generate concrete form

The fracture level parameter controls the cutting level. It’s a bit like the layer in PS. increasing this value will increase the level and number of fragments, and generate smaller fragments on the fragments.

Opening edge detail will add noise to the broken surface.

Using the RBD paint node, you can first draw fragile areas on an object, and then connect them to the RBD material structure. It uses a density attribute to control the fragile area to generate more fragments.

We need to select attribute in the scatter from tab and fill density in attribute name.

Glass formation

When several patches are connected to the input, the fracture per piece is a very useful parameter, which will generate fragmentation on all patches separately. This parameter can distinguish different objects according to the piece attribute. If there is no piece attribute, it will be distinguished according to the connectivity between objects.

The parameters under the cracks tab control the amount of broken glass.

Enable chipping under the chipping tab will add more details to the fragment. It can create further cracks between the pieces.

Generate wood form

By default, the direction of chip breakage is the longest axis of the object.

Cut spacing is used to adjust the number of cuts to control the number of pieces.

The cluster tab is used to “glue” small pieces of wood together to form larger pieces. Give broken form more variety.

Boolean

Processing interpenetration model function: for processing interpenetration model, directly connect to nodes such as Boolean nodes, select union mode, and process interpenetration problems (re topological interface operation for interpenetration part)

The shatter function uses the right input port to crush the left, which is very fast.

Note that Boolean is set to operation micro shatter crushing mode, and setb port is set to surface, because the broken object grid is a face, which is a piece face instead of a solid.

First way

Voronoifracture + Explodeview node

Avoid it pointing to the centre add the node of pointfromvolume to make it natural

vdbfrompolygon

Add remesh node

test

Then add the attribnoise to make the P noise

Rest node — create a rest attribute like pause period at the P attribute

the attribwrangle VEX pression is the same function with rest
the two attribwrangle like taking the rest node away and bringing it back at the end

Second way

add the scatter/grid/copytopointsand and attrirandomize

attrirandomize node

Attribute name -normal Distribution — Direction or orientation

Add attribnoise and booleanfracture divide so the break will show pieces with different shape

wooden shape

right click – create reference copy with all the value same with the original node

modify the scale of transform and uniform scale of explodedview

Third way

Add rdbmaterialfracture

enable edge details
recognise different pieces and separate them with name piece+number

Conclusion

Crushing method : get small pieces between big pieces to increase the detail and authenticity of crushing

Based on the basic settings, copy 3 copies of the point, so that the copied grid is overlapped. Then add the connectivity node, give each face an attribute class, and use this attribute to drive the offset value of turbulence set in pointvop. In this way, the overlapped fragments can deform disorderly and flow out of the gap, which is the small fragments between the large fragments that we need.

Node Summary

Geometry Nodes

Normal — This node computes point, vertex, primitive, or detail normals using a more accurate approach than the Facet node or the Vertex node.

Scatter — This node distributes new points across the surface in a roughly uniform pattern and optionally attempts to limit clumping and holes. For volume primitives, this node scatters points through the volume with a density proportional to the field value (with negative values giving zero probability). We can use the generated points for a variety of purposes. They may be used to specify birthing locations for particles, template points for copying, cell points for fracturing geometry, or as queues for irradiance computations. We can specify the density, the number of points per unit of area, (length for curves, volume for volumes and tetrahedra), optionally weighted by an attribute to control the distribution over the surface of the geometry. We can also scatter points with the density based on a texture map by scattering in texture space.

Remesh — This node tries to maximize the smallest angle in each triangle. (A “high quality” triangle mesh is one where all angles are as close as possible to 60 degrees.) Two types of remeshing: Uniform — The node tries to equalize all edge lengths, giving triangles of equal size. Adaptive — The node uses bigger triangles in broad areas and smaller triangles in detailed areas. This uses allows you to represent the original surface with fewer triangles. However, since edge lengths vary, this mode will have fewer equilateral triangles than Uniform.

Divide — Smooth by subdividing . Cleanup polygons: fix concave polygons, divide N-side polygons into triangles or quads with optional brickered layout, triangulate non-planar polygons.

Copytopoint — This is very useful for populating scenes with repeated elements such as trees, buildings, or snowflakes with full control over the placement of the copies. To simply create multiple copies of geometry without needing target points, use Duplicate. For example, we can arrange copies in a spherical shape by copying them onto the points of polygonal sphere. Or we could scatter points across a terrain geometry and copy trees onto the points. Note that this node creates additional geometry in the scene for each copy. 

Booleanfracture — This SOP fractures the input mesh using one or more cutting surfaces. Similar to Voronoi fracture, this is a higher-level node that handles common fracturing-related tasks such as naming pieces, recomputing normals, and building constraints between adjacent pieces.

Vdbfrompolygon — Convert polygonal surfaces, or surface attributes, to VDB volume elements. The geometry of the object input must be a quadrilateral, or a triangular face. This node creates a signed SDF field, or density field, from the polygon.

Voronoi fracture — The input geometry is broken by performing a Voronoi shattering around the input cell. Voronoi fracture SOP takes two initial input objects: the mesh to be broken and the point around which the broken unit is built. In general, these points can be generated by scatter or pointsfromvolume SOP. For solid fragmentation (internal faces will be built for each fragment), we can make all points have rough volume edges. In this case, fragments will be generated for each unit point. The fragments cut by the SOP are further aggregated (based on the attribute values at the input points).

Exploded view — Push the geometry from the center to the outside to create an explosive effect and visualize the fragmentation of the geometry. The number of Uniform Scale extension fragments. Each fragment moves the distance length proportionally. A value of 1 doubles the size of the object. To cancel scale out 1, use the scale in value. 0.5.

RBDMaterialFracture — This node allows you to accurately fracture geometry based on a specific type of material. Currently concrete, glass panels, and wood are supported. It accepts four inputs: geometry, constraint geometry, proxy geometry, and an optional input for extra points to control the fracturing process. It will fracture the incoming geometry using different fracturing method depending on the material specified in the Material Type parameter. If an input constraint geometry is specified, it will update the constraints for the fractured pieces.

Transformpieces — The Transform Pieces SOP can be used to transform input geometry according to transformation attributes on the template geometry, according to the rules and precedences described in Copy and Instancing operations . The template geometry to use for each piece of input geometry is determined by by attributes on the geometries and the Attribute Mode parameter. This node can be used in combination with a DOP Import node in Create Points to Represent Objects mode to transform the results of a multi-piece RBD simulation.

Dopimport — The DOP Import SOP imports geometry from a DOP network, and can also transform the input geometry based on the transforms of the DOP objects. The Import Style parameter can be used to select between several modes of operation. DOP objects have two distinct transforms associated with them. One comes from the Position data attached to the object. The other comes from the Geometry data on the object, which has an inherent transform associated with it. This SOP can apply either, both, or neither of these two transforms. It can also apply the inverse transform to effectively undo the transform operation of another Dop Import SOP. The Dop Import SOP also allows the transformation of selected vector attributes for points and primitives.

Rbdinteriordetail — This SOP creates additional detail on the interior surfaces of fractured geometry, which can be used to produce more interesting high resolution geometry. The amount of noise added to the points can be scaled based on their distance from the original surface.

Dynamic Nodes

Rigidbodysolver — The RBD Solver DOP sets objects to use the Rigid Body Dynamics solver. If an object has this DOP as its Solver subdata, it will evolve itself as an RBD Object. This solver is a union of two different rigid body engines, the RBD engine and the Bullet engine. The RBD engine uses volumes and is useful for complicated, deforming, stacked, geometry. The Bullet engine offers simpler collision shapes and is suitable for fast, large-scale simulations. The RBD and Bullet engines also have support for voronoi fracturing. 

Bulletrbdsolver — The Bullet Solver DOP sets objects to use the Bullet Dynamics solver. This solver can use simplified representation of the objects, such as boxes or spheres, or a composite of these simple shapes to make-up a more complex shape. This solver can use arbitrary convex shapes based on the geometry points of the object, and can also collide objects against affectors that are cloth, solid, or wire objects.

Groundplane — The Ground Plane DOP creates a ground plane inside the DOP simulation. It creates a new object that has a simple grid geometry attached to it. The grid has a Volumetric Representation attached which simulates an infinitely large plane. This can be used as a collision surface for RBD or Cloth simulations. Because the ground plane can be moved and reoriented, several ground planes can be used to box in an object.

Rbdpackedobject — The RBD Packed Object DOP creates a single DOP Object inside the DOP simulation. It takes the geometry from the given SOP Path and uses each primitive that has a transform and a single point to represent an RBD object. This includes primitives such as packed primitives, spheres, and tubes. Each primitive provides the collision geometry for a rigid body, and attributes on the primitive’s point are used to store information such as orientation, mass, and velocity.

Constraintnetwork — The constraint network defines pairs of RBD objects that should be constrained together. With the constraint network, SOP Geometry is specified which defines what objects should be constrained. This makes it easy to procedurally generate a set of constraint relationships, including constraints of different types.

Glueconrel — The Glue Constraint Relationship DOP is one of several constraint relationship data types. These constraint relationships can be attached as subdata to a Constraint Network DOP node to control the relationships defined by the constraint network. In a Glue Constraint Relationship, the objects move as one whole object until enough force is applied to break the glue bond. Glue constraints can only be broken by things colliding with them, generating an impact. This constraint type is currently only supported by the Bullet Solver.

Simulation 1

Gravity and Groundplane

change the bounce to change the bouncing degree or fiction to control the speed of stop

Add transformpieces + dopimport to make the simulation faster

Constraints

Then I replaced my model and tried to adjust three different constraint values in the hope that the effect of each fragmentation would be different.

House Destruction

At the beginning, I didn’t want to use the wooden house I made in Houdini, so I found a lot of materials on the Internet, but every time I import it, there will be some broken faces. Maybe it’s because the model itself has overlapping faces when it is made in Maya, so that almost every model can be used. Then I thought of simplifying the model, using the simplest model to do it, and finally ensuring all the requirements After the models are complete and correct, the normal design finally appears.

So I added some details. The Scatter Point and Volume Resolution.

Add Rbdbulletsolver and add Groundplane

Rbdbulletsolver

he RBD Bullet Solver is a wrapper around a DOP network to simplify the running of Bullet simulations.

  • The first input is the render geometry. It will be used as simulation geometry if none is provided in the third input. 
  • The second input is the constraint geometry, used to instantiate dynamic constraint relationships between simulated pieces.
  • The third input is the proxy geometry, a simplified representation of the render geometry, better suited for fast simulations. It will be used as the simulation geometry when provided.
  • The fourth input provides the collision geometry. Packed geometry is recognized and can be configured with the RBD Configure SOP to drive their behavior individually. Some pieces could be animated, some pieces set to deform, while others may be set to use spheres as geometry representation.

Make the rest part of the house still (constraints)

Weaken the primary strength to make the destruction smooth

Group — Select the face the make it unaffected (click the arrow and select the face then enter)

Attribcreate — The attribute can be a float, integer, vector, or string type. If the local variable name is not specified, the attribute name (all in upper case) will be used. After adding a user attribute, the local variable can be used anywhere in operations where local variables are allowed.

Wooden House Destruction

make the wooden break

Q&A

  1. I want to destruct according to different materials. I have divided into groups, but in blast, the group I selected is not displayed correctly.
  2. There are some models found on the Internet. I find that there is no problem when they are displayed. Once rbdmaterialfracture node is to be carried out, there will be some strange displays and broken surfaces. How to correct this.
This entry was posted in Houdini & Lighting. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.