simplify(1pf)
simplify - Interactive OpenGL Performer tool for simplifying geometry. a simplification of a complex object that contains the original object.
As shipped in IRIX 6.5.30. Added in IRIX 6.5.22.
NAME simplify - Interactive OpenGL Performer tool for simplifying geometry. a simplification of a complex object that contains the original object. SYNOPSIS simplify [ 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. 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 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