Jump to content
  • Advertisement
Sign in to follow this  
Anfaenger

Voxel Terrain - Updating LOD hierarchy after modifications

This topic is 581 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi!
 
I'd like to be able to edit a procedurally generated voxel terrain.
 
The terrain is represented by an octree which subdivides itself depending on the viewer's position.
LODs are generated on-demand, progressively, from top to bottom.
Each leaf node contains a mesh representing a part of the terrain surface at this node's LOD.
Cracks are handled via geomorphing.
I can fly over a large (~20 km) and boring terrain without any cracks/T-junctions (except for pixel-sized gaps far from camera).
 
Here is a picture from a week ago (gyroid, each LOD is 4x4x4 cells):
 
vGoofac.jpg
 
1) How to re-generate the LOD hierarchy after some parts of the terrain have been modified?
I want to be able to edit the floor right in front of the player (LOD0) as well as distant mountains (e.g., LOD6).
In the former case, LODs of can be rebuilt lazily, via 'dirty flags'.
But for far-away montains, LODs should be updated quickly, because they are currently being used for rendering.
So, when recalculating LODs of 'dirty' nodes, I need to check if their parent is being used, and so on, all the way up the tree?
Or maintain a queue with IDs of changed nodes, and after processing all nodes of LOD 'N'
push onto the queue the IDs of their parents (LOD 'N+1')?
There are other complications, e.g. ensuring that old border vertices are kept untouched during simplification
so that the simplified, 'bottom-up' mesh connects seamlessly with procedurally-generated, 'top-down' parts.
Actually, I have no idea how all of it should be implemented together.
 
Could you please refer me to papers/code, or give me some ideas?
 

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!