Art-directed night sky with multiple layers of clouds? Advice for a novice

Hi there,

Somewhat experienced 3D artist here but pretty inexperienced with Unreal Engine, I’m looking to make a cinematic short film set entirely within a hot air balloon, and I’m trying to figure out the best way to go about doing an environment.

The environment is: purely clouds, surrounded by the night sky. I don’t want any ground to be visible, it should be totally shrouded by clouds, same for the sky directly above, with a strong blue/green side light from the moon illuminating everything.
Not super realistic, but more cinematic (I’ve attached some reference images + previous work I’ve made in other 3d programs to demonstrate what I’m trying to get).




RefImage03

Obviously some of the cloud structures here get a bit crazy, but the simple version is a thick layer of clouds above and below, some fog, the moon illuminating the world as a strong side light, and maybe some more broken up clouds in between.

I’ve been doing some experimentation with volumetric clouds and other plugins like the sky creator and ultra dynamic sky, but I’m having a few issues:

-What’s the easiest way to get a layer of volumetric clouds below the hot air balloon? The balloon model is set at a Y location value of 0, so it’s on the floor. I’d like to get a thick layer of fog/clouds below the balloon, but the volumetric clouds only seem to go so low. I guess I could just move the balloon way higher up but that seems inconvenient, surely there’s a way around this? Maybe I’m missing something.
-Are there any good resources for creating a cinematic-looking night sky? Many of the tutorials I’ve found seem a bit uninspired (night sky is a solid colour and not a gradient, moon looks fake, almost no illumination from the moon.) Any pointers, recommendations or suggestions here would be amazing.

Aside from a few slowly scrolling clouds in the foreground to give the illusion of the balloon rising, the background doesn’t have to change (eg: the moon wouldn’t have to move, etc), so the lighting setup can be fairly static. I’m just trying to make it look as good as it can possibly be.

If anyone can give me some advice or pointers on where to start looking with this, that would be amazing.

Thanks!

1 Like

Set sky atmosphere to use actor position and lower it a few km. Otherwise you could raise your scene up.

I don’t know of any tutorials… If you mean the non-cloud part of the sky, probably the most common way to handle this is to just make a cubemap and use that. Using a directional light to get light and cast shadows from the moon. The drawback of a cubemap is that you’re limited by your resolution so you can end up with blurry stars, this probably won’t be a problem for an animated film as you can just keep throwing more resolution at it.

If you need it to be as sharp as humanly possible then a combination of cubemap (for coloration/masking) and procedural star generation is a good option.

1 Like

Maybe you should take a look at the plugin FluidNinja, because that have some nice and lightweight effects, that might be good for your clouds. (and the creator might be able to give you settings, to make the clouds not flow so fast ^.^ that was one thing i couldn´t figure out in my short test)

Plugin at the marketplace:

Fast sky testvideo from one of the demo levels i have slightly edited the lightsource :slight_smile: :

A tut from their discord about how to paint volumetrics:

2 Likes

Thank you so much! I’ll start looking into these tools

Ok, in that tutorial, he actually mentioned the solution to the cloud speed problem, and yeah, looks really good after slowing it dowm :slight_smile: Now i am tempted, to buy it for myself too ^.^

And if i am not completely mistaken, then you should be able to bring multiple volumetric cloud containers into your scene to create and build your sky, but i have to test that to be sure.

Edit: Seems like, you can bring several volumetric cloud container in, but you cannot stack them to get several different cloud layers, just for spreading it to the sides :frowning:

1 Like

If the objective is to render a still…

May I suggest painting cloud layers based on cloud composition with some simple alphas on a transparent sheet?

If it’s a still, then performance won’t matter, which means you can dig out the shader bits stuff.

(Or event better reources) to achieve the end result you want…

1 Like

What would happen, if you use those alphas and cloud layers as some type of Foliage and paint them on ingame invisible meshes, that form the general cloud shape?
Sprite based clouds maybe? Because there are some really good examples of this kind of type out there (then rendered in Offline renders, but why not try it here? ^.^)

Like this example here, that was made as attempt to recreate the effects, that were used in the short cinematic “Paths of Hate”

Example: Painterly 3D clouds in Cinema 4D ("Paths of Hate" style) on Vimeo

“Paths of Hate”, which uses sprite based clouds:

CGI breakdown of Paths of Hate:

1 Like

