File: [Development] / inventor / apps / tools / ivfix / README (download)
Revision 1.1.1.1 (vendor branch), Tue Aug 15 12:56:00 2000 UTC (17 years, 2 months ago) by naaman
Branch: sgi, MAIN
CVS Tags: start, release-2_1_5-9, release-2_1_5-8, release-2_1_5-10, HEAD Changes since 1.1: +0 -0
lines
Initial check-in based on 2.1.5 (SGI IRIX) source tree.
|
WHAT IT IS:
This directory contains source code for the 'ivfix' utility, used to
restructure Inventor scene graphs for improved rendering performance.
-----------------------------------------------------------------------------
USAGE:
ivfix [options] [infile] [outfile]
-a : Write out an ascii file. Default is binary
-d dir : Add 'dir' to the list of directories to search
-h : Print this message (help)
-n : Do not generate normals
-t : Do not generate texture coordinates
-v : (Verbose) Display status info during processing
-V : (Very verbose) Display more detailed status info
ivfix reads binary or ascii Inventor input from a file or stdin,
restructures the scene graph and writes it out to a file or standard
output. By default the output file is a binary file.
-----------------------------------------------------------------------------
WHAT IT DOES:
ivfix processes a scene graph in two phases. The first phase figures
out how the scene graph is organized, and tries to sort it a better
way to take advantage of coherence. For example, it tries to organize
subgraphs by common textures, since switching textures is expensive.
Once sorted, it also tries to combine subgraphs so that the final
result has fewer nodes.
The second phase consists of "flattening" the subgraphs that result
from the first phase. This tesselates all shapes into little triangles
that are then organized into triangle strips.
-----------------------------------------------------------------------------
HOW IT DOES IT:
Phase 1 is broken into the following steps:
Collecting:
All shapes in the scene are found and stored with their properties
in specialized Shape data structures.
Sorting:
The Shape data structures are sorted based on differences in
properties, ranked by frequency of change and cost.
Merging:
Some shapes can be merged into the same group if certain conditions
hold.
Building:
A scene graph is constructed from the sorted, merged list of Shape
data structures. Phase 2 is then applied to the leaf groups of this
graph.
Phase2 (for each subgraph) consists of these steps:
Flattening:
This applies a callback action to tesselate all shapes into little
triangles.
Condensing:
This removes duplicate coordinates created in the flattening
process.
Stripping:
This produces triangle strips from the individual triangles.
-----------------------------------------------------------------------------
WHAT IT DOES NOT DO:
It does not try to preserve anything from the original graph. Some
nodes (many properties) carry through untouched from the original
scene, so any names or connections on those nodes will end up in the
final scene. Others are thrown away. Instances of shapes will most
likely be broken.
(It does preserve Switch, File, and LevelOfDetail nodes rather than trying
to figure out the right thing to do with their children.)
The moral: if you want to make sure ivfix does not screw up part of
your scene, separate that part out before fixing the rest.
-----------------------------------------------------------------------------
WHAT IT SHOULD DO, BUT DOESN'T YET (aka BUGS):
Deal with ignore flags in materials, etc.
Deal with huge files better without running out of memory.
-----------------------------------------------------------------------------
HOW IT IS DIFFERENT FROM THE OLD IVQUICKEN:
- ivquicken left most shapes alone; it converted only certain face
sets into triangle strips. ivfix converts all shapes (even primitive
ones like spheres and cubes) into triangle strips.
- ivquicken's triangle-stripification code was pretty slow. ivfix's is
fast, fast, fast.
- ivquicken did a lot of work to (try to) preserve the overall structure
of a scene graph, including node names and field connections. ivfix
doesn't bother with that.