Navigation
API > API/Plugins > API/Plugins/DynamicMesh
Remeshing with "face aligned projection". This approach to projection attempts to preserve sharp features in the mesh by aligning triangle normals with normals from the original mesh during the projection pass. This class also performs a pass of edge flips aimed at further aligning triangle normals to their originals. This can be helpful in fixing the occasional single "bad edge" along a sequence of feature edges.
| Name | FNormalFlowRemesher |
| Type | class |
| Header File | /Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Public/NormalFlowRemesher.h |
| Include Path | #include "NormalFlowRemesher.h" |
Syntax
class FNormalFlowRemesher : public UE::Geometry::FQueueRemesher
Inheritance Hierarchy
- FMeshRefinerBaseFixLayout → FMeshRefinerBase → FRemesher → FQueueRemesher → FNormalFlowRemesher
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FNormalFlowRemesher
(
FDynamicMesh3* MeshIn |
NormalFlowRemesher.h |
Variables
Public
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| bEnableParallelEdgeFlipPass | bool | Gather candidates for edge flipping in parallel, then do the actual flips sequentially. | NormalFlowRemesher.h | |
| bSmoothInFillAreas | bool | Control whether or not we want to apply mesh smoothing in "free" areas that have not projected to target surface. | NormalFlowRemesher.h | |
| FaceProjectionPassesPerRemeshIteration | int | During each call to RemeshIteration, do this many passes of face-aligned projection. | NormalFlowRemesher.h | |
| FillAreaDistanceMultiplier | float | This is used as a multiplier on MaxEdgeLength to determine when we identify points as being in "free" areas. | NormalFlowRemesher.h | |
| FillAreaSmoothMultiplier | float | This is used as a multiplier on the Remesher smoothing rate, applied to points identified as being in "free" areas. | NormalFlowRemesher.h | |
| MaxTriangleCount | int | Cap on triangle count, to prevent runaway mesh messes. Ignored if zero. | NormalFlowRemesher.h | |
| NormalAlignmentSpeed | double | Drag on normal alignment | NormalFlowRemesher.h | |
| NumExtraProjectionIterations | int | Additional projection iterations after the usual remesh step. | NormalFlowRemesher.h | |
| SurfaceProjectionSpeed | double | Drag on surface projection | NormalFlowRemesher.h |
Functions
Public
Overridden from FRemesher
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void BasicRemeshPass() |
"Outer loop" for all remeshing operations | NormalFlowRemesher.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
bool EdgeFlipWouldReduceNormalError
(
int EdgeID, |
Test to see if flipping an edge would improve "normal error". | NormalFlowRemesher.h | |
void InitializeVertexBufferForFacePass() |
Similar to InitializeVertexBufferForPass, but also initialize the additional per-vertex weight buffer. | NormalFlowRemesher.h | |
void RemeshWithFaceProjection () |
Do remeshing with face-aligned projection. | NormalFlowRemesher.h | |
void TrackedEdgeFlipPass() |
Flip all edges for which EdgeFlipWouldReduceNormalError returns true | NormalFlowRemesher.h | |
void TrackedFaceProjectionPass
(
double& MaxDistanceMoved, |
Perform face-aligned projection onto the target mesh. Queue edges whose lengths change because of it. | NormalFlowRemesher.h | |
void TrackedFaceProjectionPass_Serial
(
double& MaxDistanceMoved, |
NormalFlowRemesher.h |
Overridden from FQueueRemesher
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void TrackedFullProjectionPass
(
bool bParallel |
This is called during RemeshIteration. | NormalFlowRemesher.h |