simplify(1pf) OpenGL Performer 3.2.2 Reference Pages simplify(1pf)NAMEsimplify - Interactive OpenGL Performer tool for simplifying geometry. a
simplification of a complex object that contains the original object.
SYNOPSISsimplify [ perfly options ] infile outfile [ options ]
DESCRIPTION
Program simplify is an interactive tool that is used to simplify a
complex object. It has two main functions. First, it can create a regular
simplification of the object, in which the constraints are that the
resulting geometry does not cross the inner and outer boundary at a
certain distance from the original surface. In this case all vertex
parameters, such us the normal or texture coordinates, are preserved.
Simplified version of the object can be used to create an pfLOD node (see
the man page for pfLOD).
Second, the program simplify can create a proxy of an object. A proxy is
a simplified version of the object and it has a property that the
original object is fully inside the proxy. This property is important
because the proxy is used in image based rendering where the images of a
complex objects from various directions are projected onto the proxy.
This way it is possible to render a very complex object using a
simplified version (a proxy) and store the surface detail, including the
associated lighting, in multiple textures. See the man page for
makeProxyImages to get more information about the process of making the
textures that are projected on the proxy.
The program simplify is based on perfly and it shares all its command
line parameters and key commands (see man page for perfly). When
executing the program simplify you can specify the perfly-like command
line parameters first, then you enter the file name of the object you
want to simplify and the output file name. Optionally you can add
additional command line parameters specific to the simplification
algorithm. You can get the list of those parameters by running simplify
with no option or option -h.
When you start the program simplify the menu is similar to the one of
perfly. There is an additional pane of buttons and sliders, called
simplify pane, that can be enabled and disabled using the Simplify pane
button. The first button of the simplify pane controls whether to select
the algorithm for making proxy (the default) or the regular object
simplification algorithm.
MAKING PROXY OF AN OBJECT
The algorithm for computing the proxy has two steps. First, an outer
boundary at certain distance from the object is created and an initial
proxy somewhere between this boundary and the original surface is also
created. Second, the initial proxy is simplified as long as it does not
intersect the original surface and does not cross the outer boundary.
Page 1
simplify(1pf) OpenGL Performer 3.2.2 Reference Pages simplify(1pf)
After completing the computation the proxy is saved in the file specified
on the command line.
There are two possible ways of creatin the outer boundary and the initial
proxy. By default, a marching cubes algorithm is used to create an
isosurface at a certain distance from the original object. The isosurface
is later moved to the distance of the outer boundary (slider Outer
boundary) and a copy of the isosurface is moved to the distance of the
initial proxy (slider Initial distance). The distances are specified as
a percentage of the object diameter (more precisely, the diameter of the
object's bounding sphere).
The marching cubes algorithm has the following controls. In the menu it
is possible to set the grid size at each axis and the distance of the
isosurface from the object (slider Iso distance). The finer the grid the
longer the algorithm takes and the more complex the initial proxy is. On
the other hand, too coarse grid may result in many details being missed.
Note that even when the marching cubes algorithm is not applied the grid
is used to accelerate the intersection test of the simplified proxy with
the boundary surfaces thus it is not recomended to reduce the grid
resolution too much.
In general, the algorithm does not work very well if the desired
isosurface distance is too small compared to the size of a grid voxel.
That is why it is possible to specify the isosurface distance separately
from the outer boundary distance and the initial proxy distance. Often it
is possible to specify the isosurface distance large enough that the
isosurface does not miss any part of the object and then move it closer
as needed. It is also possible to preview the isosurface by pressing
button Get isosurface. Note that the button Show boundary has to be
depressed.
When button Do marching cubes is not pressed, the outer boundary and the
initial proxy are created by displacing the original surface along its
normals. This approach works better in case the distances are very small.
Unfortunately, some areas of the object may not be simplified. For
example, if two parts of the object are touching displacing along the
normals will create a self-intersecting boundary that will not allow any
room for simplification in the area of intersection.
After pressing the button Run simplify proxy the simplification algorithm
starts by moving the isosurface or the original surface to create the
outer boundary and the initial proxy. The initial proxy is simplified by
removing vertices and edges as long as the surface is within the surfaces
defined by the object and the outer boundary. At the end the vertices of
the proxy are moved as close to the original object as possible and the
resulting proxy is stored in a file.
The simplification algorithm can be stopped or paused using Stop simplify
or Pause button, respectively. When the algorithm is paused it is
possible to output the current proxy by pressing the Save mesh button.
The file name contains index of the current step so that several meshes
Page 2
simplify(1pf) OpenGL Performer 3.2.2 Reference Pages simplify(1pf)
can be output during the simplification.
SIMPLIFYING AN OBJECT
The controls for the regular simplification algorithm are very similar to
the controls for the algorithm for making proxy. The algorithm is using
two boundary surfaces, the outer boundary and the inner boundary. If the
marching cubes algorithm is selected the distance of the both boundaries
from the original surface is the same (in absolute value) and it is
controlled by the slider Iso distance. Similarly as in the case of
making a proxy the isosuface can be previewed by pressing the button Get
isosurface. If the Do marching cubes button is not pressed the
boundaries are created by moving the original surface along its normals
to distances specified by the sliders Outer boundary and Inner boundary.
Note that the distance for the inner boundary is specified as a negative
number.
The algorithm is started by pressing the button Run simplify. The
computation can be paused or stopped using the Pause or Stop implify
button, respectively. When the algorithm is paused it is possible to save
the intermediate result by pressing the button Save mesh or to toggle the
visibility of the boundary by pressing the button Show boundary. After
the simplification is finished you can display the original object by
pressing the button Restore object. You can restart the algorithm
without restoring the original object.
As you may realize this algorithm could be used to create an object proxy
if the marching cubes algorithm is not used and the inner distance is set
to zero. The result may be different, though, because the algorithm is
trying to preserve seams between pfGeoSets with different pfGeoStates,
which is not necessary for the proxy.
SEE ALSO
performer, pfIBRtexture, pfIBRnode, makeProxyImages
Page 3