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.
Members - Reputation: 659
Posted 13 January 2013 - 11:25 AM
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.
Crossbones+ - Reputation: 4479
Posted 14 January 2013 - 07:43 AM
one way to handle it is to add meshes to leafs of BSP trees, and swap them depending on what LOD you like. I think Quake3 does it that way.