Re: actual implementation of LOD modification

Oliver Jowett ([email protected])
Thu, 29 Jun 1995 20:42:31 +1200 (NZST)


On Thu, 29 Jun 1995, MR LEEMON C BAIRD III wrote:

> I should have given more detail. As transforms accumulate, objects
> are transformed by the product of a series of matrices. An improved
> LOD would leave the object untransformed, and would transform the eye
> with the product of the *inverses* of those matrices, applied in the
> *reverse* order. So in the example above, the old method first

Hmmm. Problem: what happens with this scene fragment?

Separator {
PerspectiveCamera {
position 0 0 0
}
Scale {
scaleFactor .5 .5 1
}
Translation {
translation 0 0 1
}
LOD {
center 0 0 0
...
}
}

The object defined in the LOD will be scaled by 1/2 in the X- and Y- axis
directions, but not scaled in the Z axis. Using your method, I get:

object center at 0,0,0
eye at 0,0,0
eye after inverse translation (0,0,-1) at 0,0,-1
eye after inverse scaling (x2,x2,x1) at 0,0,-1
distance=1

Which is the same distance as for the scene with 'scaleFactor 1 1 1', but
the object appears twice as large to the viewer.

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 before (using the determinant of the non-translation 3x3 portion
of the combined matrix) might work well enough (emphasis on _might_!). In
fact, any decent aver of the scale would work : I just thought using
the end matrix would compensate for obscure combinations of
transformations, and it handles MatrixTransform.

Of course, then you get into problems with, say, the above code with
'scaleFactor 1 1 .5'. Any approximation will probably produce an aver
scale of <1, so you lose detail unneci> overcome this? Computing the parallel area scale factor exactly would be
nice, but a bit complex, I think.

> for the simpler transforms such as translation and scaleFactor. As
> with other operations, the browser would be free to do whatever it
> thinks is reasonable when it finds a singular matrix (or we could say
> that such matrices should be ignored when calculating LOD). The

"The result of using a singular matrix in conjunction with LOD is
undefined" :)

> fractal VRML p (http://kirk.usafa.af.mil/~baird/vrml) contains
> some Mathematica source files that show how to do VRML matrix
> calculations (for the current system, not the new one).
>
> Leemon Baird
> [email protected]
> http://kirk.usafa.af.mil/~baird

Your reply address ([email protected]) bounced my last couple of pieci>
of mail ('this account is temporarily suspended'). I'll fire this off to
your .mil address as well. Which is the right address?

--
Oliver Jowett                         Student, programmer-at-large,
[email protected]   and generally nice guy.. ;-)
--------Time flies like an arrow. Fruit flies like a banana.-------

  • Next message: Milai CorporationP "Re: Question"
  • es"
  • Previous messag2074.html">Richard E KitamuraP "Question"
  • In reply toPrevious messag2070.html">Brian BehlendorfP "Re: HISTORY -- Waks v. TGS, The Series"