I have been working for some weeks (!) on an earth space-scene for a live action short that I want to make. This is part one in that project. The other part is about a space station/ship that was actually the beginning. Because of the differences (thats more about modelling) I have decided to post that later, separate.
Since my only workhorse is a macbook air I have put quite much work into finding fast optimized ways of doing things. Yes, I cheat as much as possible (My knowledge is the limit). My goal was to make a fast renderable scene that still looks “nice”.
Maybe I should also add that I had never used blender before this project so there’s a lot of trial and errors included in this RND time, but I like to see it as a proof of concept if I succeed.
I have also gone back and forth between blender Internal and cycles because I found that I could produce similar quality with a lot faster render times. However, I finally decided to stay with cycles, because of the fantastic node features. I didn’t get any nice volumetric effects in BI anyways so…
Goal
I want a model of the earth that is realistic (cinematic) with following properties:
- specular oceans
- volumetric clouds
- atmospheric effects such as raylight scattering and halos
- real displacement if closeup on mountains
- good looking from far
- cycle materials and nodes
- fast renders <5 min frame
- Something I can take pictures at from any angle
Heres what I have so far:
All images are rendered with only 10 samples.
I have reinvented some old techniques
Volumetric clouds.
I didn’t succeed in using the volumetric shader from 2.4 (or whenever it existed), so I have created my own workaround. I have tried several methods with particles and displacement modifiers, but not with any good result. This is the best so far and will be sufficient for my angles and distance.
My setup is a sphere that is repeated with an array modifier. I have then put a material mapping node that scales the mapping in the normal direction. This gives me a factor change from the top cloud layer to the bottom one. Using this factor I could then add ramps for both color change (white at top and bluish in the bottom) and contrast. The contrast node kind of shrinks the cloud in a way that allows me to adjust its height shape. I think the result looks pretty good, and my setup is easily configurable so that I can increase the number of layers by just changing the number at the modifier. At the moment they are a bit spiky, so I might work some more on this.
Rayleigh scattering
Oh my I have searched the internet for an OSL solution to this. All I needed was the light vector. Since the “getAttribute”-node didn’t seem to work for this I have now just used a manual coordinate in the node system (by making it a group I only have one place insert the vector).
With the light vector I have created a ramp that shades from white to black via some orange and blue. Just adding this groupnode on my pseudo-volumetric-cloud-shader I got nice looking sunsets :).
Real displacements
To give the earth-sphere real displacement without doing subdivisions, giving it 2M faces, I decided to do partial subdivision for where the mountains where. The way I did this was to:
- start UV-mapping the sphere
- add a subdivision modifier, press show in edit. (don’t apply it)
- add displacement modifier with displacement texture (don’t apply it)
- go into edit mode and simply paint (C key) the polys that are displaced.
- When partially selected, subdivide from edit mode. (you can now lower the subdiv modifier)
- Now you can deselect all and paint again adding more detail where needed.
rinse and repeat.
After 3 times I could have subdiv set to only render 2 times (when rendering) without any change in the displacement modifier. (ended up with about 42 000 faces)
Halos
To be done. Will add same technique as with rayleight scatter to shift the color when near the terminator.
Stars
To be done. When I have tested this before (with my ship), the stars easily get blurry when you do close ups. Therefore my plan is to take a real star-texture as input to an OSL that will put a virtual star on each white dot in the real texture. This way I can get a controllable starmap that is “real”, and also easily add noise for increasing resolution. VarkenVarken has made some star-shader that I will look at for this. Another alternative might be possible with a particle system… I will look into whats easiest.
Optical Flare
This will be the hardest part I guess. I’m not sure how to implement this but I suspect I will need to code some phyton. I found a good setup for optical flares, but I want an automatic solution that will animate when partly covered etc. Any suggestions are welcome.
I can’t come up with anything more… but I sure have missed something.
Any suggestions/critique are welcome, especially if you have ideas that give faster/better result. (and, not buying a Pc…
Cheers