Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 28 Jan 2013
Offline Last Active Feb 26 2013 08:57 AM

Topics I've Started

OpenGL Procedural Planet Generation - Quadtrees and Geomipmapping

28 January 2013 - 08:57 AM

Recently, I've been looking into procedural generation in the form of a planet. After reading many many articles i managed to create my own 'planet' though some work still needs to be done for it to look like a planet and yes... The repetition of many was intended. Before i can really start making my planet generate nice terrain i will need to implement some form of LOD. After reading through pretty much all of the articles on LOD that are on http://vterrain.org/LOD/Implementations/ i believe it would be best to use a Quadtree due to how i create my planet.

So first off here is a picture of my planet:
That picture might be a bit big but you get the idea... So the planet has it's heights generated on the shader using perlin noise and so it can change in real time. However, it is clear that the scale is all wrong. I need an adaptive quad tree to achieve good looking terrain at space, atmosphere and ground levels. The only problem is... I don't know how to fill the quad tree with the data.

How is the vertex data stored in a quad tree and split? Splitting the quad tree is one thing but splitting the data is another.

My implementation is done like this article - http://acko.net/blog/making-worlds-1-of-spheres-and-cubes/
I create the sphere from a cube by normalizing it. So this brings me on to another problem: I'll need 6 quad trees to split my planet up. One for each face. How will i extract the planes to subdivide them from vertex data?

My last question is how do i actually fill the quadtree with the data. Most examples on the internet all use things such as Ogre/Irrlicht/D3D and i haven't seen any detail on how to do this in OpenGL. Some source code would be a great help. If you require any of my source code to answer just comment and i will attatch it. For example - How could i change this to hold vertex data - https://github.com/veeableful/Adaptive_Quadtree_Minimal Thanks in advance.

A video of the shader noise generation can be seen here: