Question submitted by (02 July 1999)
|Return to The Archives|
I'm still looking for a decent scene management technique. When I have a
complete scene, and I want to walk or fly through it, I need to know
what I should render, and what I shouldn't render. There are lots of
techniques for that, the most common being BSP trees and portals.
Neither BSP trees or portals suit my needs. BSP trees are not too easy
to build if you have curved surfaces like spheres, and they cannot
handle moving objects very well. For portals you need to design your own
editor while numerous good editors exist. (Blender, 3dsmax, lightwave)
What I was thinking about is compiling the scene elements into an
octree. That would give me not so much polygon splitting as BSP trees, I
can use a normal modeller and it's quite easy to implement. Even moving
object tracking should be simple. The memory requirements are high,
though. But I keep having questions:
- Is this indeed a good method? Why haven't I seen it before in games?
- Are there better methods with which I can use a normal modeller, and still support moving objects and static objects?
Basically, you want what everybody else wants: a good visibility system.
The problem is that a good visibility system that suits everybody's needs
simply does not exist.
Many good visibility systems do exist, however. Though BSPs and Portals are to very common systems, they represent less than 1% of 1% of what does exist. You need to find something that works for your needs. You can start by looking at the papers on my site.
You mentioned using octrees to store your data, but you didn't mention any means by which you plan to get visibility information. I know of a few existing visibility schemes that make good use of octrees, but you should be sure to investigate everything you can get your hands on, not just octree-related material.
Good luck, and welcome to the quest.
Response provided by Paul Nettle
This article was originally an entry in flipCode's Fountain of Knowledge, an open Question and Answer column that no longer exists.