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 ); };
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.
&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.
out_Mesh
A mesh with a Tri cell set containing the requested objects.
tot_objs
The total number of objects found in the isosurface.
IsoObjsReduce and IsoObjsReduce2.
IsoObjsReduceEg and IsoObjsReduce2Eg.
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.
James S. Perrin, Manchester Visualization Centre
International AVS Centre Manchester Visualization Centre Manchester Computing University of Manchester Oxford Road Manchester United Kingdom M13 9PL