A simple demo showing how to use a camera listener. It implements a simple level of
detail algorithm to display different resolutions of a tessellated icosahedra based
on the apparent size of the object.
To run: execute the main method, and in the graphics window activate the camera zoom tool
via the mouse scroll wheel. The camera listener calculates the expected screen extent
of the sphere and chooses a tessellation of the sphere which keeps the size of the
triangles roughly constant.
Use the path to the object and to the sphere, plus other information from the
Camera, to calculate the net object to NDC (normalized device coordinates) transformation.
Use this to estimate how large the object appears.
Note: the matrix calculations here could be done somewhat more conveniently using
an instance of Graphics3D using the constructor Graphics3D.Graphics3D(Viewer)
and setting Graphics3D.setCurrentPath(SceneGraphPath) to spherePath, then
this method has only to call Graphics3D.getObjectToNDC(). But it's probably good to see how to do it