| FGroupTopology
|
Module |
|
Header |
/Engine/Plugins/Experimental/GeometryProcessing/Source/DynamicMesh/Public/GroupTopology.h |
Include |
#include "GroupTopology.h" |
class FGroupTopology
Given a per-triangle integer ("group"), FGroupTopology extracts a group-level topological graph from an input Mesh. The graph consists of three elements: Corners: there is a corner at each vertex where 3 or more groups meet (ie 3 or more groups in one-ring) Edges: a group edge is a list of one or more connected edges that have the same pair of different groups on either side Group: a group is a set of connected faces with the same GroupID
By default, the triangle group attribute of the input Mesh is used. You can override GetGroupID to provide your own grouping.
Various query functions are provided to allow group topology to be interrogated. Note that these functions refer to "GroupID", "CornerID", and "GroupEdgeID", these are simply indices into the internal .Groups, .Corners, and .Edges arrays
Name | Description | ||
---|---|---|---|
|
Corners |
List of Corners in the topology graph (ie these are the nodes/vertices of the graph) |
|
|
CornerVerticesFlags |
||
|
Edges |
List of Edges in the topology graph (each edge connects two corners/nodes) |
|
|
TArray< int > |
EmptyArray |
|
|
TArray< int > |
GroupIDToGroupIndexMap |
|
|
Groups |
List of Groups in the topology graph (ie faces) |
|
|
const FDynamicM... |
Mesh |
|
|
VertexIDToCornerIDMap |
Name | Description | |
---|---|---|
|
FGroupTopology() |
|
|
FGroupTopology ( |
Name | Description | |
---|---|---|
|
~FGroupTopology() |
Name | Description | ||
---|---|---|---|
|
CollectGroupBoundaryVertices ( |
Add all the group boundary vertices of the given GroupID to the Vertices set |
|
|
CollectGroupVertices ( |
Add all the vertices of the given GroupID to the Vertices set |
|
|
ExtractGroupEdges ( |
||
|
FindCornerNbrGroups ( |
Add all the groups connected to the given Corner to the GroupsOut list |
|
|
FindCornerNbrGroups |
Add all the groups connected to the given Corners to the GroupsOut list |
|
|
FindEdgeNbrGroups ( |
Add the groups connected to the given GroupEdgeID to the GroupsOut list. |
|
|
FindEdgeNbrGroups |
Add the groups connected to all the GroupEdgeIDs to the GroupsOut list. |
|
|
int |
FindExistingGroupEdge ( |
|
|
const FGroup... |
FindGroupByID ( |
|
|
int |
FindGroupEdgeID ( |
|
|
FindVertexNbrGroups |
Add all the groups connected to the given Mesh Vertices to the GroupsOut list |
|
|
FindVertexNbrGroups ( |
Add all the groups connected to the given Mesh Vertex to the GroupsOut list |
|
|
ForGroupEdges |
Call EdgeFunc for each boundary edge of the given Group (no order defined) |
|
|
ForGroupSetEdges |
Call EdgeFunc for each boundary edge of each of the given Groups (no order defined) |
|
|
GetAllVertexGroups |
||
|
GetCornerIDFromVertexID ( |
||
|
int |
GetCornerVertexID ( |
|
|
double |
GetEdgeArcLength |
|
|
GetEdgeMidpoint |
||
|
const TArray... |
GetGroupEdgeEdges ( |
|
|
GetGroupEdgeTangent ( |
Calculate tangent of group edge, as direction from start to end endpoints |
|
|
const TArray... |
GetGroupEdgeVertices ( |
|
|
const TArray... |
GetGroupFaces ( |
|
|
GetGroupFrame ( |
||
|
int |
GetGroupID ( |
Adjacency of Per-Triangle integers are what define the triangle groups. |
|
const TArray... |
GetGroupNbrGroups ( |
|
|
const TArray... |
GetGroupTriangles ( |
|
|
GetSelectedTriangles ( |
Get the set of selected triangles for a given GroupTopologySelection |
|
|
GetSelectionFrame ( |
||
|
IsBoundaryEdge ( |
||
|
IsCornerVertex ( |
||
|
IsIsolatedLoop ( |
||
|
IsSimpleGroupEdge ( |
||
|
MakeEdgeID ( |
||
|
MakeEdgeID ( |
||
|
RebuildTopology() |
Build the group topology graph. |
Name |
Description |
|
---|---|---|
|
FCorner |
FCorner is a "corner" in the group topology, IE a vertex where 3+ groups meet. |
|
FGroup |
FGroup is a set of connected triangles with the same GroupID |
|
FGroupBoundary |
A Group is bounded by closed loops of FGroupEdge elements. |
|
FGroupEdge |
FGroupEdge is a sequence of group-boundary-edges where the two groups on either side of each edge are the same. |