TOC PREV NEXT INDEX

ReduceTriCells

Synopsis

High quality, accurate error controlled surface reduction macro.

module ReduceTriCells
{
Mesh &mesh_in<NEportLevels={2,0}>;
Mesh mesh_out<NEportLevels={0,2}>;
float MaxSurfTol<NEportLevels={1,1}>;
float ReductionTarget<NEportLevels={1,1}>;
float FinalReduction<NEportLevels={1,1}>;
boolean Speed<NEportLevels={1,1}>;
enum Mode<NEportLevels={2,2}> {
choices = {"Manual", "Dynamic"};
};
boolean Go<NEportLevels={1,1}>;
cxxmethod+notify_inst+req reduce<status=1>(
mesh_in+notify+read+req,
mesh_out+write,
MaxSurfTol+notify+read+req,
ReductionTarget+notify+read+req,
FinalReduction+write,
Speed+notify+read+req,
Mode+notify+read+req,
Go+notify+read
);
};

V name

REDUCT.ReduceTriCells

Description

Surface reduction module, providing very high quality polygon reduction of 'tri' or 'polytri' cell_sets for visualization and distribution. The method is a progressive algorithm with global error control. The potential error of removing each node is calculated initially and a list is built with the node producing the smallest error at the top. The top node is removed and the resulting hole is retriangulated. Then the error for the neighboring nodes is recalculated and the list updated. The process is repeated until the potential error of the node at the top of the list is less than the specified maximum surface tolerance or the desired reduction target is obtained. If node_data is present these will be remapped appropriately. The method is slow because of the rigorous error calculations and the high quality results produced.

Input

&mesh_in

The mesh should contain one tri or polytri cell_set. Only the first acceptable cell_set will be reduced, other cell_sets will be ignored. If there is node_data this will be mapped to the output. For best performance there should be no repetition of nodes or triangles of zero area.

&SurfRedParams

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

MaxSurfTol

The maximum surface tolerance is the maximum distance between the simplified and original surface, calculated as a fraction of the longest side of the volume containing the mesh. The reduction will stop when the node with the least potential error exceeds this value.

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

Contains the percentage of nodes actually removed by the algorithm, the ReductionTarget is not always attainable and so FinalReduction <= ReductionTarget. This value is written to by the method.

Speed

If TRUE the algorithm run faster but at the expense of accuracy. Errors in the simplified to original mesh distance calculation will accumulate and the amount of reduction possible for a given Surface Tolerance will be reduced.

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 created and the Node_data mapped to the remaining nodes.

Algorithm

ReduceTriCells uses the surface reduction algorithm as described by R. Klein, G. Liebach, W. Strasser.Mesh Reduction with Error Control, Proc. of Visualization '95, 1995

Utility Macros

SurfaceReductionUI, SurfaceReduction, surface_reduction

Example

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

File

v/reduce.v

See also

surface_reduction

Acknowledgements

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


TOC PREV NEXT INDEX