Choose your operating system:
Windows
macOS
Linux
| FMeshRefinerBase
|
Module |
|
Header |
/Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Public/MeshSimplification.h |
Include |
#include "MeshSimplification.h" |
template<typename QuadricErrorType>
class TMeshSimplification : public UE::Geometry::FMeshRefinerBase
Implementation of Garland & Heckbert Quadric Error Metric (QEM) Triangle Mesh Simplification
Name | Description | ||
---|---|---|---|
|
bAllowSeamCollapse |
If true, we allow UV and Normal seams to collapse during simplification. |
|
|
bHaveBoundary |
||
|
bPreserveBoundaryShape |
If true, we try to keep boundary vertices on boundary. |
|
|
bRetainQuadricMemory |
If false, face and vertex quadrics are recomputed in the neighborhood of each collapse, definitely slower but maybe higher quality |
|
|
CollapseMode |
Controls the method used when selecting the position the results from an edge collapse. |
|
|
int |
COUNT_COLLAPSES |
Testing/debug/profiling stuff profiling functions, turn on ENABLE_PROFILING to see output in console |
|
int |
COUNT_ITERATIONS |
|
|
EdgeQuadrics |
||
|
EdgeQueue |
||
|
GeometricErrorConstraint |
Geometric error measurement/check to perform before allowing an edge collapse |
|
|
double |
GeometricErrorTolerance |
Tolerance to use in geometric error checking |
|
GroupBoundaryConstraint |
||
|
IsBoundaryVtxCache |
||
|
MaterialBoundaryConstraint |
||
|
int |
MaxEdgeID |
|
|
float |
MaxErrorAllowed |
|
|
MeshBoundaryConstraint |
When using the constraint system, these options will apply to the appropriate boundaries. |
|
|
double |
MinEdgeLength |
|
|
const int |
ModuloPrime |
We are using a modulo-index loop to break symmetry/pathological conditions. |
|
NormalOverlay |
||
|
double |
SeamEdgeWeight |
|
|
seamQuadrics |
||
|
SimplifyMode |
||
|
int |
TargetCount |
|
|
TArray< double ... |
triAreas |
|
|
triQuadrics |
||
|
vertQuadrics |
Name | Description | |
---|---|---|
|
TMeshSimplification() |
|
|
TMeshSimplification ( |
Name | Description | ||
---|---|---|---|
|
ApplyToProjectVertices |
||
|
FQuadricErro... |
AssembleEdgeQuadric ( |
Uses pre-computed vertex, face and seam quadrics to construct the edge quadric. |
|
CanCollapseEdge ( |
Figure out if we can collapse edge eid=[a,b] under current constraint set This depends on the base class function FMeshRefinerBase::CanCollapseEdge, but includes additional restrictions specified by the CollapseMode of this simplifier. |
|
|
CheckIfCollapseWithinGeometricTolerance ( |
Check if edge collapse would violate geometric error criteria |
|
|
ESimplificat... |
CollapseEdge ( |
Collapse given edge. |
|
FQuadricErro... |
ComputeFaceQuadric |
|
|
DoSimplify() |
Top-level function that does the simplification |
|
|
EnableInlineProjection() |
This just lets us write more concise code |
|
|
FastCollapsePass ( |
Does N rounds of collapsing edges longer than fMinEdgeLength. |
|
|
FullProjectionPass() |
Project vertices onto projection target. |
|
|
int |
GetNextEdge ( |
|
|
GetProjectedCollapsePosition ( |
Used by collapse-edge to get projected position for new vertex |
|
|
GetProjectedPoint ( |
||
|
InitializeQueue() |
||
|
InitializeSeamQuadrics() |
||
|
InitializeTriQuadrics() |
||
|
InitializeVertexQuadrics() |
||
|
IsBoundaryVertex ( |
||
|
OnEdgeCollapse ( |
||
|
OnEdgeCollapse ( |
Subclasses can override these to implement custom behavior... |
|
|
OnRemoveIsolatedTriangle ( |
||
|
OptimalPoint ( |
Return point that minimizes quadric error for edge [ea,eb] |
|
|
Precompute ( |
||
|
ProfileBeginCollapse() |
||
|
ProfileBeginOps() |
||
|
ProfileBeginPass() |
||
|
ProfileBeginProject() |
||
|
ProfileBeginSetup() |
||
|
ProfileEndCollapse() |
||
|
ProfileEndOps() |
||
|
ProfileEndPass() |
||
|
ProfileEndProject() |
||
|
ProfileEndSetup() |
||
|
ProjectVertex ( |
||
|
RemoveIsolatedTriangle ( |
Remove an isolated triangle. |
|
|
Reproject() |
||
|
SimplifyToEdgeLength ( |
Simplify mesh until no edges smaller than min length remain. This is not a great criteria. |
|
|
SimplifyToMaxError ( |
Simplify mesh until the quadric error of an edge collapse exceeds the specified criteria. |
|
|
SimplifyToMinimalPlanar ( |
Maximally collapse mesh in a way that does not change shape at all. |
|
|
SimplifyToTriangleCount ( |
Simplify mesh until we reach a specific triangle count. |
|
|
SimplifyToVertexCount ( |
Simplify mesh until it has a specific vertex count |
|
|
int |
StartEdges() |
|
|
UpdateNeighborhood ( |
Update queue weight for each edge in vertex one-ring and rebuild and quadrics necessary |
Name |
Description |
|
---|---|---|
|
FEdgeError |
|
|
QEdge |
Internal class for priority queue |
Name |
Description |
|
---|---|---|
|
EGeometricErrorCriteria |
Ways to measure geometric error |
|
ESimplificationCollapseModes |
|
|
ETargetModes |
Name |
Description |
---|---|
FQuadricErrorType |
|
FSeamQuadricType |
|
RealType |