iso_objs_reduce, iso_objs_reduce2

Synopsis

These modules take an isosurface and find the isotopically separate objects, they then produce a mesh with the selected objects from the isosurface. Node_Data is currently ignored.


   group _iso_obj<NEvisible=0> {
      int nNodes;
      int nTris;
   };
   module iso_objs_reduce<src_file="ior.cxx", cxx_members="void FindNodesAndTris( int node, int obj, int &nNodes, int &nTris);"> {
      Mesh &in_mesh<NEportLevels={2,0}>;
      int get_objs<NEportLevels={2,0}>;
      Mesh out_mesh<NEportLevels={0,2}>;
      int tot_objs<NEportLevels={0,2}>;
      int _vObjs<NEvisible=0[]>;
      int _tObjs<NEvisible=0[]>;
      int _sortedObjs<NEvisible=0>[tot_objs];
      _iso_obj _objsN<Evisible=0>[tot_objs];
      cxxmethod+req threshold (
	 in_mesh+read+req+notify,
	 get_objs+read+req+notify,
	 out_mesh+write,
	 tot_objs+read+write,
	 _vObjs+read+write,
	 _tObjs+read+write,
	 _sortedObjs+read+write,
	 _objs+read+write
      );
   };
   module iso_objs_reduce2<src_file="ior2.cxx", cxx_members="void FindNodesAndTris( int node, int obj, int &nNodes, int &nTris);"> {
      Mesh &in_mesh<NEportLevels={2,0}>;
      int show_objs<NEportLevels={2,0}>[];
      Mesh out_mesh<NEportLevels={0,2}>;
      int tot_objs<NEportLevels={0,2}>;
      int _vObjs<NEvisible=0[]>;
      int _tObjs<NEvisible=0[]>;
      int _sortedObjs<NEvisible=0>[tot_objs];
      _iso_obj _objsN<Evisible=0>[tot_objs];
      cxxmethod+req threshold (
	 in_mesh+read+req+notify,
	 show_objs+read+req+notify,
	 out_mesh+write,
	 tot_objs+read+write,
	 _vObjs+read+write,
	 _tObjs+read+write,
	 _sortedObjs+read+write,
	 _objs+read+write
      );
   };

Description

This module builds up a list of individual objects in the isosurface and then creates a new mesh containing the N largest objects. The searching of the nodes and triangles is quite computer intensive and so should not be performed of massive isosurfaces. To improve usability the object information is cached so that selecting a different number of objects to display is very fast. It is therefore not a good idea to connect it directly to an isosurface but to a switch module so that is may be turned on/off as required.

Inputs

&in_mesh

A mesh from an isosrface though of course it can be any mesh containing a Tri cell_set.

get_objs

iso_objs_red: Return the this many of the largest objects.

show_objs

iso_objs_red2: Return the objects in the array from the a size sorted list, i.e., {0,9} will return a mesh containing the largest and tenth largest objects.

Outputs

out_Mesh

A mesh with a Tri cell set containing the requested objects.

tot_objs

The total number of objects found in the isosurface.

User Macros

IsoObjsReduce and IsoObjsReduce2.

Example

IsoObjsReduceEg and IsoObjsReduce2Eg.

Files

iac_proj/isoored/ior_mods.v contains the V definitions of the iso_objs_red and iso_objs_red2 low-level modules and the _iso_obj group.

iac_proj/isoored/ior_macs.v contains the V definitions of the IsoObjsReduce and IsoObjsReduce2 user macros.

iac_proj/isoored/ior_apps.v contains the V definition of the IsoObjsReduceEg and IsoObjsReduce2Eg example applications.

Author

James S. Perrin,
Manchester Visualization Centre

Contact

International AVS Centre
Manchester Visualization Centre
Manchester Computing
University of Manchester
Oxford Road
Manchester
United Kingdom
M13 9PL

See Also