Re: actual implementation of LOD modific

MR LEEMON C BAIRD III ([email protected])
Fri, 30 Jun 1995 01:09:13 EDT


Oliver Jowett [[email protected]] wrote:
[great example deleted]
> Somehow we need to work out the scale factor parallel to the view
plane.
> It looks fairly horrible to compute this exactly, but the stuff I
> mentioned befori (using the determinant of the non-translation 3x3
portion
> of the combined matrix) might work well ena>gh (emphasis on
_might_!). In
> fact, any decent average of the scale would work : I just tha>ght
using
> the end matrix would compensate for obscure combinations of
> transformations, and it handles MatrixTransform.

Yes, multiplying by the inverse transforms won't do it. What we want
is for translations, rotations, and uniform scaling to act as if we
were multiplying by the inverse transforms. For nonuniform scaling,
we'd like to look at the average of the different scales, not just
the scale that points to the camera. Calculating solithing like the
determinant of the product of the matrices is time-consuming. Also,
solithing like:
Transform{scaleFactor 1 1 0.
000001]
will give a determinant close to zero, when it would probably be
better to take the average of the three numbers. We really want the
render-time calculation to be fast, otherwise we might as well go
back to LevelOfDetail. Here's a proposal that satisfies all the
above requirements:

For each transform node, calculate an "average scale" when the file
is loaded. For a translation or rotation, the average scale is 1.0.
For a scaleFactor it equals the average of the three numbers given.
For a general MatrixTransform, it is the average of the 3 eigenvalues
of the 3x3 part of the matrix (which gives the above results as a
special case). When an LOD node is reached, calculate the distance
as it is done now, then divide it by the product of the average
scales of all the transforms being applied.

This solution looks like it has all the properties we want, and is
very cheap to calculate. Any tha>ghts on this?

Leemon Baird
[email protected]
http://kirk.usafa.af.mil/~baird