Stoke MX Overview
What Is Stoke MX?
Stoke MX is an easy to use Particle Simulator designed to simplify the creation of high volume particle clouds driven by Velocity Fields.
Supported Velocity Field sources include FumeFX and Ember simulations, other particle animations from Particle Flow, Thinking Particles or external particle file sequences in PRT or RealFlow BIN formats, 3ds Max Force SpaceWarps etc.
Where Does It Fit In The Thinkbox Product Family?
- Stoke MX is based on Krakatoa and Ember core technologies.
- Stoke MX is a valid Krakatoa MX rendering particle source.
- Stoke MX supports all Krakatoa MX PRT objects as "Distribution Sources" to seed dynamic particles based on other particles.
- Stoke MX accepts Krakatoa Magma and Krakatoa Delete modifiers for channel post-processing and particle culling.
- Stoke MX produces PRT file sequences that can be loaded with Krakatoa PRT Loaders.
- Stoke MX particles can be meshed directly using the FROST particle mesher (v1.3.5 or higher).
Video courtesy of Torbjorn Olsson
Simplicity vs Flexibility
- Stoke MX was specifically designed to be as streamlined and simple to use as possible while not sacrificing any of the flexibility typical of Thinkbox solutions like Krakatoa or Frost.
- Stoke MX provides a highly streamlined User Interface and can be operated with just a few clicks. It is extremely easy to learn and use.
- At the same time Stoke MX was designed to interoperate with the majority of the Thinkbox products including Krakatoa, Frost, Genome and Ember, as well as their Magma node based channel editors.
- Thus Stoke MX' power can be expanded by using it together with the other products, but they are not required for the solving of most typical particle reflowing cases.
- Stoke MX was specifically designed to accelerate the generation of high-count particle clouds driven by fluid simulation data, in particular FumeFX data.
- Stoke MX is multi-threaded and uses some other acceleration approaches to simplify the iterative design process.
- Stoke MX implements an asynchronous PRT caching mechanism which can offset the particle saving time and improve interactivity to a very high extent.
- Stoke MX is even faster when sampling data from the emitter - in fact, sampling additional channels adds no measurable overhead. In such cases, Stoke MX is nearly 3 times faster than alternative solutions in simulation performance alone.
- Stoke MX can accelerate particle creation indirectly by helping increase the count of existing low-count simulations. The velocities of the original simulation can be used to drive Stoke particles to produce similar motion. In these cases, Stoke MX can be up to 7 times faster than simulating the actual high-count cloud with the original system (measured on an 8 core machine)
- When simulating AND saving particles to PRTs, Stoke MX can be an order of magnitude faster than alternative solutions thanks to its asynchronous disk caching system. For example, emitting one million particles over 100 frames in Particle Flow and saving to disk using Krakatoa partitioning takes 160 seconds, while Stoke MX with 2GB memory cache finishes the simulation and is ready to play back interactively in only 7.5 seconds, or over 21 times faster! The actual saving to disk is performed by background threads and does not prevent the user from continuing work on the scene.
- Like most other Thinkbox Software products, Stoke MX uses a hybrid C++/MAXScript architecture.
- All particle creation and simulation operations are implemented in C++ using the high-performance libraries found in the cores of other plugins like Krakatoa and Ember.
- These operations are exposed to MAXScript using a MAXScript Interface.
- The Stoke MX User Interface and the actual simulation process are both implemented in MAXScript and can be modified, expanded, studied and used as a starting point to develop custom simulation tools.
Stoke MX Major Features
- Stoke MX can create particles from one or more geometry objects by seeding random points on their surfaces.
- This is similar to using a PFlow Position Object operator, but is faster and has some additional useful options:
- Any geometry channels typically available to a Genome modifier are also provided as optional channels for the new particles and can be acquired without any overhead.
- The birth from geometry surface can be set to emit from the whole object, from selected faces or by respecting the Vertex Soft Selection, thus producing gradual variation in the density.
- Stoke MX can also emit particles from mesh Vertices or Edges, optionally respecting the Vertex Soft-Selection.
- Stoke MX can emit directly from mesh Volumes. This is similar to the PFlow Position Object in Volume mode, but many times faster and based on the same approach as the Krakatoa PRT Volume object.
- Stoke MX can create new particles from existing particles in Krakatoa PRT objects including PRT Loaders, PRT Volumes, PRT Surfaces, PRT Makers, PRT Hairs and so on.
- The existing particle cloud is used as an array of "seeds" which are selected randomly to spawn new particles if the birth rate is lower than the total count of seed particles.
- If the birth rate is higher, multiple particles will be created from each seed, but will be jittered in time and space to produce slightly randomized samples that advect differently.
- Optionally, each Emission object that provides seeding particles can be set to emit exactly one new particle per seed particle via an Auto-Rate mode. This can be used to exactly replicate a PRT object while turning it into a dynamic, simulated cloud. For example, an otherwise static PRT Volume or PRT Maker can be turned into an animated cloud by affecting it with velocity fields from Force Space Warps or FumeFX simulations.
- When emitting from a PRT Loader with valid ID and Age channels in Auto-Rate mode, Stoke MX can emit particles only from newborn seed particles, thus replicating the particle distribution of the source system over time and producing exactly the same particle count over time.
- Stoke MX also supports direct emission from 3ds Max Particle Systems including Particle Flow and Thinking Particles without intermediate saving.
- Using the existing family of PRT objects shipping with Krakatoa, Stoke MX can indirectly emit from Mesh Volumes, Mesh Surfaces, Splines, Max Hair, HairFarm and Ornatrix hair splines, PRT Maker fractals and procedural particle desitributions, FumeFX Fire and Smoke and even 3rd party external sources thanks to the PRT Source object.
- Particles saved to PRT, BIN or CSV file format and loaded by a PRT Loader can also be used as Stoke seeds.
- The Birth settings allow the creation of particles within a specified time interval.
- Any number of Distribution Source objects can be specified .
- The Birth Rate can be specified per Distribution Source as absolute values per Frame, as total Rate for the whole simulation using the per-object values to define the distribution ratios, the Total Rate can be split equally between the active sources, or it can be used as absolute value for every object.
- Both the global Rate and the per-object Rates can be keyframed to change over time.
- Stoke MX supports 3ds Max Force SpaceWarps as Velocity Fields - other than 3ds Max particle systems, the values of the Space Warp are taken as absolute velocity value and not as a force to accelerate the particle. This means that no additioanl Drag Force is necessary to prevent the particle from getting too fast over time. The result is good looking motion, every time.
- Stoke MX supports FumeFX simulation objects as Velocity Fields directly. Simply pick a FumeFX simulation grid and your particles will follow it.
- Stoke MX supports Thinkbox' upcoming Ember simulation objects as Velocity Fields sources. Ember is the ultimate Field Manipulation Toolkit for 3ds Max and can be used to create Velocity data for Stoke from all kinds of sources including texture maps, moving particles, geometry objects, FumeFX simulations and any combination thereof.
- Stoke MX supports particles as Velocity Fields. All 3ds Max particle systems including Particle Flow, Thinking Particles, legacy particles and all Krakatoa PRT Objects capable of providing a Velocity channel are supported.
- Stoke MX supports the mixing of multiple Velocity Fields. This can also be achieved through Ember for added flexibility.
- The Velocity Field influence can be scaled by a user-defined factor which can be animated over time individually for each source.
Particle Life and Death
- The Particle Age and LifeSpan will be set at birth for all particles.
- The Particles with Age exceeding the LifeSpan value can be optionally deleted during the simulation.
- If the "dead" particles are not removed during the simulation, Krakatoa Magma and Delete modifiers can be used to perform the deleting "in post". This also allows the changing of the LifeSpan procedurally after the fact by either extending it for all particles, or scaling it proportionally.
- The Age and LifeSpan channels are always saved to PRT and are expressed in floating point time in seconds (other PRT sources like Particle Flow saved through Krakatoa still save Integer Ticks)
- Other particle channels like Color, Density, Emission and so on can be easily modified using the Age and LifeSpan via a Krakatoa Magma modifier.
- When a particle is born in Stoke MX, it will inherit the channels of the "seed" particle.
- Stoke MX provides a list of all channels found in the sources with checkboxes to define which channels to save to PRT files and which to ignore.
- Thanks to this, it is possible to turn a static particle system (for example a PRT Volume, PRT Surfrace, PRT Maker etc.) into a dynamic Stoke MX particle system by emitting one particle for every seed particle.
- This also means that Magma modifiers that operate on the seed particles can be applied to the animated Stoke MX particles and will find the same channels and generally continue working as expected.
- If the Position of the seed particles was saved in a mapping coordinates channel, this channel will be inherited by the Stoke particles at birth but will not change during the animation, thus allowsing for "sticky" textures that follow the dynamically simulated Stoke particles.
- Stoke MX supports a fast memory cache coupled with a write-through asynchronois disk cache which uses regular PRT files and can become the final output if desired (Beta 3 and higher).
- Memory Caching allows the storage of an animated sequence in RAM and enables very fast viewport playback and direct rendering in Krakatoa.
- Disk Caching creates a PRT sequence which can be loaded dynamically by the memory cache within specified memory limits, or via a regular Krakatoa PRT Loader for editing, playback and rendering.
- The Stoke MX object accepts Krakatoa Magma and Delete modifiers and can be modified directly based on the particle channels.
- The Playback can be tweaked using the same Playback Graph feature as the one found in the Krakatoa PRT Loader.
- Cubic sub-frame interpolation is supported for smooth retiming even with extremely sparse settings.
- Memory Caching can be set to store every Nth frame to save memory. Even storing every 10th frame allows for very plausible playback when Interpolation is on.
- Playing back past the last cached frame will interpolate the positions further based on the last known positions and velocities.
- The Memory Cache playback can display particles as Large Dots or Lines using Velocity or any other available Vector channel. Vectors can be displayed as raw data or as normalized vectors, with optional Scaling factor.
- The particle Color can be set using the Color, Velocity, or any other Vector channel. Advanced control is available via the Krakatoa Magma modifier.