Thursday, September 8, 2016

Playing with planets again

I made some more progress with the planet generation program.  2D (map) and 3D (globe) visualization options are now available.  I've also been reading the eARC for 1635: The Wars for the Rhine by Anette Pederson, which is why I've only made a little progress this evening.

I still need rings for the gas giants, and some sort of color randomization (all bands currently get generated in same order each team). Variable turbulence levels would be nice, too.  Blander gas worlds like Neptune and Uranus may need another approach.

Perlin's marble texture used for a gas giant like Jupiter.
The rocky worlds need craters (at minimum) to seem more realistic, but I'm starting to like the way they look.  I did notice somebody who was working on craters for a space game they were working on, and they've got their C++ implementation available online.

There are still some failures, though.  The cloudy planet like Venus utilizes my implementation of Musgrave's Coriolis algorithm, which is built upon his VLfBm (variable lacunarity fractional Brownian motion) algorithm, which in turn depends upon his VLNoise algorithm, which in turn is dependent upon Ken Perlin's DNoise (derivative of noise) algorithm. . . which I failed to implement properly.  Alas, searching the web reveals few properly working implementations, so it looks like I'll need to do some additional research to understand how to implement an algorithm that calculates the derivative of Perlin noise.

And here are a few interesting failures along the way.

This was due to problems in trigonometry.  This is supposed to resemble a gas giant like Jupiter.
The map of cloudy planet looks more like the opening titles to a vintage episode of Doctor Who.
So, priorities in the near future: craters, rings, acceptable DNoise implementation.

No comments:

Post a Comment