emFluid2 is the successor of emFluid. It is a basic fluid solver for XSI's ICE and is typically used to produce smoke and fire effects.
The plug-in consists of a "DLL" file (Windows) or "so" file (Linux) for the fluid solver node (compiled C++ code for 32 bit and 64 bit versions of XSI). Additionally, there are several compounds that come along. They allow you to plug objects and/or their geometry into the emFluid2 node or compound.
You can use the SRT or the points of any objects in your scene as so-called "velocity force emitters" to add turbulence and swirls to the fluid boxes in which the particles move around. There are no restrictions when using the points of an object: polygon meshes, nurbs meshes, even point clouds can be used.
emFluid2 is well integrated into ICE and you use it just as easily as all the other nodes and compounds in ICE.
Note: emFluid2 is no longer the most up-to-date fluid solver for Softimage|XSI. Please check out the new emFluid3 !
Brief history of fluid solvers
In the 18th and 19th century a mathematical model was developed for fluid flows, the so-called Navier Stokes Equations.
In the middle of the 20th century, when computers started to play an important role in research and development, algorithms were developed to solve these equations, therefore allowing simulations of fluid flows. The simulations were accurate, but required enormous calculations. They were definitely not real-time.
In the 1990s Jos Stam developed a fluid solver based on the above mentioned equations. Its purpose was not to simulate real fluid flows, but to create visual effects that look like real fluid flows. And, most important, to allow computers to calculate those effects in real-time.
I believe the main ideas in his paper "Real-Time fluid Dynamics for Games" are found in most of the fluid solvers that are used for 3D graphics.
Summer 2007 my friend Oliver W. (pixelpanic) asked me to code a simple fluid plug-in for XSI. Actually, he had been bugging me with that for over three years :-) Anyway, I was at his place for a few days and that's where we made the first beta version of emFluid for Softimage|XSI's particle system.
Shortly after Softimage released XSI 7.0 I started coding my first ICE plug-in (called emNewton) in order to become familiar with ICE and its SDK. After it was released I started programming the emFluid version for ICE and Oliver once again was a great help during the development of the plug-in.
The little blue smoke animation on the right side was one of our test scenes. It was rendered with another self-coded ICE node called emRenderPointCloud.
The ZIP file containing the demo version can be downloaded here:
download emFluid2 demo version (version 2.25).
The ZIP file containing XSI demo and tutorial scenes can be downloaded here:
download demo and tutorial scenes (version 2.25).
To take a look at the online documentation:
emFluid2 online documentation (version 2.25).
To purchase the full version of emFluid2 please click on the following link:
go to the emFluid3 page
If for some reason you have problems with the above link you can also contact me directly.
The robot has all emitters attached to it: one for the particles and one for the velocity force of the fluid box. The particles color and size are set over the particle age percentage.
The particles were rendered using the "Particle_Volume_Cloud" shader. It took about 6 hours to render the 650 frames with a resolution of 640x512 and the antialiasing set to min=0 and max=2 (rendered on one Quad Core CPU). In order to avoid flickering of the smoke the "Cell Interpolation" value of the "Particle_Volume_Cloud" shader was set to "Full light raytrace".
The XSI scene with the fluid setup and the material for the point cloud (included in the demo and tutorial scenes) is called
"4Website_AfterBurnerChicken", but it will only work properly with the full version of emFluid2 (see: demo version restrictions in the documentation).
This second example is a smoke-like rendering with lots of particles.
During the first frame one million particles are emitted at once in a sphere that lays in the fluid box. A second point cloud is used to add velocity to the fluid box: a few particles (about 5 per second) are emitted and their position and velocity is used (via the compound "emFluid2 Velocity Force from Geometry") to add velocity to the fluid box.
The particle color is controlled by a gradient which is controlled by the particle speed.
The OGL screen capture below has nearly the same setup as the animation on the right, except that the fluid box is wider in x and z.
The fluid setup can be found in the XSI scene
The emission is set to 10.000, though. But you can increase that value with the full version of emFluid2.
The fluid setup here consists of a fluid box filled with particles. The polygon meshes of the submarine and its propeller are used as velocity forces: their point positions and velocities are used to add velocity to the fluid box.
Additionally, the particle sizes and colors are influenced by their velocity: the faster they go, the bigger and brighter they get. In the middle of the animation, when the submarine stops, the viscosity of the fluid box is set to zero and the falloff of the fluid box is slowly increased, which allows the particles (that have enough velocity) to escape the fluid box.
The particles were rendered with an ambient occlusion shader and a lambert shader. Some color correction, a little motion blur and the background were added in the post .
The XSI scene ("4Website_UBootInTheSkyWithDiamonds") that was used to render and composite the animation is included in the demo and tutorial scenes, but it will only work properly with the full version of emFluid2.
Alternatively you can take a look at the demo scene called "inAction05_UBootThroughLongCube" that works just fine with the demo version: it has nearly the same fluid setup as in the animation above.
Example 4: "Oliver's Balls"
This is a test rendering of one of Oliver's emFluid2 test scenes.
The three spheres are animated with Rigid Bodies and each one emits particles from its surface. The particles have a certain state ID depending on which sphere they were emitted from. The particle colors are then set by a Gradient node depending on their Age Percentage and State ID.
The spheres also emit velocity force into the fluid box via the compound "emFluid2 Velocity Force from Geometry".
The rendering of the sequence was done using the "Particle_Volume_Cloud" shader. It took about 2 hours to render the 500 frames on a Quad Core (original resolution: 720x576).
There is one main velocity force emitter which is located in the crater.
The transparent polygon mesh sphere with a point light in it is used as an additional velocity force emitter.
The point light has a linear falloff and illuminates the point cloud quite nicely.
The particle emission color is animated and -as usual- the particle size and particle alpha is set depending on the particle age percentage.
Julien S. asked me in the Softimage Net Community about using emFluid2 with strands. I hadn't done anything with strands yet, so I made some simple tests with the strands compounds. And this is the result: some yucky worms!
The ICE Tree is quite simple: a basic fluid setup, a polygon mesh for the "Slide on Surface" compound and some strand compounds to create, animate and align the strands.
The particles were rendered with an ambient occlusion shader. Some color correction, a little motion blur and the background were added in the post.
The XSI scene "4Website_YuckyWorms.scn" is derived from the scene that was used to render and composite the animation. It is included in the demo and tutorial scenes. I also added some comments in the ICE Tree.
Here is an extract of a really nice short-film called "Amock" which was made 2009 by François Vico, Martin Vaissié,
Sarah Matuszak and Xavier Goubin at the École ArtFx in Montpellier (France).
François Vico used XSI 7.01 and emFluid2 v.2.25 to create the smoke effects of the mysterious book that is shown in the following extracts:
More information about the short-film can be found here: Amock - The Movie
PS: special thanks to "l'équipe d'Amock" for allowing me to show these extracts!
Note: emFluid2 is no longer the most up-to-date fluid solver for Softimage|XSI.
Please check out the new emFluid3 !
First a usefull link: emFluid2 online documentation (version 2.25).
Please note that the online documentation (as well as this whole web site is best viewed with Mozilla Firefox or Internet Explorer 8. Latter is especially important if you want to view the online documentation in XSI's Net View.
-this plug-in runs fine with Softimage 2010 Service Pack 1
-the documentation is a little lean.
-the fluid boxes scaling cannot be animated.
Watch the sneak-preview videos from Oliver on Vimeo. Here are the links:
Sneak Preview 1: http://www.vimeo.com/2009182
Sneak Preview 2: http://www.vimeo.com/2065237
Sneak Preview 3: http://www.vimeo.com/2071238
(The XSI scene of the 3rd Sneak Preview is included in the demo version)
Need your feedback:
As mentioned above, the documentation is not really extensive. The two main reasons for that are 1) I am not a very good documentation writer and 2) I am a lazy documentation writer. I would greatly appreciate some feedback! So if something about emFluid2 is not well explained (or maybe even not explained at all) in the documentation then please write me a short e-mail. I will then write what is missing and/or make a demo scene.
Should you be interested in a version of this plug-in for XSI's particle system then please go to the
emFluid (version 1.1) page. There you can download the demo version of emFluid version 1.0.