Hi Ben,
 in fact I'm not sure there is a more reliable source than the source code 
itself. 
Here's a general overview:

the algorithm iteratively splits, collapses and smooths surface triangles so 
that
they tend to comply to an underlying metric expressed as a point array sitting
on the starting surface or as a global number

   -elementsizemode ElementSizeMode (str,1) in ['area', 'edgelength',
     'areaarray', 'edgelengtharray']; default=area

this pertains to the definition of the metric: with "area" you'll be able to 
specify
a global target area that each triangle will tend to achieve, with "edgelength"
a global nominal triangle edgelength; with areaarray and edgelengtharray,
each triangle will look at the number of the array associated to the points of
the original surface for querying the local target area or edgelength

   -area TargetArea (float,1) >= 0.0; default=1.0

the global area value

   -areaarray TargetAreaArrayName (str,1); default=TargetArea

the name of the point array on the original surface where the local target area 
is defined

   -edgelength TargetEdgeLength (float,1) >= 0.0; default=1.0

the global nominal edge length value

   -edgelengtharray TargetEdgeLengthArrayName (str,1)

the name of the point array on the original surface where the local target edge 
length
is defined

   -areafactor TargetAreaFactor (float,1) >= 0.0; default=1.0

a numerical factor by which the value in the areaarray is multiplied to yield 
the 
actual target area value (this is handy if the array is the result of a previous
script - this allows not to rescale the values beforehand)

   -edgelengthfactor TargetEdgeLengthFactor (float,1) >= 0.0;
     default=1.0

a numerical factor by which the value in the edgelengtharray is multiplied to 
yield the 
actual target edge length value (this is handy if the array is the result of a 
previous
script - this allows not to rescale the values beforehand)

   -maxarea MaxArea (float,1) >= 0.0; default=1e+16

maximum allowed triangle area

   -minarea MinArea (float,1) >= 0.0; default=0.0

minimum allowed triangle area

   -iterations NumberOfIterations (int,1) >= 0; default=10

number of times the surface element optimization process is repeated

   -connectivityiterations NumberOfConnectivityOptimizationIterations
     (int,1) >= 0; default=20

the number of sub-iterations (for each iteration) in which the surface is 
checked for
optimal connectivity; a triangulated surface has an optimal 6-neighbor 
connectivity,
any deviation results in poorer triangles; the algorithm tries to minimize 
deviations 
by collapsing or splitting triangles in >6 or <6 topologies, respectively

   -entityidsarray CellEntityIdsArrayName (str,1); default=None

the name of the cell array in which the ids of the eventual surface entities 
(wall, inlet,
outlet, etc) are stored in the input surface, which the algorithm tries to 
preserve (for 
instance, edge flips across two different regions are not allowed)

   -aspectratio AspectRatioThreshold (float,1) >= 0.0; default=1.2

the threshold of the triangle aspect ratio above which a triangle is considered 
too skewed
and it is collapsed (see also next parameter)

   -minareafactor MinAreaFactor (float,1) >= 0.0; default=0.5

tolerance with which a triangle is left untouched if

  double frobeniusAspectRatio = (side1Squared + side2Squared + side3Squared) / 
(4.0 * sqrt(3.0) * area);

  if (frobeniusAspectRatio < this->AspectRatioThreshold && area > targetArea * 
this->MinAreaFactor)
    {
    return DO_NOTHING;
    }

   -internalangletolerance InternalAngleTolerance (float,1) >= 0.0;
     default=0.0

an edge-flip operation is performed if the maximum internal angle of the 
unflipped configuration
is lower than the maximum internal angle of the flipped configuration plus this 
tolerance (this is
a bit like an hysteresis to avoid repeated edge flips back and forth)

   -normalangletolerance NormalAngleTolerance (float,1) >= 0.0;
     default=0.2

this is a tolerance that regulates what it is considered a valid edge-flip. If 
the flip results in two triangles
with triangle normals that have very different orientations compared to the 
difference in orientation prior
to flipping, the flip is considered invalid. The threshold determines how big 
the excess in difference is allowed.

   -collapseangle CollapseAngleThreshold (float,1) >= 0.0; default=0.2

this is the value of the angle between two triangle normals that allows a 
triangle to be collapsed if its aspect ratio 
is low. If aspect ratio is low but two triangles that become neighbors after 
the edge collapse are going to have 
a very high angle between the normals, the collapse is avoided.

   -relaxation Relaxation (float,1) >= 0.5; default=0.5

this is the relaxation factor for the smoothing step: a point inside a 
neighborhood is moved toward the centroid
of the neighborhood with a step of relaxation * distance to the centroid. Note 
that it is then projected onto the
original surface after that.

   -exclude ExcludeEntityIds (int,-1); default=[]

ids of entities to exclude from remeshing

   -preserveboundary PreserveBoundaryEdges (bool,1); default=0

activate the preservation of boundary edges (if 0, boundary edges are preserved
in terms of geometry, but the number of edges and their location along the 
boundary
will be allowed to change)


Hope this gives you some direction. I strongly advise you to look at the source 
code (in vmtk/vtkVmtk/DifferentialGeometry/vtkvmtkPolyDataSurfaceRemeshing.cxx),
it's quite easy to follow, I believe.

Best,

Luca


On Jun 11, 2012, at 10:57 PM, Berkowitz, Benjamin M wrote:

> Hi,
> 
> Where can I find detailed information on each of the parameters in the 
> surface remeshing algorithm?
> 
> Thanks,
> Ben Berkowitz
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and 
> threat landscape has changed and how IT managers can respond. Discussions 
> will include endpoint security, mobile security and the latest in malware 
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> vmtk-users mailing list
> vmtk-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/vmtk-users


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
vmtk-users mailing list
vmtk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vmtk-users

Reply via email to