Jump to content
  • Advertisement
Sign in to follow this  
ECrevecoeur

Fustrum Cull Question

This topic is 4400 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

Is it more efficient to funstrum cull with a bounding voulme hierachy or a Octree for outdoor rendering and why is it. Also is there a non linear way of doing fustrum culling. Thanks to anyone who is willing to help.

Share this post


Link to post
Share on other sites
Advertisement
Now I'm by no means an expert, but I'm pretty sure you can do both. Basically, you frustum cull the octree leaves and if a certain leaf is partially within the frustum, only then do you frustum cull the polygons within.

Share this post


Link to post
Share on other sites
I experimented with both of these. In my opinion arbitrary bounding volume hierarchies are easier to set up and use plus they use way less memory. However, they seem to be slower when it comes to very complex scenes and queries, so I think octrees are a better solution.

The advantage of an octree is that it contains a very organized representation, so you can factor location and direction into any query much better. For example, finding objects intersecting a ray is made very easy because you can just traverse the octree nodes along the ray (since every node has a cross pointer to its neighbor in a given direction). To do this with a non-rigid type of BV structure you would have to check all the other BV levels to see where the ray re-enters the structure, which means alot wasted time traversing tree branches (unless you keep alot of cross pointers, but then it becomes a kind of octree anyway).

Furthermore, queries involving distance are much faster. With an octree it takes a single pass down the tree to find all objects within a given distance of a certain point. With a non-rigid structure, it might take multiple passes.

Finally, inserting objects into an octree is much easier (conceptually, it can be hard code-wise), because all you have to do is plop it down in the octant it should be. Without the volumes pre-defined like that, it gets complicated. Which existing BV should be enlarged to accomodate the new object? Which cross pointers should be created? Should another branch be created?

In short, in my opinion, the rigidness and well-defined nature of an octree means superior performance in most situations.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Use both. It's a no brainer.

Share this post


Link to post
Share on other sites
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!