If you mean using billboards, Andreas Glad created a tutorial for this a while back using Houdini to generate the cloud shape for emitters to spawn on. Apparently he used this technique on Battlefield 1, with very nice results (shown toward the end of the video).

I’m tempted to say you’d still be better off using Unreal’s volumetric clouds system though, provided you’re comfortable working with volume materials, as you can get more plausible self shadowing and extinction, and fewer artifacts with orbiting camera shots.

That being said, Ryan Brucks also has another article on his blog about raymarching a heightfield and I’ve been curious if that could be combined with the billboard based effect to improve the result… something to think about.

2 Likes

I would love to work with volume materials, or whatever is required to get good clouds and nebula, because those are the things i really miss here. HOWEVER, one problem would be that most volumetric effects are some kind of post process, which usually have a hard time showing up in raytraced pr pathtraced reflections.

Sprites/Billboards/“Tiny Quads with a cloud fragment material on them” at least can be properly reflected. I just wonder, if there is any way to drive their color by the subsurface color of another mesh, since that was, how they achieved that particular look in Paths of Hate. There they baked the subsurface scattered results from those meshes and then let the … foliage/Sprites/Billboards use the color, that was at their position on that mesh.

Another advantage right now would be crisp details. As much as i like the current results from volumetric clouds, i couldn´t figure out a more or less performant way to get those crisp details, you can see in the example pictures at the starting post (the real world ones). I tried to recreate a space nebula from Blender, and the here available procedural noise was unable to get anywhere near those crisp details, that the Blender noise was able to get. and with that, the results were… a good start, but lack finish and details.

Maybe you have an idea about getting all those fine details :slight_smile:

Edit: Watched the tutorial, and yeah, that was more or less what i meant ^.^ Just not sure about using the particle system for it.

1 Like

This is true, personally I think the clouds in the original post are achievable with Unreal’s volumetrics, and I think you could get pretty sharp details but whether or not it runs at acceptable framerates really depends on the budget. OP said they had no environment in the scene so they could most likely afford to put the majority of their frame budget into just rendering the clouds.

Certainly if you can get away with using sprite clouds it can be a very performant choice, but I think volumetric clouds are still the way to go for quality, even if you have to sacrifice some crispy detail.

1 Like

You can mix the 2 by custom shader and ray marching.

You just need to calculate the light level of each specific pixel. Based on ray penetration into a volume.

For older gfx that’s hell - so you fall back to a sprite.
For newer cards, this is trivial. Even a 3060 has enough overhead to calculate each pixel on a 4k screen several times over before rendering…

What would be most helpful, is a system to draw up clouds in engine and render the final sprite as a finalized 2d transparent PNG.
Obviously that will lock in the light vector to a specific coordinate.

At which point for older cards you could loop several images based on the light vector incidence.

Mind you, this is pure theory at the moment.
Achievable outside the engine though.

Not 100% sure I get what you’re describing but I’m reminded of the 6D fake particle lighting post on RealtimeVFX: Smoke Lighting and texture re-usability in Skull & Bones - Real Time VFX

Basically baking the lighting into the individual color channels and interpolating between them based on the light vector. Results are pretty nice:

1 Like

This and the other share are both excellent.

The sprite/get base color from baked vertex color tutorial particularly.
Even if it’s not the Fluffy ray marching I’m used to today, those looked 100% better than most other cloud system. Even the paid marketplace sky stuff tbh.

Updating that tut for Niagara usage would probably bring performance up a bit on older systems too.
The baseline problem is the transparent material.
Using non transparent with faked temporalAA may actually work better from a distance to get a more " solid" looking cloud base.

Not sure if mesh is the way to go, but it is a collection of vets with color info that is already accessible.
Don’t think it gets much more optimized than that…


What I was describing was more along the lines of an Impostor Baker for clouds.

You build the cloud up in engine with all the latest BS that makes the engine render at 2fps.
And then you photograph it from multiple angles generating a sprite impostor.
You do this several times with different light vectors, and then you use the correct sprite based on the angle that the light is at.

The end result is somewhat cheap - but at a distance should look quite nice, for a fraction of the cost of actual raymarch…
In theory at least - we all know how the engine gets with too many images of too large a size :stuck_out_tongue:

1 Like

Hi, original poster here. Thank you so much for all the different resources and ideas, you’ve all totally opened my eyes.

I think I’ll be pursuing a sprite-based method for now (a bit easier to wrap my novice head around and implement into a pipeline than volumetrics), but I’ll definitely be looking into the other suggestions as well. Thank you!!

1 Like