Star Citizen - Explosion VFX Breakdown

Booommbb!!! thanks for sharing this , motivated to create my own version with Houdini now :heart_eyes:

great piece of information dude :slight_smile:

Nice to see Caleb on “Around the Verse” finally :slight_smile: Also fantastic to see new features have been added to the CIG VFX Tools.

This is awesome, thanks for sharing this!

Hey all,
I’ve been trying to get decent normals from FumeFX with a light cage but its not looking so hot. What was the process you used when rendering the normals from Fume?

The method i use is derived from an old method by ryan clark.

http://www.zarria.net/nrmphoto/nrmphoto.html

He uses a flashlight to photograph an object, then combines the “lightmaps” together to make a normal.

I also combine it with the rgb lighting method that is common in the movie industry to combine multiple light directions into 1 render. Its basically just a normal rgb light rig in your 3d program. Left light is red, top is green, front is blue. (dont need front for the normal) You need to do a second render pass for right and below, (right=red, below=green) You can also add a blue back light into your second render but its not needed for the normal. (front and back lighting useful for the diffuse though)

When setting up the lights in your scene, make them exactly 90 degrees on their respective axis as 90 degrees seems to yield the best/most accurate results. There are times however what all the side lights will not light a section of the sim. (ie: a cavity in the middle of the cloud) These areas will show up as essentially flat on the normal. There ways to minimize this, either by thinning out the sim so the light penetrates more, or by rendering a second normal map with lights that will cover those areas (45-60 degrees instead of 90) and then combining the two photoshop.

6 Likes

what a great explosion vfx! Awesome!

I will type my need here since it falls in my opinion perfect into a resource topic related to maps generating.

Because i really like this video I’m working on my own personal project to generate “same” result.
Im working on Houdini 15, and after having my explosion simulation done i need help to generate maps (and how i make temperature map) and spread sheets.

i did research about this but didn’t find too much detailed information.
any small tutorial will be greatly appreciated :heart_eyes:

I have a question too :slight_smile:

How do you generate temp map? I’m guessing that using effectors in ffx and rendering temperature channel, am I right? I haven’t tested that yet, will have to give it a try.

Also… Do you generate all those passes in just one render or you render multiple times with different settings? If so - how? Maybe newb question but I really can’t figure out how do generate all the different lighting setups, motion vectors, temp maps all at once :slight_smile: Time is money so it would be great to generate them all at once.

@Ohadgfx re: > how i make temperature map?
@Gaxx re: > How do you generate temp map?

This just the fire render, at least in the example shown on the video. So, two options here. Either enable Render Elements and select FumeFX Fire, or simply set your smoke color to completely black and render out directly (we don’t need the alpha channel of the fire, as we comp over the top of the smoke via our engine’s particle shader).

At CIG, we only need the fire pass as a greyscale, and we then map this to a Black-body/heat gradient in our particle editor. So the most important thing for us when rendering out the fire pass is that there is sufficient noise/detail in the frames. I find this one of the trickiest parts to master, as it’s all too easy for the fire to bloom out all the detail in the texture - especially if using multiple scattering.

@Gaxx re: > Do you generate all those passes in just one render or you render multiple times with different settings?

For sure, the less often you need to press the render button, the better! :slight_smile: Personally I use Backburner to send my renders to a separate PC. The benefits of this are obvious; I can queue up my various passes, plus it frees up my main PC so I can continue with other tasks.

You can see the exact amount of passes we end up with in the original video link but we basically need RGB smoke x2 (for normal and diffuse), fire (for heat), velocity (for flow map) and alpha (for, you guessed it, alpha!)

I hope that makes sense :blush:

2 Likes

Thanks for the answers.

One more question about coloring of fire. Do you color it by something called ‘color indexing’? https://www.youtube.com/watch?v=YcFwQgwLY9A this was one of the first videos on good old ImbueFX :slight_smile: this seems to be working the way you describe but I’d rather confirm that.

Anyway - good job creating those explosions. Looks very good. Can’t wait for recreating those!

@Gaxx - yeah, exactly that. We don’t currently have the ablility to dynamically update the mapping though, but it’s something we’re thinking about doing.

Good link by the way, that’s @alex.underhill who happens to be the creator of the awesome Slate editor, which I’ve seen mentioned on a couple of posts here already but surely deserves a thread of its own :smiley:

2 Likes

Thank you for being so helpfull!

Thank you for the answer! Another small thingy.
Should I export every frame with each of the map and then make a spread sheet of each type?
Im not familiar with FFX. I dived from maya right into houdini so I still figure out how to pipeline real time explosion with it.

I usually make 2 flip books and combine them, one with the left/top lighting and the other with the right/below. That way i can do my PS actions on all the frames at the same time.

1 Like

Are your lights set to 1 for intensity or are you working with degree of lights? I assume you’re using spots? What kind of settings do you have on your lights as far as transmission/shadows and the like? The biggest issue I get is I get a lot of white light or all white in the rendered composite and casting shadows becoming an issue, so I’ve been trying to figure out the best solution to fix it. I’ll try this method this week and see what’s what. Thanks for the response!

Ok I hope I understood it all right. I will give it a try and update how it goes :slight_smile: thank you very much!

is it not possible to use lights with negative intensity for the opposite sides? used to do that in max for baking tiling textures with opacity mapped highpolies.

It depends on the renderer - sadly most renderers don’t allow negative values (Houdini does!).

My suggestion is (sorry if this was already covered… don’t have a second to review all of the links in this great post) to do 2 renders, one with a red light at 90 degrees to the right, and green light from the top (positive render), then a second render with red light at 90 to the left, and green from the bottom (negative render). Make sure your light intensities are normalized (i.e.maximum brightness on any pixel never exceeds 1) . Blue is completely unnecessary for a tangent space normal map (uv directions, blue can be computed).

In a compositing tool, or python, here’s the shader foo to make it a normal map:

normals.rg = positiveRender + (-1 * negativeRender);
normals.b = sqrt(1 - normals.x^2 - normals.y^2);

normalMap = float3(normals.rg * 0.5 + 0.5, normals.b); 

While absolutely not a “technically correct” normal map, the great thing about this method is that it actually returns normals with “softer” edges that replicates light transmittance (based on your render) when used.

3 Likes

When setting up your lights there is no exact brightness to use, it depends on the smoke density and color. You dont want any clamping of white in your channels. Set up your lights and then do a few test renders at diff times in the scene to make sure. If there is clamping of white, you can either lower your light brightness or darken the smoke. I use free direct lights, scale them up large enough that they completely overlap your entire container and the other lights.

It helps to think of each channel of the texture as a separate greyscale lightmap. When viewing your renders, look at each channel individually and in greyscale.

Unfortunately there is no way to render negative lights this way because of how the light interacts with the smoke. This is an entirely additive process. That is why you must invert the left/top renders in photoshop.

Keith is right, this is not a true normal map. I tend to think of it more liked a baked lightmap. The awesome thing about this is it records things like subtle self shadowing into the texture. So if you have light rays penetrating your smoke, it will capture those streaks into the texture.