One of the two main methods to control the degree of polygon reduction is with either of these two
mutually complementary sliders. The top slider specifies the percentage of the original model you
wish the polygon reduction algorithm to remove. The default is 80% (the reduction algorithm may not
actually remove this percentage of the model exactly due to vertex constraints on the model).
As the top slider is increased the bottom slider is decreased. The bottom slider is the percentage of
the model to keep after reduction is complete. It is simply the inverse of the top slider. Changing one
slider inversely changes the other slider.
NOTE: The sliders will specify the amount of reduction to apply to each object individually.
Thus, if you have 100 objects in your scene then each will reduced independently of each other until
each model attains the desired amount of reduction. In many cases this will causes some parts to become
over-reduced and other parts to become under-reduced. To evenly distribute the amount of reduction
evenly across all 100 objects, please refer to the
Higher Quality Polygon Reduction for 2 or More Objects, A Tutorial section.
Geometry Pre-Processing Options
The following geometry processing is applied to the objects prior to sending them to the polygon
reduction algorithm.
Weld vertices together, object space tolerance = #
It is imperative in the polygon reduction algorithm that all adjacent and touching polygons share the same
vertex coordinates. If a mesh does not use shared vertices amongst its polygons then the polygon reduction
phase will not consider them to be "one continuous surface" and thus cracks or holes may appear between
previously touching polygons.
If this option is enabled, which is the default, then all redundant or duplicated vertices that are
close together in space will be "welded" into a unique and single set of vertices, thus insuring that
all abutting polygons use shared vertices. If the distance between two vertices is less than the "
object space tolerance" type-in value, then the two vertices will be welded into a single vertex
prior to the mesh being submitted to the polygon reduction algorithm.
Geometry Post-Processing Options
The following geometry processing is applied to the objects after having had the polygon reduction
algorithm applied to them.
Recompute new vertex normals, smoothing angle = #
When the amount of polygon reduction is high (for example, 80%) there is a corresponding large number of
polygons that are removed or modified in the object. As a result, the vertex normals of the original
object are greatly reduced in numbers. "Vertex normals" are associated with each vertex of each
polygon in the object, and they help define the smoothness factor from one polygon to the next. When a
large number of vertex normals are removed from an object, the resulting smoothness quality suffers. For
example, a corner of a box which may have originally been nicely rounded (approximated by a number of
thin polygons to approximate the rounded corner) might end up being a sharp corner due to the removal of
all the thin polygons; likewise, the vertex normals which helped define a rounded corner end up (sometimes)
in a non-optimal direction. When these new objects are rendered they may appear to have "black spots
" or "dark regions" where you would otherwise not expect these rendering anomalies to appear. These
are all to be expected from polygon reduction in the case of extreme reduction in the number of polygons.
A simple and reliable solution to these vertex normal problems is to enable this " Recompute new
vertex normals" check box (enabled by default). This will compute completely new vertex normals for
the entire model. The type-in smoothing angle defines the cut off point between sharp corners and smooth
corners. If two polygons meet at an angle less than the smoothing angle, then they will end up looking
smooth; if the polygons meet at an angle greater than the smoothing angle, then they will end up looking
like a sharp corner. The default is 45 degrees. If you set this number lower (such as 20 degrees) then
more sharp edges will appear, which is sometimes better for CAD data with a mixture of rounded and sharp
edges. If you set the angle to 90 degrees then everything will end up being (over) smoothed. 20 to 45
degrees seems to be a good range to use this parameter.
New object creation method:
This drop-down combo box determines how the newly reduced object is to be re-inserted back into the
PolyTrans internal geometry database.
Replace existing object
This will cause the original un-reduced object to be deleted and the newly reduced object to replace
the original object. All material assignments, instance attributes and texture projections will be
re-assigned to the new object. It will also be attached to the original parent in the hierarchy.
Add new object, hide original object
This will add the new reduced object to the scene at the same hierarchy level of the original
un-reduced object. The original un-reduced object will be hidden in the scene but not deleted. This is
the default option.
If you wish to delete the hidden objects from the scene at any time, select the "Delete Hidden
Instances" menu item accessible via multiple menus in the software.
If you wish to delete the newest objects which were just reduced and added to the tree, then revert
to the original unreduced original objects: select the "Delete Un-Hidden Instances" menu item
accessible via multiple menus in the software and then select "Unhide All Instances" menu item.
Add new object, don't hide original object
This will add the new reduced object to the scene at the same hierarchy level of the original
un-reduced object. The original un-reduced object will not be hidden and will not be deleted from
the scene. In general this is not a useful option to enable unless you want the un-reduced and
reduced objects to both appear in the scene at the same time.
Secondary Options Panel
Expert Level Polygon Reduction Amount
Stop Reduction Algorithm When the Total Geometric Error
!! Please do not disregard this option because it has the word "Expert" associated with it;
using the maximum geometric error tolerance is an integral method to perform high quality polygon
reduction.
There are two primary methods to stop the amount of reduction of a model: (1) set the maximum
percentage of polygons to remove and (2) set the maximum error that is allowed to accumulate for
the models.
As a rough example, you would set the reduction slider to 100% and set the "Expert Level Polygon
Reduction Amount" type-in value to 0.001. If you reduce the model you might find that you get 38%
reduction. Now, you might increase the type-in value arbitrary to 0.01 and get a reduction amount of
78%. What you are basically doing is telling the reduction algorithm to stop reducing when the total
error accumulated reaches some maximum amount. The trick is to find that perfect number whereby the
reducer stops and removes the exact percentage of polygons you wish based on the entered " Expert
Level Polygon Reduction Amount" type-in value
Higher values will lead to more reduction (since more error is allowed to be accumulated) and lower
values will lead to less reduction. Values like 100 to 1 million should, in essence, disable this option
from affecting the final polygon reduction amount.
Mini tutorial on how to use this option:
As explained in the "Higher Quality Polygon Reduction
for 2 or More Objects" section, what you really want to do first is set the reduction slider
to a high value (such as 90%) then apply polygon reduction to 3 objects in your scene. Next, look at
the "Minimum geometric error from last reduction execution" and its corresponding "Maximum
geometric error from last reduction execution" numbers shown on the second polygon reduction
options panel. These describe a range for the geometric error encountered for all objects that were
reduced. Now reload the original objects back into the scene, set the reduction slider to 100% (we
don't want it to affect our final reduction amount) and then (the magic part) type in a new number
to the "Expert Level Polygon Reduction Amount" type-in value. This number has to be somewhere
between the minimum and maximum error values reported from the last reduction execution. You will want
to select a value much closer to the minimum reported value than the maximum reported value. Let's say
the minimum reported value was 0.00001 and the maximum was 400 (we've seen extremes like this many
times). If we select the absolute minimum then we won't get much reduction at all, so let's try a value
10 times larger such as 0.0001. Enter this number and press the "Reduce!" button. The statistics
box will report the percentage of polygons reduced. If the percentage of polygons removed is too small
(such as 38%) then reload the model and type-in a value now 10 times larger than the previous attempt
(0.001); reduce again. If the percentage of polygons removed is too high (such as 97%) then reload the
model and type-in a value now 2 times smaller than the previous attempt (0.0002); reduce again. Repeat
this trial and error process until you reach the desired percentage of polygon reduction. Usually this
will only take 3 or more attempts to get to the desired reduction amount. It is tedious, but it will
reward you with better models because each object will stop reduction based on the maximum error amount
wanted, not the desired percentage of polygon reduction; thus, some models might have 30% reduction
while others have 90% reduction, but overall you can achieve a desired percentage of overall reduction
by modifying the "Expert Level Polygon Reduction Amount" type-in value.
Once you've tried this process once you will find it easy (but sometimes tedious) to do again in the
future. We tested it one a 1 million polygon database with thousands of small objects in it, and it
produced overall better quality than if we had used the sliders only. Alternatively, you can convert
the entire scene into a single object only then use the sliders to specify the absolute percentage
reduction to apply.
Only process raw geometry (faster, loses all vertex attributes)
If this option is enabled (check marked), then the polygon reduction algorithm will ignore all vertex
attribute information such as vertex normals, vertex tangents, RGB colors and material properties while
performing the reduction. Normally these attributes would be used to introduce constraints at each vertex
if any two attributes were different (such as two different vertex normals), thus decreasing the likelihood
that the vertex could move significantly. However, these added constraints can sometimes prevent the mesh
from being reduced with visually appealing results.
The following 3 images will help explain this option. The original mesh is a screw with 1200 polygons.
The problem with this mesh is that the vertex normals vary greatly across the curved threads. These vertex
normals will cause added constraint weights to be associated with the vertices that comprise the threads.
If the mesh is reduced to 80% (256 polygons) with this option disabled, then the mesh of the second image
will be created. This is not optimal. Our only recourse in this situation is to enable the "Only process
raw geometry" option and reduce again. This results in the mesh of the third image (256 polygons) which
is somewhat more pleasing at this high level of polygon reduction.
Note that enabling this option is semi-equivalent to setting the "Material preservation weight"
option to 0.0, except with this option all attributes will be thrown away.
Retain UV tangents
If this checkbox is disabled (un-checkmarked) then any UV tangent vectors associated with the mesh
data will be throw away prior to reduction of the mesh. In some cases this will lead to higher quality
reductions due to the fewer constraints on each vertex (there will no longer be any UV tangent constraints
if this option is disabled).
The following 3 images are prime examples which illustrate when this option should be disabled. The
chess pieces on the left all have valid UV tangent vectors, but there is little sharing between the UV
tangent coordinates. Thus, when reduced, the extra constraints introduced into the polygon reduction
phase cause the mesh to be of low quality, as shown in the second image. If the "Retain UV tangents"
option is disabled and the reducer executed on the original mesh again, the third mesh is created which
is a much more pleasing reduction.
NOTE: UV tangent vectors are only used in a few 3D rendering programs. They are only used when
performing texture bump mapping with a bitmap image. The UV tangents at each vertex, along with the
vertex normal, create a 3D coordinate system which is used to determine how the vertex normal is to be
perturbed (bump mapped). Programs such as 3DS MAX, Maya, Lightwave and SoftImage do not import/export
UV tangent vectors and thus disabling this option has little effect on data transferred to/from these
named programs. However, Okino's NuGraf Rendering System software uses these UV tangent vectors for its
2d bump mapping; if you should have these UV tangents discarded via the polygon reduction routine then
they can be recreated by assigning a planar, spherical, cylindrical or cubical texture projection icon
to each instance (which might be a tedious operation for many objects in a scene).
Minimum polygons allowed per object
This value determines the absolute minimum number of polygons that each object can be reduced down to.
For example, if you want to ensure that every object in the scene after reduction has at least 20
polygons, set this value to 20.
Target position policy for edge contractions
This polygon reduction algorithm reduces the number of polygons in a model by contracting 2 vertices
so that multiple polygons collapse to a fewer number of polygons. This is shown in the following diagram
for which vertices v1 and v2 are combined to the new vertex position v', thus
removing 2 polygons from the mesh:
The "Target position policy for edge contractions" combo box option determines where the new
position of vertex v' will be placed between the original vertex positions v1 and v2.
Optimal placement (default)
The new vertex position v' will be placed anywhere (not necessarily on the line between v1
to v2) such that the resulting geometric error is minimized. As its name implies, the new location
is the best new location where the new vertex could be placed to preserve the original appearance of the
object. This is the default option.
Best point along edge
The new vertex position v' will be placed along the line between v1 to v2 such that
the resulting geometric error is minimized. Not a useful option to enable.
Best of endpoints or midpoint
The new vertex position v' will be placed either at the original vertex locations v1 or
v2 (the end points), or at the mid-point between vertices v1 and v2, whichever
results in the least geometric error.
Best of two endpoints
The new vertex position v' will be placed either at the original vertex location v1 or at
the original vertex location v2. This is the best choice when you wish to have the new reduced mesh
be a subset of the original mesh (such that the new mesh shares the same vertices with the old mesh, as when
doing adaptive polygon subdivision); no new vertex locations will be generated. The overall fit of the new
reduced model will be inferior than if the "Optimal placement" method was used.
Weightings Panel
This panel controls how much the polygon reducer is allowed to move vertices around, or to delete/merge
vertices.
Please refer to these tutorials for more real-world examples:
If you don't want boundary (outer edge) vertices to move at all, enable the
Lock the vertex positions of vertices on mesh borders
Or, if you don't want the shape of the boundary (outer edge) to change but
you will allow these vertices to shift around a bit, then set the
"Boundary preservation weight" to a high number like '1e6'.
If you don't want material boundary vertices to move at all, enable the
Lock the vertex positions bordering two materials
Or, if you don't want the material characteristics of the object to change very much (such as the colors
or texture coordinates) but you will allow these coordinates to shift around a bit, then set the
"Material preservation weight" to a high number like '1e6'.
Mesh Boundary Preservation
The basic premise of the polygon reduction algorithm is that it is allowed to move or remove vertices
so that multiple polygons can be collapsed into fewer polygons. A side effect of this vertex removal
process is that edges that define a boundary of an object can move around, leading to jagged edges at
boundaries. The options below help prevent, or reduce, the degree to which boundary vertices are allowed
to move in the reduction process.
This type-in value controls how much the polygon reduction algorithm is allowed to move the location
of vertices located on the object boundaries. A value of 0 will disable any restrictions and will give
complete freedom to the polygon reduction algorithm to move the vertex anywhere. The default value is 5
which will place emphasis on the polygon reducer to keep the vertex somewhere on its boundary edge but
not off the edge. Higher values will constrict the vertex so that it remains on its edge (somewhere).
If you want to retain the shape of the border of an object but not lock the vertex locations absolutely
(see below) then set this type-in value to "1e6", which is a very high weight. The vertices will still
move around (along their edges) but the overall shape of the boundary will not change much.
Constraint: Use plane constraint, or Use vertex constraint
This little used option controls how the vertex is allowed to be relocated during the reduction phase.
The "plane constraint" option, which is the default, allows the vertex to move along its boundary edge
but not away from its boundary edge. A planar constraint effectively places a virtual plane on a polygon
edge that is perpendicular to the neighboring surface. In QEM terms, summing this perpendicular plane
into the quadrics of the given region tightens the isosurfaces, such that motion of vertices along the
edge is allowed, while motion away from the edge is restricted. This way, boundaries remain in their
original locations and don’t become jagged.
The "vertex constraint" option simply restricts the motion of a vertex in every direction, also
preserving boundaries. It can be used in instances when a given vertex may get too many plane constraints
attached to it because of bad material property coherence (too many different wedges on the same vertex).
Too many constraint planes can cause undesired artifacts after simplification, as they force the model out
of shape, especially when using high weightings. A vertex constraint will restrict the vertex, but it won’t
force it to move away from the original surface.
Lock the vertex positions of vertices on mesh borders (Be Careful!)
If this checkbox is enabled (check marked) then boundary vertices will not be allowed to move at all
(even along their edges as with the vertex boundary weighting option explained above).
It is recommended that you first try setting the "Boundary preservation weight" to a very high
value (such as 1e6) before you try enabling this option. The former weighting option will allow the
boundary vertices to move along their edges which will most likely lead to a higher level of polygon
reduction than if the "Lock the vertex positions" checkbox is enabled instead.
In extreme cases you will want to enable this option. However, if you enable this with the reduction
slider set to a high value (such as 80 or 90%), then the reduced model might appear to be bent out of
shape; this is because the borders are locked in space and not much else is allowed to move so extreme
movement must be done in order to achieve the desired level of polygon reduction.
Locking the absolute location of vertices can also be useful if a very large mesh is initially broken
apart into multiple pieces, simplified individually and stitched back together again. Because the boundary
vertices are locked during reduction they will match up once again when pieced back together after
reduction.
Material Boundary Preservation
This section of options is very similar to those for the "Mesh Boundary Preservation" described
above. However, instead of dealing with the physical boundary of the mesh, these options apply to internal
boundaries within a single mesh, boundaries between two or more polygons which have different materials,
RGB colors, vertex normals or UV tangents.
Material preservation weight (0 = disabled)
This type-in value controls how much the polygon reduction algorithm is allowed to move the location of
vertices located between two of more polygons with different materials, RGB colors, vertex normals or UV
tangents (such as one polygon colored with a red material and another colored with a green material).
A value of 0 will disable any restrictions and will give complete freedom to the polygon reduction
algorithm to move the vertex anywhere. The default value is 1 which will place some emphasis on the
polygon reducer to keep the vertex somewhere on its material boundary edge but not off the edge. Higher
values will constrict the vertex so that it remains on its edge (somewhere). You would have to experiment
with different values and see how they affect the final mesh. Try values from 1 to 10 to start off with.
If you want to retain the characteristics of the material border of an object but not lock the vertex
locations absolutely (see below) then set this type-in value to "1e6", which is a very high weight. The
vertices will still move around (along their edges) but the overall characteristics of the boundary will
not change much.
Constraint: Use plane constraint, or Use vertex constraint
See explanation above.
Lock the vertex positions bordering two materials (Be Careful!)
If this checkbox is enabled (check marked) then material boundary vertices will not be allowed to move
at all (even along their edges as with the vertex boundary weighting option explained above).
It is recommended that you first try setting the "Material preservation weight" to a very high
value (such as 1e6) before you try enabling this option. The former weighting option will allow the
material boundary vertices to move along their edges which will most likely lead to a higher level of
polygon reduction than if the "Lock the vertex positions" checkbox is enabled instead.
In extreme cases you will want to enable this option. However, if you enable this with the reduction
slider set to a high value (such as 80 or 90%), then the reduced model might appear to be bent out of
shape; this is because the material borders are locked in space and not much else is allowed to move so
extreme movement must be done in order to achieve the desired level of polygon reduction.
Vertex attributes which should influence polygon reduction