Faking Volumetric Clouds in Cycles [Ultra fast 1 sample rendering with good results]

I’ve been needing of a solution to produce clouds for a project im working on.
Volumetric Clouds is no way near feasable both in time and resource, “my poor gtx 960 can handle it, but takes too long with poor results”

So I’ve been researching a bunch how Games do it.

The trick was hiding the planes that is not facing the camera, and the answer was infront of me all along. LayerWeight Node!

Rendertime per frame was a quick 2 seconds with only 1 Sample.
It could be used in actual renders with a separate render layer and some masking :smiley:

The best thing is its evolution could be animated, and moving it changes its shape. so we have a purely procedural Cloud object that we could use to populate big aerial scenes :smiley:

workflow:


2 Likes

that looks really clean for 1 sample! how does it cope with complex lighting? like multiple importance HDR world lighting?

edit: just noticed it uses an emmision shader, so i doubt it is effected by scene lighting at all? kind of a shadeless cloud effect?

Yeah, old school… also check this out:

Used in more stylized animation…

https://vimeo.com/70633467

it is not being effected by any lighting at all, so far I have managed to “fake” it as well using normal information (Generated Normals > Separate X, Y, Z. Then mix between X,Y for direction).

That was one of my greatest inspiration!, although because of how limited (or maybe im just unaware of right now) cycles could be, its very hard to transfer vertex colors to planes. i did kinda managed to do it once but the result was not satisfying. i might give it a shot again to achieve a more cumulus look, which I imagine is the only real good way of doing it

EDIT:
here’s the new improved version with a sky and a bunch of em in different shapes and sizes :smiley:

Hi Ensou,

that looks fantastic!

Can you share a Blend or a bigger Screenshot.
(My eyes are no longer the best)

Thanks! alright here’s a screenshot.


The Blendfile: RealisticClouds.blend (1.41 MB)

Im still experimenting different ways to do this.

That’s great!

Many thanks Ensou.

Some Progress, I managed to fake lighting this time :smiley:

I did it by using drivers. I had my sky and sun lamp connected through drivers as well so I figured i could use the data to control fake lighting. also I used a sky texture on the cloud for the colors.

Rendertime: 5 seconds per frame @ 1920 x 1080






Getting better :wink:

Did you use the drivers to change the position of the normals based on the sun position? if so you should take a look at this video, specifically jump to 4:10, it explains a problem that arises using this method, and shows how to fix it (The math isn’t bang on, but it’s good enough) :slight_smile:

DANG! That looks perfect for animations, so long as there isn’t any abnormal lighting on it! Gotta see if I can make the clouds receive real shadows, though.

Yes, I have an Empty that contains both the Sun and a “SunVector” empty that is offset by 1 unit at the z axis. I then use the Parent Empty to rotate the sun, then i use the XYZ position value of SunVector empty to control both the Sky and its fake sun, and the “normal” nodes for the clouds “same with the skydome clouds”. So far i havent found any issues as its just really offsetting a duplicate of the texture to give the illusion of a shadow


It could receive shadows if you use Diffuse shader instead and use the color data that you would normally use for emission on a translucent shader :smiley: It works great. just takes a bit more time to render but Its still a better solution than using real volumetrics

EDIT: actually, doing it this way you are essentially roughly doing how volumetrics work


Awesome!
I’m thinking of using a combination of this and real volumetric clouds (this for far-away or sparse clouds, and real volumetrics for anything that I can’t fake) for my current animation project.
I’m making Leviathan (by Scott Westerfeld, same guy as Uglies), so fast-rendering clouds that look good are a must-have!
For example, these are a few scenes from the book:

Neat stuff!! I hope you could share some screenshots and make your thread! As for full 3D clouds, you could do Baked Lighting Vertex Colored Clouds like the one shared by @burnin. Im doing it right now and Im having great results!

How would you do the Vertex Color clouds and have the realistic fade-off when objects intersect the clouds (like that flying whale in the picture)?

Here’s a mini tutorial I did :D, for your other question, I would prevent my object to intersect the plane directly, but instead have it pass through between them

Blender Vertex Colored Clouds Tutorial: http://imgur.com/a/3o2eW


EDIT:
Here’s a better Approach. instead of singular planes I did 3 faces facing X, Y and Z. and use it in the Particle System with distribution set to Grid. add some randomness on the distribution to prevent the 3xPlanes from crossing with each other. And now it looks neater :smiley:


Now that cloud looks really awesome! Can you post a turnaround video? And maybe with some object flying through the cloud?

sure i’ll get on with it later, it still has its limitations though but if used properly it will work flawlessly :smiley:

EDIT:
Here’s a turnaround :smiley:

Samples: 1!
Rendertime: 3-4 seconds per frame @75% of 1080p

If someone has a way to make the non-facing faces/planes fade more better that would be great. currently im using Layer Weight set to 0.5 blending

For making objects passing through, i imagine you could just use opacity masks, render the clouds and your main subjects separately then composite them

1 Like

To that end, I have an idea: Maybe you could use a real volumetric object around the particles with an emission shader with z-masking on solid objects. You could then clamp the result and use it as an opacity mask for the object entering the cloud.

Would that work?

Also, I think adding a little randomness in the direction would also be helpful.

It should also be possible to use the fake shading from the first group of clouds (or something similar) to provide shading that works with dynamic light environments and that doesn’t require you to re-bake every cloud depending on its rotation.

You should test using a driver to change the alpha value to 0 when the plane is in a strong angle relative to the camera. Right now you can see the plane in that certain angle.