Stoke 2.0.0.52570 (Beta 1)

After much anticipation and suspense, we proudly present STOKE 2.0. More great Stoke flavor with the same number of calories. Woooooooo! It would not be amiss to think of Stoke 2.0 as “Stoke 1.0 + Ember + Polish + Love”. Let us know what you do & don’t like. Feature requests are welcome, praise is encouraged, and criticisms will be tolerated with the utmost dignity.

A new Stoke license will be required. Contact sales AT thinkboxsoftware DOT com to get one.

(Attachments removed)

[size=200]WARNING![/size]
A vital script file was missing from the installer. Please copy the content of this ZIP file to C:\Program Files\Thinkbox\Stoke MX\Scripts\

(Attachment removed)

[size=200]Stoke MX 2.0 Beta 1 Release Notes[/size]

[size=150]Overview[/size]
Stoke MX 2.0 Beta 1 consists of all original Stoke MX 1.x code available commercially, plus all of the Ember MX project codebase, modified to follow the same Asynchronous principles.

The decision was made to retire the Ember name from the object names. They are now referenced as StokeField or just Field objects.

Stoke MX 2.0 Beta requires a Stoke 2.0 license. Please contact Sales to get one. In the current implementation, a license is required at object creation time. The actual licensing strategy is being discussed internally and will be modified in future builds.

Stoke MX 2.0 only supports 3ds Max 2013 and 3ds Max 2014. Support for earlier versions had to be dropped due to incompatibility between OpenVDB’s and 3ds Max’ TBB libraries.

[size=150]Stoke MX 2.0 Objects[/size]
Stoke MX 2.0 provides the following major components:

Field Magma – a history-independent, Magma-driven field generator. It is the fastest way for designing custom fields to affect Stoke particle simulations, Particle Flow simulations, generate Forces in all supported 3ds Max sub-systems, design fields to use as procedural maps and so on.

Field Simulator – a history-dependent, Magma-driven field simulator. It is a combination of the original Ember simulator, but updated to use the same implementation structure and UI as the Stoke particle simulator. It uses OpenVDB files for caching and lets you design your own simulation setups where the data is dependent between frames and a Velocity field can advect other fields (and itself).

Field Loader – a scene object for loading FumeFX FXD, OpenVDB VDB, and Field3D F3D files and file sequences. WORK IN PROGRESS! We consider this not ready for full testing because it operates in World Space in its current version and does not let you transform (translate, rotate, scale) the loaded data. You can pick the Field Loader as a valid field source in place of an actual FumeFX grid using the Stoke>InputField operator.

PRT Field – a scene object to convert any Stoke Field to Krakatoa-compatible particles. The PRT Field accepts the same modifiers as a PRT Loader (Magma modifier, Delete modifier, all Deformation modifiers) and can be rendered directly in Krakatoa. NOTE that in the current versions of Krakatoa, there is no dedicated option to turn off the rendering of PRT Field. In a future Krakatoa build, the PRT Ember option will be updated to PRT Field and will be actually implemented to support it. PRT Field is also a valid source for Frost meshing.

Field Force – a Space Warp which lets you convert any Vector field to a Force field. It can be applied to any 3ds Max sub-system supporting Forces, including MassFX, mCloth, Particle Flow, etc. Other than in Ember, you can now BIND the Field Force to legacy 3ds Max particles like SuperSpray to apply custom forces generated in a Field Magma or Field Simulator grid!

Field Texmap – a 3ds Max texture map which can be used in any mapping slot expecting a Color, Mono or Normal Perturbation (Bump) map input. In combination with the Field Magma object, it can be used as a form of a Magma-driven procedural map generator. The map can be assigned in World (default) or Object space. It cannot be previewed in the viewports, but you can use the display of the Field itself for preview purposes.

Stoke Field Follow Operator - a Particle Flow operator which allows you to assign Velocity and several other channels like Orientation, Scale, Selection etc. from Stoke Fields to PFlow particles. Using the Selection channel and the Split Selected operator, you can use Field Magma as an advanced control of PFlow logic to send particles to other Events based on decisions made in the Magma flow.

