In the process of making some pictures for recent blogs, I’ve found myself messing around quite a bit with Blender. There’s things I’ve done before on Blender that I had completely forgotten how to do, and there are other things that are somewhat involved to do in Blender that other programs pull off without a hitch.
Some of this comes down to the general purpose nature of Blender as compared to the more focussed purposes of other programs. Displaying a map on a rotating globe is fairly easy for gplates, because that’s one of its core competencies. On the other hand gplates isn’t capable of displaying raytraced specularity variation across a planet’s surface or showing proper hillshading due to surface topography. Bryce, on the other hand, is capable of doing these things, to some degree, and to some degree some of these things are easier. Bryce is getting pretty long in the tooth at this time, though, and even fairly simple renders are sloowww. Terragen is pretty sweet. Like Google Earth with raytracing and your own world’s terrain. Unfortunately, my family has to eat and stuff, so Terragen is right out…
Creating a Globe
Our first step will be to create the globe we’ll be texturing. On the menubar, select Add>Mesh>UV Sphere. Since we’re not going to do UV-mapping on this one, I’m going to go ahead and smooth the thing. First, go into Edit mode and in the 3D View menu select Mesh>Faces>Shade Smooth. Next, return to Object mode. In Parameters, select the Modifiers tab. Click Add Modifier(wrench icon) and select Subdivision Surface. Set Render to three subdivisions and click Apply Modifier. If you like, you can forego applying and simply leave the modifier in place. Whatever you choose, you now have a globe. Now to texture the thing.
Loading Spherical Image Textures
The first problem to solve is loading equirectangular projection(or “spherical”) images and using them as textures. Surprisingly, this seems easier with UV-mapped icosahedral textures. Although, to be honest, I did all the modeling and UV-mapping in Wings3D. For this purpose, I’ll be using textures generated by the Tectonics.js program. I am aware that these aren’t necessarily suitable as-is for this purpose, but this can be considered sort of an early evaluation prior to spending a lot of time optimizing them.
I’ll start with the bedrock texture. This is the simplest, because it’s simply a color, which is the easiest thing to apply in Blender. Making sure you have your globe selected, go to the Material editing tab(brass ball icon) in Properties. There will be a button that says New. To the left of that will be a pull-down that allows you to browse materials. If you started with an empty scene then the only material in the list will belong to the sphere you made. Select that. Rename it if you wish. For now we’ll leave the settings as-is. It’s hard to tell what effect the various shading options will have till you have the textures onboard.
Bring up the Textures tab(checkerboard square). The currently selected texture will be imaginatively named Tex, and its type will be None. Change the type to Image or Movie, and, if you like, change the name to something more descriptive of its role as surface coloration. While you’re up there set the Preview to Both, so you can see the texture image and get some idea what it’s going to do. Make sure the preview render is on a sphere.
Now, scroll down to Image and click Open. Pick out the desired image from the filesystem. In the preview, you’ll see that the texture is about what we expect, although squeezed into a square. The material preview, however, is going to be disappointing. This is because the projection of the flat texture onto the sphere is wrong. Let us now fix that.
Scroll down to Mapping. The coordinates seem to be fine as Generated, so we’ll leave that be. Let’s change the Projection to Sphere, and have us a look at the preview. The material should be much better.
Let’s make a trial render to see how this came out. Go to the Render tab(camera icon) and scroll down to dimensions. Set the X and Y resolution to whatever you’ll want as your final render size and set the scale to 50% to speed up your trial renders. If your desired resolution is much less than 1000×1000, maybe you should leave scale at something closer to 100%…
Scrolling down to Output, you can set your image format and related parameters. I’m not too worried about that at this stage. I’ll just let the trial renders live in slots within the program till I’m ready for a final render.
Scroll back up to the Render pane. I usually set Display to New Window for convenience, because it defaults to Image Editor and replaces your 3D View window with an Image Editor window. Set that as you like… Click Render or press F12. Not the prettiest thing ever, but the texture seems to work. It seems to me, the seas should have more glare than the land. Let’s see what we can do about that.
Now, previously in Photoshop, I created a Sea mask image by making a magic wand selection of the water in the bedrock image and saving the resulting channel to its own file. I also made a land mask image by saving an inverted version of same. I go back to the Texture tab and select an empty texture slot. Hit New and select Image or Movie. Scroll down to Image, hit open and select the sea mask image. Make sure to uncheck Use Alpha under Image. This image doesn’t have a useful alpha channel, so we want it to use the greyscale rgb as alpha, which is what it uses to control intensities. Set your mapping and such as with the previous texture. You’ll see the black and white image in the texture now, instead of the bedrock colors, but at least it ain’t a white cueball and everything’s in the right place.
Scroll down to Influence. Uncheck Diffuse Color, check Specular Intensity. Maybe check Hardness under Specular, as well. The sea colors seem a bit bright, so you could use this to put a large negative influence on diffuse intensity as well, but, in my limited experience, that is fraught with issues(it tends to brighten the land too much, it’s a bear to adjust, and the color of the water tends to get way too deep and saturated by the time you’ve gotten it dark enough). Best way to adjust colors, for the moment, is probably in the texture itself, using your favorite image editor(not, in my case, by any means, Blender). Try another trial render.
At this point, you should adjust the parameters on the material and textures. This will involve a certain amount of trial and error, jogging between the textures and the material controls and frequent trial renders. Try other controls as well, such as the other texture influences and stuff in the Shading panel of the Materials tab.
Next thing to do is to give the globe a bit of relief. Once again, we select an empty texture slot, create a new image texture, load an image(this time elevations) and set the mapping and such. Uncheck all of the influences except Normal, reduce the strength of the normal to at most about 0.5. Unless of course you want to intentionally exaggerate relief in order to bring out smaller features.
This would be a good time to try a preliminary full render. Take a note on the dimensions of the planet sphere. Once we have the planet surface the way we want it, its safest to go up to the Outliner and restrict viewport selection of the planet surface object. Just click on the arrow icon to shadow it, click on it again if you need to change the planet in the future.
Making a Cloudsphere
Now we add a new sphere with the same center as the planet globe to put the clouds on. My notes say that the X/Y/Z dimensions of the globe are 12/12/12, and I want the clouds to hug the planet pretty closely, so I’ll size it to 12.35/12.35/12.35 after smoothing and such. Make sure to smooth and subdivide the clouds sphere as you did the planet. Create a new material, and zero its diffuse, specular and ambient values(at least initially). Check Transparent and set it to Raytrace. Set alpha to zero. Go down to the Options pane and turn Traceable off. Traceable always seems to make the planet surface render solid black, I’m not certain why. Do a quick test render to make sure the planet surface is still visible.
Add a new texture for your clouds. Figuring out a noise that looks good for global clouds is a problem I’ve yet to solve, so I’ll leave you to work out the details. I used a Distorted Noise with a Voronoi F2 basis and considerable Improved Perlin distortion. In Mapping, I stretched the size by about three in the z-coordinate. Best results could be attained by loading a real world global cloud map, but these sometimes show evidence of Earthly continent shapes to the wary. An artist could try painting in a cloud map, but my skills aren’t remotely up to that. For now, this will have to do.
I put a ramp on the colors. It’s all white, but the alpha is 0.8 on the right and 0.0 on the left. I added another 0.8 alpha stop at the 0.965 position, and another 0.0 alpha stop at position 0.480. The ramp allowed me finer control over cloud cover. A final render with clouds is in order.
Next we add an atmosphere. This is still very much a work in progress. I’m trying for something like a LunarCell atmospher with more control and realism. I haven’t yet attained the first goal. I’m pretty sure Blender has a way to make volumetric density fall off with distance from the center, but I haven’t figured it out yet. If I can figure out how to make an object presence mask, like I can in Bryce, then I could possibly do something useful with a radial gradient in photoshop. No dice yet, though. To start with I’ll just settle for a volumetric ball with some scattering.
So, first we make a nicely smoothed and subdivided sphere with X/Y/Z dimensions of 13/13/13. We create a material for it. Make the material transparent, with density, oh, let’s push it down to 0.1. I’ll rack the scattering up to 1.0, with a -0.5 asymmetry, meaning that more light is back scattered. A test render and… that didn’t come out well. Must remember to uncheck Traceable in the Options pane of the Material. Try again… success! Looks a little extreme, though. Since density should already be pretty subtle, I’ll start by reducing the Scattering values a bit, especially the amount. By the time I’m done with the whole test render(30% size, now, ’cause it’s not quick), adjust, render again process, I have a density of 0.12 and a scattering of 0.3 with 0.0 asymetry. It looks good, but maybe a little too wide so I reduce the size of the atmo sphere to 12.7/12,7/12.7.
I’m pretty happy with the results. The shaded relief needs work in Wilbur, and, in spite of a lot of fiddling, the cloudmap isn’t nearly as good as what LunarCell can do. Which isn’t actually very good. LunarCell is good for pretty pictures and it’s mapgen isn’t bad so far as noise-centered generation goes, but it’s cloudmap generation is socially awkward at best. Sadly, it’s about the best clouds-from-noise I’ve seen… Looks ok from a distance, but it needs work. I’ll probably just have to bite the bullet and use real-life clouds.
Hopefully, this was useful to people. If not it should probably be a good reference for me. I’ve gotten pretty good with the very basics of Blender, but beyond rendering models as monochromatic plastic toys, materials have had me flummoxed. This should be useful next time I’m trying to texture a spaceship. It should also make a good background.
For my next trick, the real reason why I jumped into Blender with this in the first place, a revolving-head animation of the planet. Now I’m well away from familiar shores!
Thanks for reading all of this, and any comments and advice are very very welcome.