Choose your operating system:
Windows
macOS
Linux
Module |
|
Header |
/Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Public/Operations/GroupTopologyDeformer.h |
Include |
#include "Operations/GroupTopologyDeformer.h" |
class FGroupTopologyDeformer
FGroupTopologyDeformer supports deforming a Mesh based on an overlaid FGroupTopology. First the client defines a set of "Handle" elements (Faces/Corners/Edges) using SetActiveHandleX(). The client will provide new vertex positions for the vertices of these elements via the HandleVertexDeformFunc argument to UpdateSolution(). Once the Handle vertices have been updated, the deformer solves for updated vertex positions in the GroupTopology Faces that are adjacent to the handles. This region is referred to as the "ROI" (Region-of-Interest)
The default deformation is to first solve for the updated edges, and then solve for updated faces. This is done via linear encoding of the edge and face vertices relative to their boundaries (edge boundary is endpoint corners, face boundary is edges).
Various functions can be overrided to customize behavior.
Name | Description | ||
---|---|---|---|
|
EdgeEncodings |
||
|
TSet< int > |
FaceBoundaryVertsTemp |
|
|
FaceEncodings |
||
|
TSet< int > |
FaceVertsTemp |
|
|
TSet< int > |
FixedBoundaryVertices |
|
|
TSet< int > |
HandleBoundaryVertices |
|
|
TSet< int > |
HandleVertices |
|
|
InitialPositions |
||
|
const FDynamicM... |
Mesh |
|
|
TSet< int > |
ModifiedOverlayNormals |
|
|
TSet< int > |
ModifiedVertices |
|
|
ROIEdges |
||
|
TSet< int > |
ROIEdgeVertices |
|
|
ROIFaces |
||
|
const FGroupTop... |
Topology |
Name | Description | |
---|---|---|
|
~FGroupTopologyDeformer() |
Name | Description | ||
---|---|---|---|
|
CalculateROI |
Populate the internal ROI data structures based on the given HandleGroups and ROIGroups. |
|
|
ClearSolution ( |
Restore the Handle and ROI vertex positions to their initial state |
|
|
ComputeEncoding() |
Precompute the representation of the ROI vertices at the initial positions. |
|
|
const TSet< ... |
GetHandleVertices() |
|
|
const FDynam... |
GetMesh() |
|
|
const TSet< ... |
GetModifiedOverlayNormals() |
|
|
const TSet< ... |
GetModifiedVertices() |
|
|
const FGroup... |
GetTopology() |
|
|
Initialize ( |
Set the Mesh and Topology to use for the deformation |
|
|
Reset() |
These are functions that subclasses may wish to overridereset all internal data structures, eg when changing handle |
|
|
SaveInitialPositions() |
Save the positions of all vertices that will be modified |
|
|
SetActiveHandleCorners ( |
Set the active handle to the given Corners |
|
|
SetActiveHandleEdges ( |
Set the active handle to the given Edges |
|
|
SetActiveHandleFaces ( |
Handle setup/configuraiton Set the active handle to the given Faces |
|
|
UpdateSolution ( |
Solving Update TargetMesh by first calling HandleVertexDeformFunc() to get new handle vertex positions, then solving for new ROI vertex positions. |
Name |
Description |
|
---|---|---|
|
FEdgeEncoding |
|
|
FEdgeVertexEncoding |
Deformation strategy (should be in subclass?) |
|
FFaceEncoding |
|
|
FFaceVertexEncoding |
|
|
FROIEdge |
|
|
FROIFace |