Class RemesherPro
Extension to Remesher that is smarter about which edges/vertices to touch:
- queue tracks edges that were affected on last pass, and hence might need to be updated
- FastSplitIteration() just does splits, to reach target edge length as quickly as possible
- RemeshIteration() applies remesh pass for modified edges
- TrackedSmoothPass() smooths all vertices but only adds to queue if edge changes enough
- TrackedProjectionPass() same
Namespace: gs
Assembly: cs.temp.dll.dll
Syntax
public class RemesherPro : Remesher
Constructors
RemesherPro(DMesh3)
Declaration
public RemesherPro(DMesh3 m)
Parameters
Type |
Name |
Description |
DMesh3 |
m |
|
Fields
FaceProjectionPassesPerIteration
Declaration
public int FaceProjectionPassesPerIteration
Field Value
UseFaceAlignedProjection
Declaration
public bool UseFaceAlignedProjection
Field Value
vBufferVWeights
Declaration
protected DVector<double> vBufferVWeights
Field Value
Type |
Description |
DVector<Double> |
|
Methods
ComputeProjectedVertexPos(Int32, out Boolean)
This computes projected position w/ proper constraints/etc.
Does not modify mesh.
Declaration
protected virtual Vector3d ComputeProjectedVertexPos(int vID, out bool bModified)
Parameters
Returns
Type |
Description |
Vector3d |
|
EdgesIterator()
Declaration
protected IEnumerable<int> EdgesIterator()
Returns
FastestRemesh(Int32, Boolean)
Converge on remeshed result as quickly as possible
Declaration
public void FastestRemesh(int nMaxIterations = 25, bool bDoFastSplits = true)
Parameters
Type |
Name |
Description |
Int32 |
nMaxIterations |
|
Boolean |
bDoFastSplits |
|
FastSplitIteration()
This pass only does edge splits. Returns number of split edges.
Tracks previously-split
Declaration
public int FastSplitIteration()
Returns
InitializeBuffersForFacePass()
Declaration
protected virtual void InitializeBuffersForFacePass()
OnEdgeSplit(Int32, Int32, Int32, DMesh3.EdgeSplitInfo)
Declaration
protected override void OnEdgeSplit(int edgeID, int va, int vb, DMesh3.EdgeSplitInfo splitInfo)
Parameters
Type |
Name |
Description |
Int32 |
edgeID |
|
Int32 |
va |
|
Int32 |
vb |
|
DMesh3.EdgeSplitInfo |
splitInfo |
|
PopState()
Declaration
PushState()
Declaration
RemeshIteration()
Declaration
public virtual void RemeshIteration()
ResetQueue()
Reset tracked-edges queue. Should be called if mesh is modified by external functions
between passes, and also between different types of passes (eg FastSplitIteration vs RemeshIteration)
Declaration
SharpEdgeReprojectionRemesh(Int32, Int32, Boolean)
This is a remesh that tries to recover sharp edges by aligning triangles to face normals
of our projection target (similar to Ohtake RZN-flow).
Declaration
public void SharpEdgeReprojectionRemesh(int nRemeshIterations, int nTuneIterations, bool bDoFastSplits = true)
Parameters
Type |
Name |
Description |
Int32 |
nRemeshIterations |
|
Int32 |
nTuneIterations |
|
Boolean |
bDoFastSplits |
|
TrackedFaceProjectionPass()
Declaration
protected virtual void TrackedFaceProjectionPass()
TrackedProjectionPass(Boolean)
Declaration
protected virtual void TrackedProjectionPass(bool bParallel)
Parameters
Type |
Name |
Description |
Boolean |
bParallel |
|
TrackedSmoothPass(Boolean)
Declaration
protected virtual void TrackedSmoothPass(bool bParallel)
Parameters
Type |
Name |
Description |
Boolean |
bParallel |
|