View Full Version : An Example of planetGenesis

03-24-2008, 02:54 PM
Okay, so FT isn't available for mac. What to, what to do... Well, I've been considering solid noise a lot lately. I tried doing multiple levels of difference noise in pG with disappointing results. None of my attempts looked nearly as good as photoshop Difference Clouds. Finally I realized: Difference Clouds must have used billowy perlin noise.

So I built up billowy simplex noise in pG(the simplex looks slightly better in my opinion than conventional perlin built on squares and cubes, and it's faster(!)) connected them together with subtract combiners fed into absolute functions. The first three perlins were built on a noise size of (3,3,3), then I built the next three on(6,6,6), three more on(9,9,9), and the last three on(11,11,11). Finally, I added a ridged simplex noise sized at about(3,3,3) and Rough Scaled to about 2/3 of the amplitude of my difference noise result in an attempt to build up some continental-scale variation. Then I started the render(8192x4096: A monster, but still a scale of almost 5km per pixel). Planets are big places. Remember, with only a few dozen exceptions every human who has ever lived has spent their entire life on one single planet. With only those few exceptions every adventure that has ever happened, every historical event that has ever occured in human history every empire great or small, on that one planet. According to NASA at least, every physical act of love has occured on that planet. Wow. So a planet deserves a big heightfield in my opinion.

The next morning when I woke up, I checked the computer. The render took an hour and fourtyfive minutes. Longer than most of my Bryce and Blender renders. Just for an HF. I remind myself that a planet is a big place. I was sleeping anyway so who cares. So I load that up in photoshop cs. <sigh>Wait for it, wait for it, there we go. I put in a gradient map adjustment layer with one of my favorite gradients. I add a layer on top of that and fill it with 50% gray. Then I run Lighting Effects with the big HF as my channel. Play with the blending on that layer until I like the look of the relief shading. Finally, I run a Threshold to find a good sea level. Uggh! I either get tiny islands spread evenly about or tiny lakes spread evenly about. I needed more low-frequency noise.

Instead of rerendering for the next hour or so, I add another multiplication layer above the HF. I fill it with medium gray(about 50-75%), then I draw in seas in a darker gray and higher regions in a lighter gray. For best results add several levels of grey. A Gaussian Blur on that layer to get rid of hard edges. I need a faster computer.

Once I found a threshold I liked I used that as the layer mask for my sea layer. For the sea layer itself I chose black and white for my bg and fg colors then I ran Clouds followed by several Difference Clouds. Then I used a couple of my favorite sea colors from my personal stock of swatches(build one of those...) for the fg and bg colors. Then I ran a simple fg to bg Gradient Map. Then I used the Brush Strokes>Spatter filter to spread things out and finally the Distortion>Ocean Ripple filter. Because, I was lazy and used the non-spherical Clouds filters, I need to use the Flaming Pear freeby Sphere Warp B(Sphere Warp A sucks. Not as good as the pG noise but slightly quicker. Better results could be obtained in not much more time with a much simpler and lower frequency/lower octave variation of what I did to make the HF). Starting to look OK, though. I invert the layer mask 'cause I realize my oceans are on the high points of the HF. Oops! Still OK, but needs something. I add a fairly thin sandy-colored Outer Glow layer effect to the sea layer. This provides an outline that vaguely suggests beaches. Did I mention photoshop was running a bit slow. Now it's getting glacial. I also add a wider, softer Inner Glow in light blue to suggest surf.

Here's a closeup in actual resolution and a greatly reduced resolution version of the entire planet. I think I'm almost ready to try out Handsome Rob's tutorial.

03-24-2008, 04:43 PM
Very cool! Thanks for the detailed rundown of your efforts; the results are looking great! Can't wait to see what you do next!

03-24-2008, 07:45 PM
The mountains look a bit too homogeneous over the entire landmasses. Would it be possible to apply an offset exponent to the heightfield to generate some plains and restrict the mountains to tighter ranges? (That is one of the reasons I prefer ridged multi-fractal noise over perlin noise... Just looks more natural to me :) )

-Rob A>

03-26-2008, 03:59 PM
The mountains look a bit too homogeneous over the entire landmasses. Would it be possible to apply an offset exponent to the heightfield to generate some plains and restrict the mountains to tighter ranges? (That is one of the reasons I prefer ridged multi-fractal noise over perlin noise... Just looks more natural to me :) )

-Rob A>

Yeah, I've been having a lot of trouble with one form or another of homogeneity. I'm not a huge fan of ridged perlin, but it is a useful tool. Right now I'm experimenting with a somewhat different approach. I sum together a ridged and a straight simplex(with limited multi-fractal character) and clamp and scale the result so that the upper 2/3 of the noise(about) span from 0 to 1 in value. I then squareroot the result. That produces the continents. The mountain ranges I produce with a fairly low frequency ridged simplex, again clamped and scaled as before. I multiply this by the continent values as they were before they were exponentiated. I then create a much higher frequency ridged simplex as the mountains themselves, I square these and multiply by the complete mountain range noise.

At long last I create a moderately high frequency billowy simplex noise to act as a back ground to everything else. Since I want a very small rolling hills effect here, I'm considering whether to square root this(renders take long enough already and the contribution from this noise is so small that I probably won't). This will be scaled and will act as a base for the other noises. I add the continent noise to this rescaled for best results. Then I add the mountain range noise again rescaled to where it looks best. Finally, I add in the small scale mountain ridges.

Adjustments are best made in low res(like 640x 320) for sanity's sake. Even with that there are sometimes surprising results when rendering in highres.

If my latest attempt looks good I'll post it or maybe I'll save for a Guildworld comp ;)...