• entries
    13
  • comments
    55
  • views
    20319

Cloud.gen

Sign in to follow this  

2199 views

'allo


Something I've vowed several times I'd never do again: hand-paint a skybox.

The outdoor cloud-ish type specifically:

cloudmap.png

Painting clouds is all fun and fulfilling, until you need to fill out a full 360 degree view with dozens of them.

I preferred to draw a cloud scene as a spherical environment map; stretch around the outer regions is somewhat easier to deal with than the discontinuities along borders of the six faces in a cube map. (I always do my painting in Painter, so no clever 3D painting across seams for me.) Then you get the obvious issues with lighting (time of day etc.), that often require a complete repaint if you do not plan properly.


Anyway, the interface of the 'cloud tracer'-tool as it is now: smile.pngoptions = [ "mesh" => loadmesh([ "path" => "D:/Temp/Cloud.lxo", "mask" => "Bake" ]), "env" => loadimg([ "path" => "D:/Temp/Cloud_Env_2048.exr", "gamma" => 1.0 ]), "coverage" => loadimg([ "path" => "D:/Temp/Cloud_Coverage.png" ]), "normal" => loadimg([ "path" => "D:/Temp/Cloud_Normal.png", "channelmap" => [ 0, 2, 1 ], "levelmin" => -1.0, "levelmax" => 1.0 ]), "density" => 0.025, "densityhaze" => 0.00025, "tilelevelmin" => 0.4, "tilelevelmax" => 1.0];saveimg([ "textures" => tracer(options) ]);
The "mesh":

cloudrep.png

CREEPY. unsure.png

I skipped the simulation pass I initially planned on implementing, and simply modelled and replicated a series of basic cloud shapes. These cloud parts are all made up of smaller convex elements, which makes ray-testing fast and robust (occlusion tests against translucent convex objects make up the bulk of the work). I've also been meaning to try and run a radiosity solver on a low-resolution proxy mesh and have its results mapped back onto higher detail geometry - these convex bits seemed like a good candidate.

"environment":

cloudprobe.png

Illumination comes from a single light probe for now.

"coverage"/"normal":
cloudslab.png

I got to doodle some more clouds by hand: geometry is expanded using these normal mapped 'depth billboards', which then have results from the lighting pass projected onto them. They're cheaper to render than volumetric textures, as there's no ray-marching involved. Also, 2D textures are far more straightforward to produce. I might come back to volume textures for other reasons later though.

Then there's some stuff about global cloud density and fog values for space in the scene that's not occupied by cloud geometry.



LET'S RENDER AND SEE:

clouds4.png


k.

- Clouds need to be a bit more whispy here and there.
- The in-modeller point cloud replicator I used does a fairly good job at coming up with interesting cloud shapes, but I feel a custom distributor could still do better.
- The radiosity pass finishes pretty quickly as I had hoped, but tracing the final 2048 * 2048 image takes a while running on the cpu - needs more Compute.



Apologies for all the going back-and-forth with the camera.


Lastly, a bit of blatant self-promotion: I've been looking to do some graphics/tools programming for a U.S./European studio. If anyone can think of someone who might be interested, I'd love to hear (doesn't have to be game related per se).
Sign in to follow this  


8 Comments


Recommended Comments

That is extremely slick sir. If you're using Unity, I recommend you package it up and put it on the Unity Asset Store. smile.png

Share this comment


Link to comment

Not sure, Riu - up until now I've always created these tools as portfolio demos.

Share this comment


Link to comment

well those tools are epic! you should really look at some form of monitization. Especially since they are for c# enviro's.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now