| FMeshRefinerBase
|
Module |
|
Header |
/Engine/Plugins/Experimental/GeometryProcessing/Source/DynamicMesh/Public/MeshSimplification.h |
Include |
#include "MeshSimplification.h" |
template<typename QuadricErrorType>
class TMeshSimplification : public FMeshRefinerBase
Implementation of Garland & Heckbert Quadric Error Metric (QEM) Triangle Mesh Simplification
Name | Description | ||
---|---|---|---|
|
bHaveBoundary |
||
|
bMinimizeQuadricPositionError |
If true, we try to find position for collapsed vertices that minimizes quadric error. |
|
|
bPreserveBoundaryShape |
If true, we try to keep boundary vertices on boundary. You probably want this. |
|
|
int |
COUNT_COLLAPSES |
Testing/debug/profiling stuff profiling functions, turn on ENABLE_PROFILING to see output in console |
|
int |
COUNT_ITERATIONS |
|
|
EdgeQuadrics |
||
|
EdgeQueue |
||
|
IsBoundaryVtxCache |
||
|
int |
MaxEdgeID |
|
|
float |
MaxErrorAllowed |
|
|
double |
MinEdgeLength |
|
|
const int |
ModuloPrime |
We are using a modulo-index loop to break symmetry/pathological conditions. |
|
NormalOverlay |
||
|
SimplifyMode |
||
|
int |
TargetCount |
|
|
TArray< double ... |
triAreas |
|
|
triQuadrics |
||
|
vertQuadrics |
Name | Description | |
---|---|---|
|
TMeshSimplification() |
|
|
TMeshSimplification ( |
Name | Description | ||
---|---|---|---|
|
ApplyToProjectVertices |
||
|
ESimplificat... |
CollapseEdge ( |
|
|
FAttrBasedQu... |
ComputeFaceQuadric |
|
|
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() |
||
|
InitializeTriQuadrics() |
||
|
InitializeVertexQuadrics() |
||
|
IsBoundaryVertex ( |
||
|
OnEdgeCollapse ( |
||
|
OnEdgeCollapse ( |
Subclasses can override these to implement custom behavior... |
|
|
OptimalPoint ( |
Return point that minimizes quadric error for edge [ea,eb] |
|
|
Precompute ( |
||
|
ProfileBeginCollapse() |
||
|
ProfileBeginOps() |
||
|
ProfileBeginPass() |
||
|
ProfileBeginProject() |
||
|
ProfileBeginSetup() |
||
|
ProfileEndCollapse() |
||
|
ProfileEndOps() |
||
|
ProfileEndPass() |
||
|
ProfileEndProject() |
||
|
ProfileEndSetup() |
||
|
ProjectVertex ( |
||
|
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. |
|
|
SimplifyToTriangleCount ( |
Simplify mesh until we reach a specific triangle count. |
|
|
SimplifyToVertexCount ( |
Simplify mesh until it has a specific vertex count |
|
|
int |
StartEdges() |
|
|
UpdateNeighbours |
Update queue weight for each edge in vertex one-ring |
|
|
UpdateNeighbours |
Name |
Description |
|
---|---|---|
|
FEdgeError |
|
|
QEdge |
Internal class for priority queue |
Name |
Description |
|
---|---|---|
|
ETargetModes |
Name |
Description |
---|---|
FQuadricErrorType |