From PhysX Wiki
|Authoring application(s):||PhysX plug-in for 3ds Max|
|Capabilities:||Fracturing, Destruction, Rigid body physics|
|GPU acceleration:||Rigid Body|
APEX Destruction (PhysX Destruction) 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, Xbox One, 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.x
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, or PhysX plug-in for 3ds Max. Using PhysXLab / DCC Plug-in, 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.
APEX 1.3 has introduced limited support for real-time fracturing. So far, only glass fracture pattern is supported.
- Fracturing groups (ability to use several fracturing patterns on a single mesh).
- Behaviour groups (ability to have chunks with different destructible parameters withing single asset).
- Automatic convex decompositon for concave meshes (with ability to choose detalization of resulting physical mesh).
- Advanced UV mapping control.
- Noisy surfaces as displacement maps.
- Scatter meshes (instanced meshes, randomly scattered about the surface of fractured chunks).
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.
- Physics based stress solver.
- Real-time fracturing.
- Fracture event callbacks.
- Per-actor materials.
- Chunk creation can be amortized over many frames.
- Multiple-collision hulls per chunk.
- Debug visualization.
- Render Proxies functionality for multi-threaded rendering.
|APEX Destruction 1.3||Dec 11, 2013||Introduces real-time fracturing, behaviour groups, new damage system, render proxies. Supports PhysX SDK 3.3 and PhysX SDK 2.8.4 (excluded from public version).|
|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.3 module is included in public build of APEX SDK 1.3
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 (most notable examples):
- Batman: Arkham Knight (CPU, PhysX 3.x)
- Lords of the Fallen (CPU, PhysX 3.3)
- Wreckateer (Xbox 360, CPU)
- Alice: Madness Returns (GPU)
- Batman: Arkham Asylum (GPU)
APEX Destruction module is integrated into following engines:
- Unreal Engine 3 / Unreal Engine 4 (Epic Games)
- 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)