Mesh To Field Modifier – a modifier which turns any mesh object into a LevelSet or Density Field, with optional Closest Point Transform field. WORK IN PROGRESS – NOT READY FOR FULL TESTING. The main issue right now is that it produces the field in object space, ignoring the source mesh’s transform. This should be addressed in a later Beta build.

Field Display Modifier – a modifier which can resample any incoming field and visualize its channels. Note that the major object types (Field Magma, Field Sim and Field Loader) provide their own controls for controlling the Reduction and Channel display. The modifier adds the ability to perform custom Absolute or Relative resampling on top of the native resolution, and clamping of the Scalar field within a specific narrow band.

Field Fluid Motion Modifier – a modifier that can convert any Vector field to a Divergence-free field. Note that the same functionality is also available as Stoke>SimpleFluid operator in Magma.

[size=150]Field Objects And Magma[/size]
The Field Magma and Field Simulator objects use a slightly updated version of the same Magma tools familiar from Krakatoa MX and Genome MX.
Magma has been updated to allow a single Magma implementation to be used by all products in the future.

Currently, Magma Debugging is disabled. You can debug values indirectly using PRT Field and regular Krakatoa Magma. Error reporting is enabled though.

A brand new feature in Magma of Stoke MX 2.0 is the ability to expose the Enabled checkbox of Magma operators in the Command Panel. This means that you can now toggle any operator like SimpleFluid, Curve, Noise etc. on and off with a single click without opening the flow or using convoluted Switch setups.

[size=150]Field Objects And World Space Grids[/size]
To simplify the processing of fields inside the Magma flows, a design decision was made to keep all simulation and field creation in world space. This means that the Position channel inside the Magma flows represent the actual world space positions and the location of the object’s icon has NO influence on the simulation results. The Grid Bounds are thus also defined in world space. Dedicated Manipulators for resizing the grid interactively in the viewports are provided.

  • Drag a spherical handle with the mouse to extend the Grid in one direction.
  • Hold down SHIFT and drag a handle to resize the Grid symmetrically along one axis relative to the icon’s location.
  • Hold down CTRL+SHIFT and drag a handle to resize the Grid symmetrically along all 3 axes relative to the icon’s location.

You can use the buttons in the UI to center the Grid to the Icon, the Icon to the Grid, or move the Grid’s base to the Icon or the Icon to the Grid’s base.
In other words, the icon can be used indirectly for resizing and Grid translation purposes, but does NOT directly influence the calculations of the Magma flow.

When creating a Field Magma or Field Simulator with the mouse, by default the bottom of the grid will be centered at the location of the first click. Hold down CTRL to center the grid to the point and grow it symmetrically in all three directions.
Note that when creating with the mouse, the grid resolution will be kept constant (30x30x30 voxels), while the Spacing property will be adjusted as the grid changes size. Once the grid is created, changing its size will change the voxel count, or you can adjust the Spacing to increase/decrease the resolution.

The Field Magma can create procedural fields which are potentially valid everywhere in the world. To speed up processing, the option “Limit To Bounds” is checked by default and will only evaluate the Magma inside the Grid. Unchecking this option will make the Magma valid everywhere, including outside the Grid bounds. This can be useful when creating large scale fields to control Particle Flow channels, or generate procedural texture maps valid everywhere in World Space.
Note that applying grid-based operators within the Magma flow (e.g. SimpleFluid, Grid etc.), or dropping a Field Fluid Motion modifier to the stack will implicitly limit the data processing to the Grid bounds, but the simulation results will still depend on the “Limit To Bounds” checkbox state. For example, if advecting Particle Flow particles with a Field Magma and Fluid Motion modifier, the particles will stop at the grid’s border if the Limit To Bounds is unchecked (because there will be valid values outside the Grid to calculate with inside the Grid), and continue with the last Velocity if Limit To Bounds is checked (because the outside “does not exist” and no valid data will be passed to the Stoke Field Follow Velocity channel).

