Blast Destruction

Overview

../_images/kit_physics_blast_beauty.png ../_images/kit_physics_blast_fire_egg.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 PhysX SDK-driven simulation.

Introductory Video

User Guide

Interface

The Blast window is divided into panels described in the following subsections.

Fracture Controls

These settings are used to author destructibles from mesh prims.

../_images/kit_physics_blast_panel_fracture_controls.png

Control

Effect

Combine Selected

Combines the selected mesh prims and/or destructible instances into a “multi-root” destructible.

Fracture Selected

Fracture the selected mesh prim.

Num Voronoi Sites

The number of pieces in which to fracture the selected meshes.

Random Seed

Seed value of pseudorandom number generator used during fracture operations.

Auto Increment

If checked, the Random Seed will automatically increment after each fracture operation.

Select Parent

Select the parent(s) of the currently selected chunk(s). Removes children from selection set.

Select Children

Select the children(s) of the currently selected chunk(s). Removes parents from selection set.

Select Source

Select the source prim associated with any part of the destructible.

Contact Threshold

The minimum contact impulse to trigger a contact event with a destructible.

Max Contact Impulse

Applied to kinematic destructibles, limits the force applied to an impacting object.

Interior Material

The material applied to faces generated through fracture. Can be set before or after fracture and will be applied to all descendants of the selected chunk(s).

Interior UV Scale

Stretch to apply to material textures on newly-created interior faces.

Apply Interior UV Scale

Apply the stretch value Interior UV Scale to selected chunks.

Recalculate Bond Strength

Set initial bond health based upon the contact area between chunks. This only needs to be used when chunk scale changes.

Default Bond Strength

The bond strength to be applied to all bonds unless a bond prim exists to override the value.

Bond Strength Mode

Options use the Default Bond Strength directly, or scale it by the bond’s surface area from the base or instance geometry).

Recalculate Attachment

Search for nearby static or dynamic geometry and form bonds with that geometry.

Make External Bonds Unbreakable

Bonds created between a blast destructible and external geometry will never break.

Remove External Bonds

Remove all bonds to external geometry.

Create Instance

Creates an instance based on the selected destructible base or instance. On instances, this is equivalent to using Kit’s duplicate command on the instance prim.

Reset Blast Data

Destroys fracture information, depending on the type of prim(s) selected:
Base selected - destroy all destruction info (including combine) and restores the orig mesh.
Instance selected - destroy the selected instance.
Anything else - search for chunks under selection and reset all fracture information for them.

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 Settings

These settings are applied to the selected destructible instance(s). They control how damage is processed during simulation.

../_images/kit_physics_blast_panel_damage_settings.png

Control

Effect

Damage Min Distance

The meaning of this depends on the damage profile (see below).

Damage Max Distance

The radius outside which no damage is applied.

Impact Damage Scale

A multiplier, contact impulses are multiplied by this amount to obtain a damage amount.

Allow Self Damage

If On, chunks may damage sibling chunks (ones from the same destructible container).

Impact Cluster Radius

If positive, a distance within which impact damage events may be combined, to reduce their number.

Global Simulation Settings

These settings are general simulation settings.

../_images/kit_physics_blast_panel_global_simulation_settings.png

Control

Effect

Max New Actors Per Frame

Only this many Blast actors may be created per frame. Additional actors will be delayed to subsequent frames.

Debug Visualization

These settings are used to visualize various aspects of a destructible.

../_images/kit_physics_blast_panel_debug_visualization.png

Control

Effect

Explode View Radius

When Not simulating, separates the chunks for inspection and/or selection.

View Chunk Depth

Which chunk hierarchy depth to render while in exploded view.

Internal Visualization

Debug visualization mode: Off, Visualize Selected, Visualize All. This shows representations of chunk centroids and bonds (drawn between the centroids). External bonds have a brown square around the bond centroid to distinguish them. The bond colors have meaning:
Green - the bond’s health is at or near its full value.
Red - the bond’s health is near zero. (Zero-health bonds are “broken” and not displayed.)
In Green -> Yellow -> Red continuum - the bond’s health is somewhere between zero and full value.
Light blue - the bond is an unbreakable external bond.

Debug Damage Tool Settings

These settings control damage applied using Shift+B+(Left Mouse) during simulation. This is only intended for testing the behavior of a destructible.

../_images/kit_physics_blast_panel_debug_damage_tool_settings.png

Control

Effect

Damage Profile

Which damage program to run when a destructible actor receives a damage event. A detailed description of the damage profiles is given in a subsequent section.

Damage Amount

The base damage amount for damage calculations.

Damage Impulse

The outward impulse applied to fractured pieces.

Damage Radius

The distance from the damage center (where the cursor is over scene geometry) to search for destructibles to damage.

Reset Button

../_images/kit_physics_blast_panel_reset_button.png

This button resets all controls in the Blast window to their default settings.

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.

Demo Scenes

Several demo scenes can be accessed through the physics demo scenes menu option (see the image below). This will enable a Physics Demo Scenes window, which has a Blast Samples section.

../_images/kit_physics_blast_demos.png

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 control)

  • 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.