Textures that Fool Essay
My project is called Textures that Fool, which is an investigation into the use of impostering. It was produced by myself, Alex Sawczuk during April 2007, with the assistance of my tutor Roger Hubbold
The general purpose of my project was to see if there is any noticeable loss of image quality when using a technique called Impostering. Impostering is a form of level of detail [A9], which replaces the original geometry by a much simplified version of the original. Impostering in particular makes gains by using a very simple geometric model, and texturing this by rendering the original object in real time, and saving this texture and mapping it to the imposter.
The key aims of my project are to see if there are any graphical differences between a scene using impostering and one without, as well as looking into any performance disparities between the two.
For this project I plan to use platforms that are familiar to me. This means I intend to use Java and an OpenGL port in order to get the maximum out of my programming skills. In addition my project will implement the basics of impostering and in a way that can be visually shown, due to the limitations in time I have to implement a solution. Using a visual manor to generate imposters will allow the user to see the impostering take place by showing which objects are being replaced as well as other visual aids, such as the ability to turn impostering on and off on the fly and detailed statistics of polygon savings amongst other things. The alternative would be to hide the actual impostering in an off screen buffer, this would likely be more efficient but would be harder to develop.
The project will also look to use various additional free classes available to load 3ds files (a generic 3d model file format [A1]) and any generic dds\targa\bitmap textures. This should allow for various different models to be imported to the viewer with relative ease, in addition to adding a user interface to help the user setup any relevant settings.
In summary I plan to look at the actual visual differences more than the performance issues and hope to implement this in a flexible manor allowing the loading of different models.
BACKGROUN D AND LITERATURE SUR VEY
For background reading I found a few related papers to help with the development of my system, however finding all relevant information proved difficult, and some relevant articles were not found until after I had programmed my implementation.
The main source of background information for my project is a paper by Gernot Schaufler and Wolfgang Sturzlinger entitled ‘A Three Dimensional Image Cache for Virtual Reality’. This paper published in 1996 outlined the general concepts of impostering as well as further details in how to optimize the operation.
In the paper, Imposters were generated by taking the extremes of the bounding box and imposing the viewed texture onto a plane through the centre of the objects bounding box, and with its normal pointing directly at the viewer. The regeneration of imposters was then calculated by measuring a series of angles generated when the viewer moves away from the generation point, and the imposters regenerated when a set threshold is broken. These angles were calculated in two separate manors, one for lateral movement and one for motion towards and away from the object, based on the change of angle between points on the bounding box and the plane.
The three dimensional image cache implemented allowed for further optimizations in the procedure. This kept a hierarchy of bounding box [A5] image data to be stored, with the lower levels used to generate the imposters at higher levels. This approach requires a recursive bounding box to be setup for all objects in the scene, where all objects in the scene are split up based on their location. This results in quick regeneration of imposters that include many objects, and only any invalid lower level objects need regeneration. This produces automatic grouping in a pre-processing step of the objects that you wish to imposter. In the tests conducted in this paper, they experienced approximately an average 50% decrease in frame draw time, although certain frames with a high load could take much longer than the non impostering examples.