![]() |
![]() |
![]() |
![]() |
surface_reduction
Synopsis
adjust_slice_spacing takes a 3D uniform field, changes the spacing of the specified axis and converts it into a 3D rectilinear field. This macro can be used to irregularly space the uniform output of Read_Img2vol.
Input Port
Parameters
Output Port
Description
Surface reduction macro, providing very high quality decimation of 'tri' or 'polytri' cell_sets for visualization and distribution.
For example, extracting isosurfaces from a data set in order to detect essential features can produce a large number of very small triangles, which are too many to be rendered efficiently on a PC desktop or distributed across a low bandwidth Internet (using VRML). Surface reduction generates a simplified version of the original isosurface by selectively removing typically 80% of the triangles. The goal is to remove the majority of triangles in areas of low curvature (flat surface) while retaining enough to provide accurate representation in more wrinkled parts of the surface. The surface_reduction macro provides a high quality surface reduction that is for particularly suitable for medical data, where maintaining quality is an important issue.
The surface reduction method is based on a progressive algorithm with global error control. The potential error of removing each node is calculated initially and a priority list is built with the node producing the smallest error placed 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 priority list updated. The process is repeated until the potential error for the node at the top of the list is more than the specified maximum surface tolerance or the desired reduction target is obtained. Node_data associated to the geometry, such as color or normals, is consistently maintained during the simplification process. The method can be slow because of the rigorous error calculations and the high quality results produced.
Input
Connects the module to a user interface. By default, this input port is connected to the default user interface object in the application in which the module is instanced.
{bmc E:\FH30\bullets\DIAMOND.BMP} 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.
Parameters
{bmc E:\FH30\bullets\DIAMOND.BMP} Max Surface Tolerance
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.
{bmc E:\FH30\bullets\DIAMOND.BMP} Reduction Target
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.
{bmc E:\FH30\bullets\DIAMOND.BMP} Final Reduction
Contains the percentage of nodes actually removed by the algorithm, the Reduction Target may not always attainable and so Final Reduction <= Reduction Target. This value is written to by the method.
{bmc E:\FH30\bullets\DIAMOND.BMP} Speed
This parameters will make 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.
{bmc E:\FH30\bullets\DIAMOND.BMP} Dynamic
Change behavior from "Manual" to "Dynamic". In "Dynamic" mode the method will execute like any other module, when an input or parameter changes, otherwise pressing the Reduce button is required to force the method to execute.
{bmc E:\FH30\bullets\DIAMOND.BMP} Reduce
Output Port
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.
Utility Macros
SurfaceReductionUI, SurfaceReduction
Example
Libraries.Examples.Visualization.Reduct_Compare
File
See also related modules
Acknowledgements
This development was partly supported by the European Community in the ESPRIT Project CONTENTS(EP 29732).
![]() |
![]() |
![]() |
![]() |