Train steam?

ianay

Member
Hi, Im building a 360 scene with 'hopefully' a train passing through. The actual train cannot be seen though as the camera is below a bridge and only the smoke or steam can be seen from the train..
Anyway, i've never 'done' smoke or steam before so I had a look for tutorials and theres not really much out there, it looked like open VDB was the way to go but I just could not get it to work properly, so I ended up going with volumetrics but it just doesnt look right and I cannot seem to fix it.
Heres the finished render (though that smoke will not be in the finished version) to see how bad it looks.
Its moving too fast and its way too big at the base , I just could not get it any smaller!

Heres link to render
and ive attached my crap smoke scene file.
I realise theres a ton of stuff to be done but how can I get this too even resemble train steam?
Thanks for any help as always
 

Attachments

  • crapsmoke.zip
    9.6 KB · Views: 11

Ma3rk

Curmudgeon in Training
There's a bit of confusing, sometimes conflicting info on it certainly over the 2018 to 2020 versions. If you happen to have RH's LSR series, he goes through setting up an simple emitter dust trail for the R2-D2 scene he did.

I recently did a series of experiments showing the use of volumetric lights with and w/o a volumetric enclosing, and with camera and lights in and outside of that. At some point I'll post it as it's tiny but really exhibits some of the issues & gotchyas.
 

prometheus

REBORN
I would still go with fluids VDB because you are not getting hypervoxels right either.
The thing is the motion and dissolve isn´t right, and it will take you time to learn and tweak that as well, which is similar to time you need to get fluid smoke right as well.

But I wouldn´t use Lightwave 2019 native VDB fluids, but simulate in blender and save out to VDB and import to lightwave.
Blender 2.79 is easier and faster to simulate the smoke, the newer versions are harder to use, just start with spacebar/quicksmoke and simulate test on a sphere to get the hang of it, then import the moving "nozzle" from the train( alembic export get´s camera match exact but that isn´t necessary)
change cache from point to vdb, and that is it for export..you just load it in to lightwave with the vdb properties.

Think we had a thread about that before..
Post 4...



 
Last edited:

prometheus

REBORN
I forgot to say...

If you have a straight path of the train, you do not even have to send any main train mesh to blender, don´t have to do any motion animation in there either or camera matching..it should be enough to just make a disc for the fluid emission, let the smoke rise with the smoke settings, add an additional directional wind.

Once importing the vdb files to lightwave, you just position it over the train steam opening pipe and parent the null vdb item to the train, and it will follow the train while giving the appearance of moving in the wind.
May also look decent even if the train is following curved path..if the heading rotation of the vdb null is following along the heading of the train that is, and if the train isn´t moving in 1000km per hour ...which would cause any smoke to react to air pressure and wind completely different.

so should be supereasy to create a disc the size of the opening of the train steam pipe end, set decent resolution, probably min 200, and additionally highres as well, make container/domain large enough so the smoke pushed by the wind can cover a decent area.

Use blender 2.79(old smoke engine) for easier feedback with wind and cache updating than current mantaflow in later blender versions (it sucks)
In 2.79.3 Only...use spacebar for quick fluid smoke(type the string quick smoke for the disc or mesh object of your liking, in later blender versions the spacebar quick commands has been moved to F3, so quick smoke, click play..that´s it for a basic smoke to raise, but the resolution you have to tweak and wind settings, and in the end change from point cache to vdb, and also..always save the blender file first, if not you can´t cache it.

Set falloff to tube and a radial power of perhaps 4, depends on..so the smoke isn´t affected directly at beginning but raises then pushed in the wind direction.
 
Last edited:

prometheus

REBORN
Cheers for that, Ill give that a go, but...
How do I actually import the VDB from blender into Lightwave?
Add a null, go to it´s properties, "p" change primitive type to openVDB, go to where it says VDB File and use to drop down list to load and locate it to where you saved your vdb cached files from blender, select first or second file there, there can be some issues with the first frames sometimes.
but you only have to choose that first or second frame, it will automaticly load all the other frames.

If you want a still frame from somewhere in a simulation ..like a cloud sim, you should copy one frame of your liking, rename it and load that, since it has a different name it will not load the other frames, that´s how you can load a still cloud and use it.
But for steam that is not what you need of course.

And you will need main resolution at least minimum of 200, and probably add highres resultions with a level at 2, or you will see boxes in the vdb quality.
There´s also some steps to change in blenders world settings, volume settings to cubic to make sure it is smooth, but I am not entirely sure it affects the output properly.

I usually make a sim at around 100-150 with highres at 1, to get a decent speed on the simulation feedback and after that increase it to 200 or more, and a highres at minimum of 2, usually turning of the wavelet noise strength as well, since it doesn´t move very well with the fluid, prefer to increase vorticity instead for more noise detail.

In sample below, I didn´t even have the temp channel active ( fire) when you add quick smoke, it just uses the smoke channel, and if you want fire in there, you should use fire and smoke.
In the image below I sort of hacked it, I wasn´t planning on fire, but just happened to mess and tweak the actual scattering channel witth blue color gradients, which will in fact turn up yellow redish fireish ..sort of.

Scatter channel also gives the smoke it´s thickness, but the tricky part is to have it thick and smooth, if you have too much scatter scale, it may start to look blocky...so a good balance is needed.


vdb.jpg
 
Last edited:

prometheus

REBORN
Also, I recommend to use the vdb file in both emission channel, you actually only have to load the vdb file in the emission channel first, since lightwave then can use it as loaded in memory for the other channels as well, so for the density channel you don´t have to load the file again, just choose it in the list since it is there in memory.

For steam you need to add emission color white and some strength to get a good white steam.
A tricky part could be that steam typicly seen from some trains may pulse expand from the pipe, and fluid smoke will raise more continuously, so you may have to use some envelopes in the fluid behavior in blender or forces, but I haven´t gone so far to check that out.

It´s not impossible to do smoke with native vdb gas solver, but it´s more tedious to work with, may be more unstable as with crashing behavior, and slower to calculate perhaps, and it´s openGL display is horrible with tick display compared to slice display in blender.

Here´s a thrust sample sim from blender, so it´s rendered from Lightwave vpr after import of the VDB,

 

prometheus

REBORN
Got some decent smoke going in Blender but I have no idea how to actually 'export' the VDB file from blender..
I described how to import, for export in blender, you actually really don´t "export" ...not by any file/save or save option..you go in to the physics tab for the domain, it is there you have cache settings, and by default it is set to point cache, you change that to vdb, and set a file path and folder where to save it..then just click on play on the timeline and the frames will be cached saved as you go along with the timeline, that´s it..you now have a folder full of vdb files per frame, which you then load in Lightwave by adding a null set as vdb primitive.
 
Top Bottom