Navigation
API > API/Plugins > API/Plugins/DynamicMesh
Extension to Remesher that is smarter about which edges/vertices to touch:
- A buffer 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
- TrackedFullSmoothPass_Buffer() smooths all vertices but only adds to queue if edge changes enough
- TrackedFullProjectionPass() projects all vertices but only adds to queue if edge changes enough
| Name | FQueueRemesher |
| Type | class |
| Header File | /Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Public/QueueRemesher.h |
| Include Path | #include "QueueRemesher.h" |
Syntax
class FQueueRemesher : public UE::Geometry::FRemesher
Inheritance Hierarchy
- FMeshRefinerBaseFixLayout → FMeshRefinerBase → FRemesher → FQueueRemesher
Derived Classes
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FQueueRemesher
(
FDynamicMesh3* MeshIn |
QueueRemesher.h |
Structs
| Name | Remarks |
|---|---|
| SettingState | We occasionally want to override the user-specified choices of edge operations to achieve some sub-step of a full remesh algorithm. |
Variables
Public
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| MaxFastSplitIterations | int | Max number of passes just doing edge splits. | QueueRemesher.h | |
| MaxRemeshIterations | int | Max number of passes doing full remeshing operations. | QueueRemesher.h | |
| MinActiveEdgeFraction | double | If fraction of active edges falls below this threshold, consider result converged and terminate before MaxRemeshIterations. | QueueRemesher.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void FastestRemesh() |
Converge on remeshed result as quickly as possible. | QueueRemesher.h |
Overridden from FRemesher
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void BasicRemeshPass() |
"Outer loop" for all remeshing operations | QueueRemesher.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
int FastSplitIteration() |
This pass only does edge splits and enqueues modified vertex neighborhoods. | QueueRemesher.h | |
void PopState() |
QueueRemesher.h | ||
void PushState() |
QueueRemesher.h | ||
void QueueEdge
(
int eid |
QueueRemesher.h | ||
void QueueOneRing
(
int vid |
QueueRemesher.h | ||
void RemeshIteration
(
TFunctionRef< bool(void)> EarlyTerminationCheck |
This pass does all edge operations plug smoothing and reprojection. | QueueRemesher.h | |
void ResetQueue() |
QueueRemesher.h | ||
virtual void TrackedFullProjectionPass
(
bool bParallel |
Note: FRemesher has this: virtual void FullProjectionPass();. | QueueRemesher.h | |
void TrackedFullSmoothPass_Buffer
(
bool bParallel |
Note: superclass has this: virtual void FullSmoothPass_Buffer(bool bParallel);. | QueueRemesher.h | |
void TrackedMoveVerticesParallel
(
TFunction< FVector3d(int, bool&)> NewVertexPosition |
Move all vertices in parallel. | QueueRemesher.h |
Overridden from FRemesher
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void InitializeVertexBufferForPass() |
QueueRemesher.h | ||
virtual void OnEdgeSplit
(
int EdgeID, |
Call the function above to enqueue edges in the ModifiedEdges set. | QueueRemesher.h |