[size=150]Asynchronous Processing[/size]
The Asynchronous approach to simulation introduced in Stoke 1.0 was been extended to most areas of Stoke 2.0, in particular Field Simulator, Field Loader and the Field Modifiers.

The Field Simulator uses exactly the same approach as the Stoke object - multiple threads are used during the simulation to process the data, and multiple background threads are employed to cache the results asynchronously to VDB files.

The Field Loader will load data from the external file in a background thread. If the file is very large, you can continue working in the scene creating and modifying objects while the loading is performed in the background. A text informing you of the processing status of the object will be displayed in the viewports. The same applies to the Mesh To Field modifier converting complex meshes to fields.

[size=150]Automatic And Manual Reduction[/size]
A field is generally defined at any point within the domain (either inside the Grid, or in the case of Field Magma with a fully procedural definition and “Limit To Bounds” unchecked, anywhere), but the viewport display will normally draw exactly one point per voxel to visualize the data. The visualization is ALWAYS limited to the Grid bounds even if the field is valid outside of the Grid. In addition, in order to avoid system slowdown or running out of memory, Stoke Field objects will automatically reduce their display density as needed to retain interactivity. This is done by drawing every Nth voxel in every direction while skipping all other voxels. The current Reduction level will be displayed above the field in the viewport.

In addition to this automatic method, the Field objects and the Field Display modifier provide a Reduce parameter which defaults to 0. When set to 0, the Native resolution or the Automatic Reduction level will be displayed. If set to a value higher than the current Automatic Reduction level, the requested level will be enforced. Thus, if a field is showing with Automatic Reduction of 5 (drawing every 5th voxel), but you specified a level of 7, the viewport will be switched to Reduction of 7. But specifying a Reduce of 4 will NOT change the viewport and it will stay at 5.

This does not apply to the Absolute and Relative resampling options in the Field Display modifier which produce explicit resolutions that CAN bring down your system if you use unreasonable values.

[size=150]Stoke Menu And Macros[/size]
The Stoke 1.0 MacroScripts have been moved to the Stoke category of the Customize User Interface dialog. Additional MacroScripts have been provided for all major objects - Field Magma, Field Simulator, Field Loader, PRT Field and Field Force, as well as MacroScript for adding Modifiers to the current selection.

A Stoke menu similar to the Krakatoa menu will be created automatically on startup. It will be populated with all MacroScripts shipping with Stoke 2.0.
You can customize a toolbar with the Macros, or use the Stoke menu.
We highly recommend the use of the MacroScripts to access the new features of Stoke 2.0, although creating using the 3ds Max workflows is also fully supported.

Here is a list of known issues and limitations in the current implementation:

  • Field Loader loads data in world space and does not allow for transformations. This is a regression and should be fixed in a future beta build.
  • Mesh To Field converts data in object space - the field appears around the world origin, ignoring the Mesh transforms. This should be fixed in a future beta build.
  • Mesh To Field should produce an Icon at the original location of the source mesh. This should be fixed in a future beta build.
  • PRT Field exposes the Field Channel name to sample as text field instead of a drop-down list. This should be fixed in a future beta build.
  • Stoke operators in Magma require a Position input to define the sampling location. In future builds, those input sockets might be changed to read the Position channel implicitly, or connect to a Position InputChannel automatically to speed up the creation of Stoke Field flows.
  • Field3D Saving is not available in the User Interface. It is only exposed to MAXScript as an experimental feature in the StokeGlobalInterface.

<void>StokeGlobalInterface.WriteField3DFile <string>FilePath <node>Node <point3>WSBoundsMin <point3>WSBoundsMax <float>Spacing StackIndex:<integer>

  • Field3D Saving does not seem to have ZLib compression enabled yet. We will be looking into this in the future.
  • Field3D loading does not support the files produced by FumeFX 3.5 - a custom compression plugin is being used in those files and we have no access to the data.
  • Saving to FXD is not working yet. We received an updated DLL from Sitni Sati, but were unsuccessful so far in our attempts to write data to FXD. We will continue trying.