OmniGraph Blast Node Documentation

WARNING: Some OmniGraph nodes needed to support Blast fracture are currently broken or unavailable (import_usd_prim_data and particle_system_scatter_points). Please check back later for Blast integration into OmniGraph.

This doc describes the Blast nodes for use in the OmniGraph system. You can find them under “omni.blast” in the “Add node” right click menu or the pop out side bar.

NOTE: The nodes automatically update the USD stage. It is possible for them to get out of sync. If that happens just save and reload the scene. That will cause the Blast data to regenerate and should get things back in sync.

Authoring: Combine

The Combine node takes two mesh or destructible prims and combines them into a single destructible. These can be chained together to create complex destructibles built out of many parts.

The output of this can also be sent to Fracture nodes to break them down. Note that fracturing after combine will apply to all parts that are touched by the point cloud. If you want points to only apply to a specific part, run it through Fracture first, then combine it to simplify the process.

Input

Description

prim1

Prim to use as input to fracture. Connect to “destructible” output from another Blast node or “output” from an “import USD prim data” node. The import node should be connected to a mesh or xform/scope containing meshes.

prim2

Prim to use as input to fracture. Connect to “destructible” output from another Blast node or “output” from an “import USD prim data” node. The import node should be connected to a mesh or xform/scope containing meshes.

contactThreshold

Force from impact must be larger than this value to be used to apply damage. Set higher to prevent small movements from breaking bonds.

bondStrength

Base value to use for bond strength. How it is applied depends on the mode used. Bond strength is automatically recalculated when this changes.

bondStrengthMode

Controls how the Default Bond Strength is used. Bond strength is automatically recalculated when this changes.

“areaInstance”: (Default) Multiply the default value by the area of the bond using destructible instance scale.
“areaBase”: Multiply the default value by the area of the bond using destructible base scale.
“absolute”: Use the default value directly.

maxContactImpulse

Force that PhysX can use to prevent objects from penetrating. It is only used for kinematic destructibles that are attached to the world. This can approximate brittle materials by setting the value low, giving the bonds a chance to break before the objects are pushed apart.

damageMinRadius

Full damage from user generated fracture event is applied inside this radius.

damageMaxRadius

No damage from user generated fracture event is applied outside this radius.

impactDamageScale

Scale physical impacts by this amount when applying damage from collisions.

impactClusterRadius

If positive, contact reports will be aggregated into clusters of approximately the given radius, and damage accumulated for that cluster. The cluster will be reported as one damage event.

allowSelfDamage

If on, chunks from a destructible actor may cause damage to sibling actors. Default behavior for legacy assets is to disable self-damage, which changes the legacy behavior.

Output

Description

destructible

Result of the combine operation. Can be used as the input prim to another Blast authoring node.

../_images/combine_node.png

Example usage of a Combine node.

Authoring: Fracture

The Fracture node takes a mesh or destructible and fractures it based on a point cloud input. For best results, the mesh should be closed and not contain degenerate triangles. Input points that are inside of the mesh will be used to generate Voronoi sites, points outside of the mesh are ignored.

Sending in an already fractured mesh to another fracture node will create layers of fracture. The newly generated chunks from the first fracture will be fractured again using another set of points. This allows you to sculpt the detail and density in areas that you want it without requiring the entire mesh to be broken up at that fidelity.

During simulation if all children of a given parent chunk are still intact, then the parent will be rendered instead.

Input

Description

prim

Prim to use as input to fracture. Connect to “destructible” output from another Blast node or “output” from an “import USD prim data” node. The import node should be connected to a mesh prim.

points

Point cloud to use for fracture. Points inside will be used as Voronoi sites, points outside will be ignored.

contactThreshold

Force from impact must be larger than this value to be used to apply damage. Set higher to prevent small movements from breaking bonds.

bondStrength

Base value to use for bond strength. How it is applied depends on the mode used. Bond strength is automatically recalculated when this changes.

bondStrengthMode

Controls how the Default Bond Strength is used. Bond strength is automatically recalculated when this changes.

“areaInstance”: (Default) Multiply the default value by the area of the bond using destructible instance scale.
“areaBase”: Multiply the default value by the area of the bond using destructible base scale.
“absolute”: Use the default value directly.

interiorMaterial

Path to material to use for interior faces created through fracture.

maxContactImpulse

Force that PhysX can use to prevent objects from penetrating. It is only used for kinematic destructibles that are attached to the world. This can approximate brittle materials by setting the value low, giving the bonds a chance to break before the objects are pushed apart.

interiorUvScale

UV scale to use on interior faces generated through fracture.

damageMinRadius

Full damage from user generated fracture event is applied inside this radius.

damageMaxRadius

No damage from user generated fracture event is applied outside this radius.

impactDamageScale

Scale physical impacts by this amount when applying damage from collisions.

impactClusterRadius

If positive, contact reports will be aggregated into clusters of approximately the given radius, and damage accumulated for that cluster. The cluster will be reported as one damage event.

allowSelfDamage

If on, chunks from a destructible actor may cause damage to sibling actors. Default behavior for legacy assets is to disable self-damage, which changes the legacy behavior.

Output

Description

destructible

Result of the fracture operation. Can be used as the input prim to another Blast authoring node.

../_images/fracture_node.png

Example usage of a Fracture node.

Events: Flow Adapter

The Events Flow Adapter node takes a bundle of active events and translates it into outputs that can drive Flow emitter prim attributes.

Currently only one layer is supported for all events. Work is ongoing to support visible materials mapping to Flow data via a new schema, and for Flow emitters to be able to emit on multiple layers from a single input stream of data. Then events will use material data to drive emission specific to that material.

Input

Description

events

Bundle of events that can be processed by adapter nodes.

Output

Description

positions

Unique world space vectors.

faceVertexIndices

Indices into “positions” used to build faces.

faceVertexCounts

Defines how many indices make up each face.

velocities

Per vertex velocity.

coupleRateSmokes

Per vertex emission rate.

NOTE: The outputs prefixed with “subset” are not intended to be used yet. They will support multiple layers in the event bundle being passed to Flow when materials can be mapped to Flow layer IDs and Flow emitters support multiple layers.

Experimental Output

Description

subsetLayers

Flow layer IDs referenced by faces. It is possible for their to be duplicates.

subsetFaceCounts

Number of faces each layer ID slot represents. Faces are grouped by layer ID.

subsetEnabledStatus

Tells Flow emitter if each block of faces is enabled. Allows other data to be cached.

../_images/flow_adapter_node.png

Example usage of a Flow apater node.

Events: Gather

The Events Gather node takes no inputs and produces a bundle of active events. These can come from bonds breaking and contacts between objects.

  • Destruction events are generated for all Blast based prims when bonds break.

  • Collision events are reported for all prims that have the rigid body and report contacts APIs applied.

The output of this can be sent to adapter nodes to generate responses to the events.

Visual materials should have the Rigid Body Material applied. This can be added by selecting the material and doing Add -> Physics -> Rigid Body Material. It is needed to report the correct materials for collision events. This is not strictly required yet, but will be when multiple materials are fully supported by this system.

../_images/add_rb_material.png

Input

Description

None

Output

Description

events

Bundle of events that can be processed by adapter nodes.

../_images/gather_node.png

Example usage of a gather node.