Blast Destruction

Destruction and Fracture

../_images/kit_physics_blast_beauty.png

The Omniverse™ Blast Destruction (omni.blast) extension integrates the NVIDIA Omniverse™ Blast SDK into NVIDIA Omniverse™ Kit applications. It supports authoring of destructible content, and also implements destruction in Omniverse™ PhysX-driven simulation.

User Interface

../_images/kit_physics_blast_panel.png

Section

Control

Effect

Fracture Controls

Reset All to default
Num Voronoi Sites
Contact Threshold
Interior Material
Physics Mode
Apply Interior UV Scale
Interior UV Scale
Select Parent
Select Children
Fracture Selected
Random Seed
Auto Increment
Combine Selected
Recalculate Bond Strength
Recalculate Attachment
Make External Bonds Unbreakable
Reset Fracture Data
This button resets all fields to their default valuts.
The number of pieces in which to fracture the selected meshes.
The minimum contact impulse to trigger a contact event with a destructible.
The material to display on the newly created (interior) faces.
The type of physics applied to the selected prim.
Apply the stretch value Interior UV Scale to selected chunks.
Stretch to apply to material textures on newly-created interior faces.
Select the parent(s) of the currently selected chunk(s). Removes children from selection set.
Select the children(s) of the currently selected chunk(s). Removes parents from selection set.
Fracture the selected mesh prim.
Seed value of pseudorandom number generator used during fracture operations.
If checked, the Random Seed will automatically increment after each fracture operation.
Combines the selected mesh prims into a “multi-root” destructible.
Set initial bond health based upon the contact area between chunks.
Search for nearby static or dynamic geometry and form bonds with that geometry.
Bonds created between a blast destructible and external geometry will never break.
Destroys all fracture information, restores original mesh.

Debug Visualization

Explode View Radius
View Chunk Depth
Internal Visualization
When Not simulating, separates the chunks for inspection and/or selection.
Which chunk hierarchy depth to render.
Debug visualization mode: Off, Visualize Selected, Visualize All.

Damage Event Settings

Damage Profile
Damage Amount
Damage Min Distance
Damage Max Distance
Damage Impulse
Impact Damage Scalar
Allow Self Damage
Impact Cluster Radius
Max Contact Impulse
Max New Actors Per Frame
Which damage program to run when a destructible actor receives a damage event.
The base damage amount for damage calculations.
The meaning of this depends on the damage profile (see below).
The radius outside which no damage is applied.
The outward impulse applied to fractured pieces.
A multiplier, contact impulses are multiplied by this amount to obtain a damage amount.
If On, chunks may damage sibling chunks (ones from the same destructible container).
If positive, a distance within which impact damage events may be combined, to reduce their number.
Applied to kinematic destructibles, limits the force applied to an impacting object.
Only this many Blast actors may be created per frame. Additional actors will be delayed to subsequent frames.

Important

Fracturing operations can increase geometry counts exponentially and has the potential to overwhelm computer resources. Use caution when increasing Number of Voronoi Sites.

Damage Profiles

Radial Damage (Falloff)

Simulates an explosion. Chunks/bonds within the damage range are damaged regardless of the graph topology. Full damage is done if the distance is between 0 and the min distance, no damage is done beyond the max distance. Between them, damage linearly decreases.

Radial Damage (Cutter)

Similar to Falloff, except damage inside the min distance is 0, in the range is the full damage amount, and beyond the max distance is 0.

Impact Spread

Simulates a physical impact. It assumes that position is somewhere on the chunk and looks for nearest chunk to this position and damages it. Then it does breadth-first support graph traversal. For damage falloff, distance is measured along the edges of the graph. That allows it to avoid damaging parts which are near in space but disjointed topologically. For example if you hit one column of an arc it would take much bigger max distance for damage to travel to the other column than in the simple radial damage. Damage falloff over distance is calculated the same way as radial falloff.

Tutorials

Getting Started

This tutorial shows initial setup.

First enable the Blast extension (if it isn’t already):

  • Navigate to Window > Extensions

  • Enable the Blast Destruction extension
    • You can check Autoload if you will be working with Blast frequently and don’t want to have to enable it by hand each time you load the application

  • Make sure it says UP TO DATE at the top of the extension details, if not, update to the latest release of the extension

Make sure there something for the mesh to interact with:

  • Navigate to Create > Physics > Physics Scene

  • And Create > Physics > Ground Plane

Next, create a mesh:

  • Navigate to Create > Mesh and pick a mesh primitive type to create (Cube, Sphere, etc)
    • Be sure not to select Create > Shape, those do not support fracture, it must be a “Mesh” type prim

    • Alternatively, you can load a mesh from another Usd source, just make sure it is a closed mesh

  • Set up any physics properties you want on the mesh
    • Right click on the mesh and navigate to Physics > Apply Preset > Rigid Body to make it dynamic and collideable

    • You can then change physics properties in the Properties > Physics panel

