I want to make my smoke simulation look like water. How? I have trouble understanding how to work with volume shaders. Can I somehow convert it to surface?
1 Answer
You cannot convert a volume shader into a surface shader. However, you can generate a mesh from a volume and this mesh can have a surface shader.
Unfortunately there is no way to do this directly with the smoke in the domain (as far as I know, if there is - please someone let me know).
The way to do it is you have to save the domain's cache, i.e. you cannot use the Cache > Type > Replay, but either Modular or even better, All. The Format Volumes option has to be set to OpenVDB.
Then you bake the cache with Bake All and in the specified cache folder there will be a subfolder "data". In it you will find the VDB files containing the smoke simulation data. If you want to be sure that you do not accidentally delete the files (for example by clicking Free All in the cache settings) you can move them somewhere else (move or copy, if you move them the smoke simulation has no data anymore).
Now in this project or a new one, press Shift+A and choose Volume > Import OpenVDB... then in the opening dialogue box navigate to the "data" folder (or wherever you saved the files) and select all by pressing A and then hit the button Import OpenVDB Volume.
Now you have a volume object in the scene. I honestly do not know why, but somehow they are always offset from the center, but anyway. You can give this object a volume material if you wanted to render it as smoke, but for surface rendering you now have to convert it into a mesh object - or more precisely, you need a mesh object with a modifier that will generate the mesh from volume data.
To do this, add any primitive mesh object, it does not really matter which so let's take a default cube. Add a modifier Generate > Volume to Mesh and pick the OpenVDB object as Object. Now the cube will show a mesh (always there where the volume is, by the way, no matter where you move the mesh object) from the volume which is also animated if you start playback.
Now the next thing is a bit try and error as to what looks best for you. You have to tweak the settings until you are satisfied and maybe go back and forth in the timeline to see when which parts appear or disappear. Because other than a volume which can have varying densities throughout, the mesh can either be solid and have a surface or it is not there.
Below I show the settings I used for my little test sequence, I changed the Resolution Mode to Voxel Size and played with the values to get something I liked. I also added a Smooth modifier afterwards to further smooth the mesh.
And this the result in the 3D Viewport, as I said a mesh unfortunately is either solid or not, that's why it can look flickering as it is hard to get smooth transitions between mesh states (without the Smooth modifier it might look better, but then the surface looks more blocky):
Now you can give the mesh some water-like material, here is an example where I also have the original Suzanne which was the smoke emitter inside the "water" (sorry, had to decrease the size a lot due to file size restrictions):