| Previous Topic (Particle Culling) | Up (PRT Loader) | Next Topic (None) |
Particle Deformations
Introduction
Krakatoa gives you the capability to deform particle clouds using standard 3ds Max deformation modifiers and Space Warps. This feature allows you to combine for example Particle Flow output with standard modeling procedures, like simulating a particle trail once and re-using multiple times by bending it along various splines using PathDeform, even loading splashes from RealFlow simulations and tweaking them to match your scene using FreeFormDeformation lattices, Bend modifiers and so on.
Modifier Types
3ds Max distinguishes between
- Object Space Modifiers (OSMs) which are applied to the modifier stack after the base object but before node transforms
- World Space Modifiers (WSMs) which are applied to the modifier stack after the node transforms, the OSMs and the base object.
- Space Warps which are the original form of the WSMs and are created as separate objects in the scene. Their influence is defined by the Space Warp Binding placed on the stack after the node transforms.
Krakatoa supports most modifiers that have a gizmo and were designed to deform objects without altering topology or working directly with geometry vertices. Such modifiers like Bend, Twist, Noise etc. have been implemented to work on arbitrary geometry classes including TriMesh, Polygons, Shapes, Patches and NURBS - instead of modifying TriMesh vertices, they accept a virtual array of points to be deformed based on the gizmo transformation and size.
The Krakatoa Particle Loader does NOT generate geometry vertices but passes such a virtual array of points in multiple blocks through the modifiers on the stack. As result, performance is exceptionally high - in fact, adding a modifier to a PRT Loader with several million particles should have no measurable effect on the rendering performance!
Example

- The Red particle system was created using a simple Particle Flow emitting from a Circle Icon with a varying speed over 100 frames. The system was saved to a PRT file sequence, loaded using a Particle Loader object and colored using a Standard Material with a Noise Map using red and dark blue colors.
- The Green particle system is a copy of the same Particle Loader but with a binding to a Bend Space Warp with a gizmo approximately matching the bounding box of the particle system and a bend angle of 180 degrees.
- The Blue particle system is a copy of the same Particle Loader but with a binding to a Noise Space Warp.
- The Orange particle system is a copy of the same Particle Loader but with two deformations. First, an Object Space Modifier of type Noise was applied to the Particle Loader, then the resulting system was sent along a user-defined spline via a Path Deform World Space Modifier. The particle system was stretched 50% to cover the path better.
Gizmo Size and Alignment
- Space Warps typically provide their own gizmos in world-space, including full control over size and placement. Both the Space Warp gizmo and the PRT Loader can be animated over time to create world-space-based effects.
- World Space Modifiers typically use other objects (splines, patches or NURBS surfaces) to define their influence. Thus, they are a special case of Space Warps. These objects can also be freely animated, and the PRT Loader can be animated to move relatively to them to create world-space based deformations.
- Object Space Modifiers require a gizmo resized to the dimensions of the object being deformed.
- Since the bounding box of a particle system is constantly changing and highly volatile -- it could change depending on display/render count, First N / Every Nth particle loading mode, Percentage value and so on -- the Krakatoa Particle Loader provides explicit controls over the X, Y and Z dimensions of the gizmo instead of using the actual particle cloud. This means that the gizmo size and orientation is relatively constant (except when the gizmo size spinners are animated). In addition, you can always transform the deformation gizmo relatively to the object space of the icon in Sub-Object mode of the modifier to get exactly the effect you want.
- The OSMs stick to the object space of the PRT Loader. Any position, rotation and scale transformations of the base object will scale the gizmo (and effect space) of the modifiers. This is consistent with the way they work with regular geometry objects.
Supported Modifiers and Space Warps
The Particle Loader currently supports the following deformation Space Warps, World Space Modifiers and Object Space Modifiers:
- All Modifier-Based Space Warps:
- Bend
- Noise
- Skew
- Taper
- Twist
- Stretch
- Most Geometric/Deformable Space Warps:
- FFD(Box)
- FFD(Cyl)
- Wave
- Ripple
- Displace
- Conform
- Some World Space Modifiers:
- Path Deform
- Patch Deform
- Surface Deform
- Some Deformation Object Space Modifiers:
- Bend
- Displace
- FFD 2x2x2
- FFD 3x3x3
- FFD 4x4x4
- FFD(Box)
- FFD(Cyl)
- Melt
- Noise
- Patch Deform
- Path Deform
- Ripple
- Skew
- Squeeze
- Stretch
- SurfDeform
- Twist
- Wave
- XForm
- 3rd party plugins based on the above modifiers (like Blur's Twist-O-Rama, Maelstrom) should also work.
- Scripted simpleMod modifiers are gizmo-based and can also be used.
NOTE: Particle Culling in the PRT Loader will be applied AFTER all deformations, like a top-level Space Warp, because it is based on world-space transformations of the PRT Loader and the Culling Volumes.
Unsupported Modifiers and Space Warps
- Deformation Modifiers using complex custom modifier contexts like Skin and SkinWrap are currently NOT supported and can even destabilize 3ds Max.
- Any modifiers that operate on geometry vertices, faces or edges or change geometry tolopogy (like Normal, Smooth, Push, EditMesh, EditPoly, Lattice and so on)
- Any Space Warps that provide forces for Particle Systems. NOTE that you can load your PRT sequence in Particle Flow using the Krakatoa Operators and set the File Position's influence to less than 1.0 to apply Space Warp forces to your saved particles!
Deformation Motion Blur Support
The velocity vectors of all deformed particles will be correctly modified together with the particle positions.
- Existing velocity vectors will be deformed to match the effect of the modifier.
For example, a particle system with particles moving up deformed using a Bend Space Warp or OSM will have the velocities pointing along the new direction of motion.
- Deformation effects will produce an additional velocity effect, even if the source particles files have velocity vectors with zero magnitude.
For example, static particles with all velocities saved as zero in the PRT file, if animated along a path using a PathDeform with the Percent value keyframed from 0 to 100 will receive correct velocities along the path: