Jump to content
  • Advertisement
Sign in to follow this  
cvg_james

Transition from indoor to outdoor environment

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

What kind of space partitioning system would be suitable for both terrain AND indoor environments? Would you use two separate implementations or would oct-tree be sufficient for both?

Share this post


Link to post
Share on other sites
Advertisement
Octree would be sufficient IMO. But BSP is better for indoor environments. You could try a hybrid approach have an octree than could have as a leaf node an entire BSP tree.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
before you run off and implement a bsp in an octree - realize that bsp trees are pretty much becomming outdated. This is because BSP return the exact polygons of a scene with no overdraw. This was important when filling a polygon took forever, but todays cards run better in large batches, so returning the exact sliced geometry for each poly isnt really neccessary. So in short BSP works at the polygon level, while octree works at the grouped/batched level. Id say keep with an octree or ABT tree and use portals or occlusion culling (image space) to solve your problem. You will be much happier. Note that BSP can still be useful for things like collision detection still.

Share this post


Link to post
Share on other sites
Quote:
Original post by Anonymous Poster
before you run off and implement a bsp in an octree - realize that bsp trees are pretty much becomming outdated. This is because BSP return the exact polygons of a scene with no overdraw. This was important when filling a polygon took forever, but todays cards run better in large batches, so returning the exact sliced geometry for each poly isnt really neccessary. So in short BSP works at the polygon level, while octree works at the grouped/batched level. Id say keep with an octree or ABT tree and use portals or occlusion culling (image space) to solve your problem. You will be much happier. Note that BSP can still be useful for things like collision detection still.


If BSP trees are outdated, then why does Doom III, Halflife 2, FarCry, UT2006, and many other top of the line games use them?

Share this post


Link to post
Share on other sites
Quote:
Original post by oconnellseanm
Quote:
Original post by Anonymous Poster
before you run off and implement a bsp in an octree - realize that bsp trees are pretty much becomming outdated. This is because BSP return the exact polygons of a scene with no overdraw. This was important when filling a polygon took forever, but todays cards run better in large batches, so returning the exact sliced geometry for each poly isnt really neccessary. So in short BSP works at the polygon level, while octree works at the grouped/batched level. Id say keep with an octree or ABT tree and use portals or occlusion culling (image space) to solve your problem. You will be much happier. Note that BSP can still be useful for things like collision detection still.


If BSP trees are outdated, then why does Doom III, Halflife 2, FarCry, UT2006, and many other top of the line games use them?

Read the last sentence of the AP's post again.

John B

Share this post


Link to post
Share on other sites
Quote:
Original post by JohnBSmall
Quote:
Original post by oconnellseanm
Quote:
Original post by Anonymous Poster
before you run off and implement a bsp in an octree - realize that bsp trees are pretty much becomming outdated. This is because BSP return the exact polygons of a scene with no overdraw. This was important when filling a polygon took forever, but todays cards run better in large batches, so returning the exact sliced geometry for each poly isnt really neccessary. So in short BSP works at the polygon level, while octree works at the grouped/batched level. Id say keep with an octree or ABT tree and use portals or occlusion culling (image space) to solve your problem. You will be much happier. Note that BSP can still be useful for things like collision detection still.


If BSP trees are outdated, then why does Doom III, Halflife 2, FarCry, UT2006, and many other top of the line games use them?

Read the last sentence of the AP's post again.

John B


But the rest of his post says BSP trees are not good for general use. That is incorrect.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Graphics wise, to get high frame rates on todays hardware you need to make sure you batch your polygons. In a BSP tree you get back the exact scene geometry per triangle. Therefore you build up a list of triangles you need to render and then render that grouping. The difference with an octree is that at each leaf node I have a batch of geometry ready to be rendered. Because of this I do not have to process the scene per triangle. The batching become friendlier to the hardware because you do not touch any buffers and you feed it sufficient sized batches. Therefore an octree would have more overdraw than a BSP solution, but by rendering batches from front to back overdraw is kept to a minimum (zbuffer test). Because of this BSP are becomming outdated (for graphics) because fillrate is no longer the determining factor of performance. The main limiting factor in present hardware is proper batching. You want to render as many polygons in one call as possible. Octrees for example utilize this because of the leaf batches. These batches are often cached on the video card as well, because the geometry buffers are not being touched/created (like in a BSP solution). Therefore it increases bacthing performance but also increase overdraw - which as stated is not that big of a factor anymore.

BSP trees are however still useful. Since collision detection is handeled on the triangle level, using a BSP for collision detection (especially due to the binary space partitioning of the structure). BSPs are also very memory intesive due to the splitting of triangles. Although BSP are very good for collisions there are other solutions that work quite well (like sphere trees). So BSPs are very good for collision detection but are not that hardware friendly for rendering anymore.

Quake uses BSP because they already have a solid code base that has been extensively tested and optimized. They also do not have that much outdoor geometry, so this is a very good solution for them. However if you are doing an engine with outdoor and indoor geometry you have to way the benifits of BSPs against the benifits of other solutions.

Hope this cleared up some things with my previous post. Personally, I would stay away from a mixed solution if developing for a mixed indoor and outdoor enviroment because of the mentioned reasons. I would use a batched partitioning scheme with either image based occlusion or portal PVS scheme.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Far Cry uses the concept of "visibility areas" at the lowest level - it's worth picking up their editor to see how simple and elegant the solution is when dealing with indoor/outdoor.

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!