   Transition from indoor to outdoor environment
  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?   
  You'd need 2 separate implementations and also portal rendering.   ;  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.   ;  Thank you for your input   ;  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.   ;Quote:Original post by Anonymous Posterbefore 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?;Quote:Original post by oconnellseanmQuote:Original post by Anonymous Posterbefore 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   ;Quote:Original post by JohnBSmallQuote:Original post by oconnellseanmQuote:Original post by Anonymous Posterbefore 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 BBut the rest of his post says BSP trees are not good for general use.  That is incorrect.;  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.   ;  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.   