Welcome to the new Ember Alpha forum!
Here you will be able to download, test, report bugs and discuss existing and future features of Ember MX, our work-in-progress implementation of the Ember toolset inside Autodesk 3ds Max.
Just like with Krakatoa, explaining what Ember is (and isn’t) in a single sentence is challenging.
Here is the short version:
“Ember is Thinkbox Software’s Field ManipulationToolkit”
With this out of the way, let’s talk about what this means.
[size=150]What Is A Field?[/size]
To better understand the concept of a Field, let’s think in less dimensions first. When rendering a 2D image from a 3D surface model, the renderer calculates only a limited number of samples - a 2D grid of pixels in the final image. But the surface properties these pixels represent (like Color, Lighting, Transparency etc.) are continuous and not limited to the number of samples/rays the renderer has evaluated. The renderer could at any point shoot more rays or the user could increase the output image resolution and the surface will be evaluated with a higher precision.
Moving into the realm of volumetric data, a Field is the equivalent of the continuous surface of a 3D object, but describes properties in 3D space within a given region. When working with the data or rendering it in a renderer like Krakatoa, it is convenient to sample a finite number of values within the Field and thus convert it to a grid of voxels or a cloud of points (particles). This is equivalent to how a renderer samples a finite number of surface points for rendering. Again, these discrete values represent a subset of all possible values, but are usually enough to produce a final result that is a close-enough representation of the actual data in the Field. Volumetric data, just like surface data, can have multiple Fields (data channels) describing properties like Density, Color, Lighting, Emission, Velocity and so on.
A Field is usually defined only within a specific region of space. This is called the Field’s DOMAIN. Some mathematical functions like a Noise function or a procedural 3D Texture Map could be evaluated at ANY point in space and have theoretically an infinite domain (but are confined within the computational limits of the software).
So, technically speaking, a Field in the context of Ember is the set of values describing a property in a sub-set of 3D (Euclidian) space.
- A Scalar Field describes a Scalar property, for example the Density of a medium at each point in space.
- A Vector Field describes a Vector property at every point in space, like for example Velocity or Color.
As mentioned already, a Field can be converted to discrete values (Particles or Voxels) for convenience by sampling a finite number of points in space. This is particularly useful for rendering in Krakatoa or saving to disk. The PRT Ember object produces particles by sampling a Density Scalar Field and creating particles where the Density is positive.
Conversely, discrete samples (particles or voxels) can be converted to a Field by interpolating intermediate values based on the surrounding samples.
While Ember was designed to operate on Fields internally, it is a great tool for creating, converting, editing and outputting both Voxel Grids and Point Clouds which can integrate with Krakatoa, Frost, Genome, FumeFX, Particle Flow and so on.
[size=150]Why Do I Want It?[/size]
Probably the most important thing to understand about Ember is that it is Not Another Fluid Simulator.
It does not attempt to replace FumeFX, RealFlow or Naiad. It can be used to enhance their existing workflows and provide new ways of dealing with their data. Just like the “Particle Manipulation” portion of Krakatoa MX does not replace Particle Flow or Thinking Particles but gives them new powers, Ember MX can be used to expand the creative possibilities by combining data from various 3rd party plugins and core elements of 3ds Max with its own to produce new exciting results.
Ember borrows some code and operations from the Flood fluid simulator, but it was not meant to be a physically-accurate simulation software. It is an artistic toolkit to tweak data, including totally unrealistic behaviors. In this aspect, it is more akin to Particle Flow (a non-physical particle system which can be “convinced” to do physical style simulations using Box #2) than to FumeFX (a physical fuel/fire/smoke simulator).
In short, Ember is to simulation programs what an image compositor is to a renderer.
Just like AE, Fusion or Nuke can take the output images from a renderer and produce new data by combining them with its own internal features, Ember can take the data of various simulation applications and produce new results from it.
[size=150]What Is In It?[/size]
Currently, Ember MX exposes three dedicated objects:
- PRT Ember uses a Magma Flow to create history-independent fields on the current frame and exposes controls to sample these fields with user-defined step to produce particles where the sample point evaluates a positive value in a Density field. The PRT Ember object is renderable by Krakatoa 2.1.2 and higher as particles or voxels and behaves as yet another PRT object in that it supports Magma and deformation modifiers on its stack.
- SIM Ember uses two Magma Flows to initialize and advect arbitrary Scalar and Vector Fields by a Velocity Field in history-dependent manner within a grid domain. It supports automatic removal of Divergence from the Velocity field and can optionally discretize the fields on a grid or use gridless advection.
- Ember Force available since Alpha 2 is a SpaceWarp which can pass field data from PRT Ember or SIM Ember to any 3ds Max system that supports Force SpaceWarps, including Particle Flow, MassFX and mCloth in 3ds Max 2013 and so on. The Ember object must create a field named “Force” for this to work.
The objects come with dedicated MacroScripts for very fast creation of default, selection-based or user-defined grids, as well as with Manipulator plugins for direct adjustment of the Grid sizes of PRT Ember and SIM EMber in the viewport.
Both PRT Ember and SIM Ember use the same Magma Editor as Genome and Krakatoa MX, but expanded by a new “Ember” Category containing several field-related nodes, including “Advect”, “Curl”, “Divergence”, “SimpleFluid”, “Gradient”, “Grid”, “InputField”, “LevelSet” and “StaggeredGrid”.
PRT Ember and SIM Ember can create fields from
- Mathematical functions
- Level Sets
- Texture Maps
- 3ds Max Force SpaceWarps
- 3ds Max, Particle Flow and TP Particles
- Krakatoa PRT Files and Objects (including all 3rd party apps supporting PRT files)
- RealFlow BIN files
- FumeFX simulation objects and FXD files
The Ember Follow operator similar to FumeFX Follow lets you drive particles using Ember Fields from any sources. More features are planned for it that are currently not in the Alpha builds.
The Ember Texmap added to Alpha 2 is a 3D procedural map which evaluates the value of the “Color” field from a SIM Ember object. This is a prototype and work in progress
[size=150]What Is Not There Yet?[/size]
The ToDo list is longer than the current feature list, here are just a few possible ideas for the future:
- Dedicated Ember object for fast particle advection outside of PFlow.
- Turn particle data into a grid in one step (current work-around: ParticleSumRadius op)
- Grid Filtering
- Deep integration with Frost - passing fields from Frost to Ember, passing Ember fields to Frost for direct meshing. Meshing PRT Ember as regular particles already works.
- FumeFX FXD file output; creation of FumeFX initial states
- Various Solvers (currently only FFT solver exposed)
- Field3D voxel data I/O
- PRT Controllers
- PFlow Ember Fields Sampling
[size=150]Known Bugs And Limitations[/size]
- PRT Ember should be renderable by the Krakatoa Atmospherics effect, but is currently not in Krakatoa MX 2.1.2. This was fixed internally for the next KMX build.
- LevelSet uses only the first Geometry object on the InputGeometry list. Should use them all.
[size=150]Introduction Videos[/size]
What is Ember
Short Overview: youtu.be/58_bsedTCYE
PRT Ember:
- Sampling A Procedural Field: youtu.be/tjRtA3Cntzo
- Sampling Noise and Masking By Level Set: youtu.be/SIEz41y8Ebw
- Sampling 3D Map; Calculating Gradient And Removing Divergence: youtu.be/WJmLaW83bfI
- Sampling and Mixing FumeFX; Displaying And Removing Divergence: youtu.be/gsEQ7InZbok
SIM Ember:
- The Vampire Teapot - Burning By Illumination: youtu.be/j0OY_7QFkU4
- Particle Flow In a Vector Noise Field: youtu.be/h2tfuBcoYjA
- Particle Flow Advecting Another PFlow: youtu.be/pBRxdUk-h9k
- Particle Flow Fluid Motion For Krakatoa Rendering: youtu.be/GD2cCTHPIv0
- Modeling A Pyroclastic Mushroom Cloud (v2): youtu.be/KqtVWGGaAzA
- Mixing FumeFX and RealFlow Simulations: youtu.be/UjW1Y1CD-kM
- Advecting Mapping Coordinates Part 1: youtu.be/8d5_kmPXNrQ
- Advecting Mapping Coordinates Part 2: youtu.be/5s9GBaHU3EE
- Ember Force with MassFX and mCloth: youtu.be/vH4AX5X0a9E