FumeFx->Krakatoa->Frost. Meshing explosions

Lately I’ve been playing around with fumeFx and Frost trying to make mesh from explosion simulations. And after some trial and error I succeeded.
However, I cannot find a way to transfer explosion colors to the mesh.
So, essentially, what I want is to get a mesh of an explosion with texture/vertex color shading that looks as close to the original explosion as possible when rendered.

I already have the mesh and i would really appreciate some help with coloring it based on particles color.
My thoughts on the matter:

  • First we need to make particles that follow fumeFx have the same color as fumefx - How? I only found a way to color them based on time/age.
  • Then we need to apply these colors to nearby vertices (again not sure how).

Another thing is that in material tab of frost I always get “unsupported” no matter what I choose(except for a single id material). Not sure why.

Thank you!

Still stuck on this part.

Hi Stanislav,

The Krakatoa PRT FumeFX object has a checkbox to generate an Emission channel out of the Fire channel of FumeFX. It basically runs the FumeFX Fire Shader to produce the colors you would expect, but it does nothing for the Smoke color, which ends up being black, unless a Color channel was simulated by FumeFX and exported with the simulation.

In the following simple test, I took a Simple Emitter and let it burn. So not an explosion, but I hope the general principles are the same. I then converted the FumeFX sim to a PRT FumeFX, and checked the checkbox to generate Emission from Fire.

Then I added a Magma modifier to read the Emission and dump into the Color channel so I can visualize what it is producing in the viewports. I then took the Fire channel which describes how much fire there is in the voxel, and used it to Blend an arbitrary Smoke color which I defined as a shade of gray with the Emission color. I also Multiplied by the Density which represents the Smoke channel of FumeFX. In a rendering, the Density would fade off the Smoke Color to transparent, but we don’t support opacity display in Krakatoa PRT objects yet, so I had to fade to black instead. I then clamped the Color between Black and White because Emission can go way above 1.0,1.0,1.0.

I also set the Selection channel to the Density less than a threshold, and used a Krakatoa Delete to cull any particles with low density to control the shape of the resulting plume.

Next I could just make a Frost out of that and enable Vertex Colors - since I am outputting to the Color channel in Magma, that ends up on the mesh!

A material with Vertex Color map would make that then show up in the renderer. The main problem is how to get the Emission as Self-Illumination on the mesh. For that, you can dump the Emission channel to the TextureCoord (mapping 1) channel, and use another Vertex Color Map in the Self-Illumination slot of a Standard material to get the effect into the renderer.

However, a significant part of the volumetric effect is carried by the Smoke/Density information which is mostly lost in this case - we are using it just to dim the color and cull the particles, but the mesh has no transparency whatsoever.

Here I used the TextureCoord to transfer the Smoke info into Opacity, while meshing with Geometry > Custom > Box primitive. (The Box shape in Frost generates its own Mapping Channel 1, which destroys the incoming data from Magma, so I had to make a box in the scene and disable its mapping coordinates).

Without the Opacity data but using the box approach, the effect would look like something out of the LEGO movie!

Some more thoughts about this:

Stoke MX would provide additional tools to sample channels from particles or voxels into the Mesh vertices. Since you did not mention Stoke, I tried to stay within the Krakatoa and Frost toolsets’ features.

Frost does not propagate the MappingN channels (2 to 99) from particles to mesh UVs, except when copying Velocity to a numbered Mapping channel.
It is either a bug, or a limitation - either way, I think it should be supported and I will log it.

Wow. That’s a lot of information to process.
Thank you so much for a detailed response!

“Frost does not propagate the MappingN channels (2 to 99) from particles to mesh UVs, except when copying Velocity to a numbered Mapping channel.
It is either a bug, or a limitation - either way, I think it should be supported and I will log it.”

Bobo! This would be a great feature. I recently had revert to using tymesher instead of Frost because the tymesher could inherit mapping channels to the resulting mesh UV’s. I desperately needed it for my lava shader. If this is in the next build that’d be very welcome. Thank you! Glad to see the products still live :slight_smile: