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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/vmtk-users