Some Useful Criteria
"How can I figure out which algorithm to use?"
Form of the input
-
Object types: what kind of objects does it handle?
-
convex vs. non-convex
-
polygons vs. everything else - smooth curves, non-continuous surfaces,
volumetric data
Form of the output
-
Precision: image space or object space?
-
Visible Set Exactness: Does it find exactly the objects that are
visible? Or some superset? Or some subset that's "good enough"?
-
Clipping (vs. occlusion):
-
some algorithms assume a 360-degree viewing angle
-
others are tied to a view frustum
-
Transparent object support: can it only find the nearest
visible object?
Run-time characteristics
-
image-space - objects tend to take up a coherent area of screen
real estate
-
temporal - two scenes with slightly different viewpoints/view directions
will have very similar sets of visible objects ("the incremental oracle")
-
object - objects aren't point clouds - they tend to be continuous
-
world - objects tend to be clustered together
-
Scene footprint: Do you need to consider every object in the scene?
(the oracle)
-
Memory footprint: How much of the scene do you need in memory at
each instant?
-
Overdraw: How much work do you have to do for objects you
don't end up seeing? Or, how well does it handle clipping and depth
complexity?
-
Preprocessing effort: How much preprocessing is required?
-
Speed/O(time): How does it scale? Tricky because a lot of methods
can be combined
-
Dynamic object support: can it handle objects moving around?
Next