I am currently debating with myself over what kind of visibility culling technique to use in my rendering system, and I have pretty much narrowed it down to two choices: BSP trees and octrees. I have experimented with voxel storage in the past, and used sparse voxel octrees, but I have never used a BSP tree. In the project that I am currently working on, the (outdoor) environments being rendered will be just big enough to make use of a LOD system, and are generated from heightmaps, but I was told that an octree would be more fitting for that purpose, and would also be better for collision. I was also told that it is much easier and more straightforward to implement a BSP tree system than it is to implement an octree system. Would a LOD system and large outdoor scenes be a good idea with BSP trees or octrees? I very much appreciate any response.
LOD System With BSP Trees?
Started by MrJoshL, Jan 12 2013 06:14 PM
2 replies to this topic
Ad:
#2 Members - Reputation: 651
Posted 13 January 2013 - 11:25 AM
Often, with modern CPUs simpler is better.
Ask this question: given a vector of bounding spheres, how many can you cull before it has the slightest impact on performance? You can divide the world into a grid of that size, and that might be all you ever need to do.
Quad trees are not faster for collisions either, unless you are doing long ray traces. Otherwise you can look up the grid square in constant time and never have to traverse a tree at all.
I would use separate data structures for collision and rendering, even if they are similar. Usually collision needs a fraction of the data that rendering does.
Ask this question: given a vector of bounding spheres, how many can you cull before it has the slightest impact on performance? You can divide the world into a grid of that size, and that might be all you ever need to do.
Quad trees are not faster for collisions either, unless you are doing long ray traces. Otherwise you can look up the grid square in constant time and never have to traverse a tree at all.
I would use separate data structures for collision and rendering, even if they are similar. Usually collision needs a fraction of the data that rendering does.






