[Tutorial] Instant-Insertion Quadtrees

Started by
13 comments, last by Froyo 11 years, 2 months ago

Thanks again L. Spiro!

Advertisement

Cool approach. To manage the memory requirements in a large-yet-dense 3d world, it might make sense to store traditional oct-trees within this type of structure to have cache friendly step prior to a traditional broad phase collision detection.

I mention a few ideas on how to extend it into 3D at the bottom of the article and the way I am likely to do it when I get around to it is to use this method exactly as-is for the X and Z and use stacks for the Y (vertical).

To be honest, you don’t even necessarily need a vertical partition in most outdoor games, and indoor games use PVS’s, which you could couple with this type of quadtree (after testing to see if it makes sense for you), but even then you wouldn’t need a vertical partition most of the time.

Imagine a world that is 10 kilometers by 10 kilometers. As a cube that means your octree would also be 10 kilometers tall, yet 90% of your level is likely to be in the root node or just the second node down, betrayed by its vertical proximity to the center of the octree.

So my feeling is that 3D should be handled by a mix of this method (completely as-is) for the X and Z and something entirely differently (if at all) for the Y.

And also, whatever method used for the Y (for me that will be stacks—just divide the world vertically by a fixed number of slices) can still benefit from better caching by being part of that same pool as the one used in the quadtree here. Just extend the size of the pool by whatever is needed for the vertical slices and you should still keep decent caching.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Yup, I did read that part of the article, and it's a good observation for a 3d game which largely only expands in 2-dimensions.

But sometimes you need richness in that 3rd dimension, as well. E.g. a space simulation.

I really need to find a good tutorial like this for Java. The ones I've looked at haven't been much help.. maybe it's just me though.

This topic is closed to new replies.

Advertisement