From PhysX Wiki
|Capabilities:||Fracturing, Destruction, Rigid body physics|
|GPU acceleration:||Rigid Body|
APEX Destruction (APEX D) is an APEX module, that helps developers to create and simulate large numbers of dynamic destructible game objects.
Destruction module is supporting PC (CPU and GPU), Xbox 360, PS3, PS4, iOS and Android platforms.
First public release - APEX Destruction 1.0 as part of APEX 1.0 Beta.
APEX Destruction module is focused on simulation of objects destruction - from vases and statues to walls and whole buildings, from purely visual to gameplay affecting destruction. APEX D uses artist-defined pre-fractured meshes, supplementary sub-systems to handle things like damage propagation and PhysX SDK driven rigid-body solver to calculate interaction between chunks and fragments.
To provide more complex and realistic destruction behavior, APEX D module includes specific funtionality, like:
- Hierarchical fracturing - all chunks are forming a hierarchical structure, from unfractured mesh to smallest fragments (deepest hierarchy level). Various settings can be applied per hierarchy level.
- Support system - if this feature is enabled, pieces (chunks) of the destructible object will be "held" together or will remain connected to the static environment, until enough damage is applied (either directly or through collision impact).
In 1.1 version and above it is possible to enable calculation of Rigid Body physics on GPU, and thus achieve superior performance in case if many rigid body objects are used. Furthermore, latest version of the module support two rigid body solvers: PhysX SDK 2.8.4 and PhysX SDK 3.2
Also, Destruction module can utilize APEX Particles to simulate dust, smallest debris and similar effects.
Authoring functionality is provided via PhysXLab, a standalone GUI authoring tool. Using PhysXLab, users can take artist-provided meshes, split them into broken fragments and export generated Destructible assets in standart APEX asset (.apx and .apb) file formats. Exported asset will include hierarchy of fractured meshes, collision information and physical material parameters, and support information for each chunk as well.
In general, several steps must be performed to create Destructible asset:
- Fracturing of initial graphical mesh using choosen pattern.
- Applying materials and textures.
- Setting up support system - support depth, support chunks, etc
- Specifying secondary parameters, like collision meshes, raycast and sweep settings.
- Testing completed asset in playground mode.
Several examples of authoring process can be viewed here
However, majority of the authoring features is not exclusive to PhysXLab - they are implemented in the APEX API itself, so one can integrate fracturing functionality in any existing editor.
Three slicing "patterns" are supported currently:
- Slicing - the mesh is sliced automatically along various axes (using plain or noisy slicing surfaces). Process is recursive, so that each piece obtained by slicing can be sliced again.
- Cut-out - in this case user supplies a fracture map in the form of a bitmap file, with fracture lines drawn on it. The mesh is then fractured along those lines.
- Voronoi - a mesh is split into pieces using 3D-Voronoi partition, which produces convex chunks.
- Fracturing groups (ability to use several fracturing patterns on a single mesh).
- Automatic convex decompositon for concave meshes (with ability to choose detalization of resulting physical mesh).
- Advanced UV mapping control.
- Noisy surfaces as displacement maps.
APEX Destruction module deals with three kinds of objects: Destructible assets, which are destructible template objects that may be generated in the PhysXLab or directly using the fracturing API; Destructible actors, which are instances of Destructible assets; Destructible actor joints - special wrappers for NxJoints which may be used to join an Destructible actor to another Destructible actor, an PhysX Actor, or to the static global reference frame.
As any other APEX modules, APEX D is featurung LOD mechanism to scale the physics computation. This includes several parameters:
- Maximum number of dynamic chunk islands/GPU rigid bodies.
- Lifetime and maximum distance from place of origin that chunks may exist.
- Chunk benefit weights, defined by angular size, distance from camera and age of the chunk.
- Furthermore, chunks can now be sorted by “benefit” so that less-beneficial chunks are removed first.
To speed up rendering, APEX D module is supporting instancing and tiling (between copies of same asset and similar chunks within one asset).
- Impact damage calculation.
- Stress solver.
- Fracture event callbacks.
- Per-actor materials.
- Chunk creation can be amortized over many frames.
- Multiple-collision hulls per chunk.
- Debug visualization.
|APEX Destruction 1.2||Aug 6, 2012||First release to support PhysX SDK 2.8.4 and PhysX SDK 3.2 engines. Includes various authoring improvements, like Voronoi fracture, fracturing groups, etc.|
|APEX Destruction 1.1||Feb 15, 2012||Updated public release. Features GPU acceleration support for Rigid Body simulation, tiling and instancing for faster rendering, amortization of chunks creation and processing. Uses PhysX SDK 2.8.4|
|APEX Destruction 1.0||Mar 24, 2011||First public release. Includes various improvements and bug-fixes, such as more robust LOD feature, increased number of chunks per asset (64k > 4kkk), improved impact damage behaviour. Uses PhysX SDK 2.8.4|
|APEX Destruction 0.9||N/A||Initial internal release. Uses PhysX SDK 2.8.3|
Latest APEX Destruction 1.2 module is included in public build of APEX SDK 1.2
For info on Destruction module licensing options, please refer to APEX SDK description
Games and game engine integrations
APEX Destruction module was used in following games:
- Wreckateer (Xbox 360, CPU)
- Alice: Madness Returns (GPU)
- Batman: Arkham Asylum (GPU)
APEX Destruction module is integrated into following engines:
- Unreal Engine 3/Unreal Development Kit (Epic Games)
- Illusion Engine (2K Czech)
- APEX Destruction 1.3 release, coming late 2012/early 2013, is rumored to support realtime fracturing functionality.
- NVIDIA APEX - Official page
- APEX Destruction - Unreal Developer Network
- APEX - DevZone Forums
- APEX Destruction presentation from MIGS 2011
- APEX Destruction and PhysXLab tutorials (official from NVIDIA)
- Supplementary files for NVIDIA tutorials (textures, models, etc)
- APEX Destruction and UDK tutorials (user made, 4 parts)
- Fracture Maps and UDK Import tutorial (user made)