Visibility pyramids
I've just achieved the first goal of
this pre-project: I've implemented a "
visibility pyramid"
method in order to detect whether or not an object is visible to
the camera (based on the outline of previous coders).
The already implemented algorithm was based on classic ray-casting,
that consists of sending rays from the camera to the object and
detect a potential collision. The number of rays is obviously
finite (this represents the resolution of the camera).
The algorithm I've implemented is completely different. It consists
of creating pyramids which apex is the center of the camera and
which base is a face of the model to track. If the face is
partially obstructed by something, then the pyramid is cut to keep
only the visible part of the object face. A recursive cutting of
all the obstructed parts of the face is proceeded. Eventually the
pyramid is either null and therefore the object is not visible or
not null in which case the object is at least partially
visible.
Is that clear ???