Now fracture it:

  • Make sure the mesh to fracture is selected

  • Locate the Blast pane (by default it docs in the same area as Console)

  • Adjust Blast settings as desired (see above for what the settings contol)

  • Click the Fracture Selected button to fracture it
    • This will deactivate the original mesh and select the new Blast container (prim named after source mesh with __blast in the name)

    • The original mesh is not altered and can be easily restored later if desired

  • Scrub/adjust the Debug Visualization > Explode View Radius in the Blast panel to review the fracture

Running the simulation (by pressing Play), the destructible falls to the ground and fractures due to impact damage.

Reset Fracture

Here we see how to undo a fracture operation:

  • Select the original mesh with Blast applied or the Blast container (prim named after source mesh with __blast in the name)

  • Click the Reset Fracture Data button

  • Dialogue will warn of deletion permanency; agree to delete

  • This will remove all Blast data generated and re-activate the source mesh prim

In the video we change the Num Voronoi Sites number and re-fracture.

Multilevel Fracture

Here we see how to recursively fracture. This allows for higher overall detail with lower rendering and simulation cost by using a parent chunk for rendering and simulation until at least one child breaks off. It also allows for non-uniform fracture density throughout the mesh. Chunks of a fractured mesh may be broken down further:

  • Select a mesh with Blast applied

  • Adjust the explode view radius to make chunk selection easy

  • Select the desired chunk(s) to fracture further
    • You can also select them directly from Stage view under <Blast container> > chunks

  • Adjust the Num Voronoi Sites in the Blast panel to the desired number
    • Each chunk will be split into that many pieces

  • Click the Fracture Selected button to fracture the selected chunks

  • Changing the View Chunk Depth value selects different hierarchy depths to display

  • You may use the Select Parent and Select Children buttons to select up and down the hierarchy

  • Repeat as needed to get the desired level of granularity and fracture density throughout the mesh

Static Attachment

This tutorial shows the preferred way of creating a “static” destructible, by emulating an attachment to the static world:

  • Create a static collision mesh
    • Create/load a mesh

    • Right click on it

    • Navigate to Physics > Apply Preset > Collider

  • Create a destructible prim in the usual way (see Getting Started above)
    • Leave the source prim as dynamic, do not set to kinematic or static

  • Place the destructible prim adjacent to (or slightly overlapping) a static collision mesh

  • Select the Blast container prim

  • Set the state of Make External Bonds Unbreakable based on how you want the base to behave
    • When checked, the base pieces will remain kinematic no matter how much damage they take

    • This is a good idea if the Blast container is deeply penetrating the static geometry, otherwise physics will force them apart when the pieces become dynamic

    • When unchecked, the chunks can take damage and break free, becoming new dynamic rigid bodies

  • Press the Recalculate Attachment button to form bonds between the destructible and nearby static geometry (“external” bonds)

  • Debug visualization > Internal Visualization shows where external bonds have been formed when set to Selected or All

When simulating, the bonds formed keep the destructible “static” (kinematic). When bonds are damaged, chunk islands that are not connected via bonds to static geometry become separate dynamic bodies. The chunks that remain connected to static geometry via bonds remain kinematic.

Dynamic Attachment

Here we see how to turn a part of a rigid body into a destructible. If the rigid body consists of multiple meshes, we may select one and make it destructible:

  • Create a Xform prim to contain the meshes with Create > Xform

  • Create/load meshes and add them to the Xform container

  • Set the hierarchy as dynamic and collideable
    • Right click on the Xform prim

    • Navigate to Physics > Apply Preset > Rigid Body

    • This will automatically set the contained meshes as colliders

  • Select the mesh to make destructible

  • Click the Fracture Selected button to fracture the mesh as usual

  • Set the state of Make External Bonds Unbreakable based on how you want the base to behave
    • The same rules apply as for Static Attachment above

  • Press the Recalculate Attachment button
    • Bonds will be formed with any adjacent or overlapping collision geometry from the same rigid Body

When simulating, the destructible mesh will move with its parent physics as a single rigid body. When bonds are damaged, chunk islands that are not connected via bonds to the parent physics geometry become separate dynamic bodies. The chunks that remain connected to the parent physics geometry via bonds remain rigidly connected to the physics body.

Note, if no bonds were formed (because there was no adjacent or overlapping collision geometry from the parent rigid body), then all chunk islands become dynamic when the destructible is fractured.

Note

If Alt + Click does not “Explode” Mesh, Try increasing Damage Amount, Damage Radius and/or Explosive Impulse. Changing Material(s) requires re-fracturing Physics Properties of the Source Asset propagate to the fractured elements.