TOC PREV NEXT INDEX

DataReduceTriCells

Synopsis

A surface reduction module, which supports data-dependent simplification. The algorithm is optimized for fast surface simplification suitable for an interactive visualization environment.

module DataReduceTriCells{
Mesh &mesh_in<NEportLevels={2,0}>;
Mesh mesh_out<NEportLevels={0,2}>;
float InitSurfTol<NEportLevels={1,1}>;
float SurfTolInc<NEportLevels={1,1}>;
float ReductionTarget<NEportLevels={1,1}>;
float FinalReduction<NEportLevels={1,1}>;
int MaxIterations<NEportLevels={1,1}>;
boolean PreserveEdges<NEportLevels={1,1}>;
int DataDependence<NEportLevels={1,1}>;
float Weight<NEportLevels={1,1}>;
enum Mode<NEportLevels={1,1}> {
choices={"Manual", "Dynamic"};
};
boolean Go<NEportLevels={1,1}>;
cxxmethod+notify_inst+req reduce<status=1>(
mesh_in+notify+read+req,
mesh_out+write,
InitSurfTol+notify+read+req,
SurfTolInc+notify+read+req,
ReductionTarget+notify+read+req,
FinalReduction+write,
PreserveEdges+notify+read+req,
MaxIterations+notify+read+req,
DataDependence+notify+read+req,
Weight+notify+read+req,
Mode+notify+read+req,
Go+notify+read
);
};

V name

REDUCT.DataReduceTriCells

Description

Data_surface_reduction is a surface reduction macro which supports data dependent simplification. The algorithm is optimized for fast surface simplification suitable for an interactive visualization environment.An iterative method is used to remove nodes that are within a given distance from the average plane that passes through the neighboring nodes. the user can specify parameters that allow trade off between speed and quality.Data_surface_reduction incorporates a data-dependent simplification method. This means that the data itself can be used as the simplification criteria. If data is attached to the surface, purely geometry criteria are not sufficient to get an appropriate representation without loosing essential information. "Color changes" can thus be protected against simplification, even, if the geometry should normally be simplified. If a model is not uniformly "colored", the simplified model will keep nodes with different colors even if these facets should normally be removed according to geometry criterion. In this way a much better representation of data mapped on to the surface can be retained.

Input

&mesh_in

The mesh should contain one tri or polytri cell_set. If there is node_data it will be mapped to the output. Node_Data is also required for data dependent reduction. For best performance there should be no repetition of nodes or triangles of zero area.

&DataSurfRedParams

Reference to the parameter block which contains real instance of parameters.

InitSurfTol

Initial surface tolerance is the initial distance between he simplified and original mesh allowed. Nodes with distances less than this value will be removed on the first iteration. Value is a fraction of the longest side of the bounding box containing the surface. Generally this value and Surface Tolerance Increment are set to the same value (order of 0.001). Better quality reduction is achieved by using small tolerance values and more iterations and visa versa for faster execution.

SurfTolInc

After each iteration the surface tolerance will be increased by this amount. During the next iteration nodes will be removed if their distance to the average plane is less than the new surface tolerance. Value is a fraction of the longest side of the bounding box containing the surface.

ReductionTarget

Percentage of nodes that the method will attempt to remove before stopping. Reductions of around 80% will give significant performance improvement in a viewer without losing any significant detail in the model.

FinalReduction

This is the percentage of nodes that the algorithm was able to remove. The Reduction Target may not always attainable but also each iteration must be completed before the algorithm stops and the Final Reduction may therefore be greater than the Reduction Target. This parameter is written to by the method.

MaxIterations

Maximum number of iterations that will be performed. During each iteration all the nodes are tested against the current surface tolerance, those with a smaller value are removed. The surface tolerance is increased after each iteration. This value controls the maximum time that the algorithm will run for.

PreserveEdges

If TRUE the method will attempt to preserve sharp edges. This is useful for preserving the shape of models as generated by CAD software.

DataDependence

By applying data-dependent simplification, the data will also be used as part of the simplification criteria. If data is attached to the surface, purely geometry criteria is not sufficient to get an appropriate representation without loosing essential information, especially at high values of reduction. This generally occurs when the size of the final triangles is greater than the size of the data features.The DataReduceTriCells method can take the surface data into account be calculating an error criteria for the data at each node that is then combined with the geometric error (see Weight). Two methods of calculating the data criteria have been implemented, the first based on a data gradient approximation, the other on a data curvature approximation. Only the first data component of the input is used in calculating the data dependent criteria.

Weight

Data dependence weight (0->1) between data and geometric criteria. Weights closer to 1 will put the emphasis on surface simplification based on the mapped data, while a weight closer to 0 will use the standard geometry criteria.

Mode

Change behavior between "Manual" and "Dynamic". In "Manual" mode the method will not execute until the value of Go changes, otherwise a change in the inputs or parameters will cause the method to execute.

Go

Force the method to execute when Mode is set to "Manual".

Output

mesh_out

Mesh containing the decimated mesh as a single tri cell_set. If node_data was present it will be mapped to the remaining nodes in the output.

Algorithm

DataReduceTriCells uses the decimation algorithm as described by W.J. Schroeder, J.A. Zarge, and W.E. Lorenson. Decimation of Triangle Meshes, Proc. of SIGGRAPH '92, 1992

Utility Macros

DataSurfRedUI, DataSurfaceReduction, data_surface_reduction

Example

Libraries.Examples.Visualization.Reduct_AltObject v/dv_examp/reduct1.v

Libraries.Examples.Visualization.Reduct_DataSurfaceReduction v/dv_examp/reduct2.v

Libraries.Examples.Visualization.Reduct_Compare v/dv_examp/reduct3.v

File

v/reduct.v

See also

data_surface_reduction

Acknowledgements

This development was partly supported by the European Community in the ESPRIT Project CONTENTS(EP 29732).


TOC PREV NEXT INDEX