Navigation
API > API/Plugins > API/Plugins/DynamicMesh > API/Plugins/DynamicMesh/Operations
References
| Module | DynamicMesh |
| Header | /Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Public/Operations/GeodesicPath.h |
| Include | #include "Operations/GeodesicPath.h" |
Syntax
class FDeformableEdgePath
Remarks
Given a single path initially defined by edges on a FDynamicMesh (the SurfaceMesh), this class uses an intrinsic mesh with the same vertex set to minimize the length of the path on the surface mesh. This is done iteratively by a succession of local path deformations comprised of (local) intrisic edge flips and path re-routing, each deformation locally reduces the path length. The resulting path is comprised of intrinsic mesh edges.
This is an implementation of the ideas in "You Can Find Geodesic Paths in Triangle Meshes by Just Flipping Edges" by Nicholas Sharp and Keenan Crane ACM Trans. Graph. Vol. 39, No. 6, 2020
The original path is constructed as a sequence of mesh edges relative to the SurfaceMesh ( the FDynamicMesh3 ), these edges are encoded with path direction as FDirectedSegments. Note: The current implementation does not support closed paths or multiple paths.
Variables
| Type | Name | Description | |
|---|---|---|---|
| IntrinsicMeshType | EdgeFlipMesh | ||
| FEdgePath | EdgePath | ||
| TMap< int32, TArray< int32 > > | EIDToSIDsMap | ||
| FBinaryHeap< double > | JointAngleQueue | ||
| int32 | NumFlips | ||
| TDynamicVector< FPathJoint > | PathJoints | ||
| double | PathLength |
Constructors
| Type | Name | Description | |
|---|---|---|---|
| Only allow construction from a path and mesh. | |||
FDeformableEdgePath
(
const FDeformableEdgePath& |
|||
FDeformableEdgePath
(
const FDynamicMesh3& SurfaceMeshIn, |
Constructor assumes the directed segments are ordered from tail (at index 0) to head |
Destructors
| Type | Name | Description | |
|---|---|---|---|
Functions
| Type | Name | Description | |
|---|---|---|---|
| TArray< FSurfacePoint > | AsSurfacePoints
(
double CoalesceThreshold |
||
| void | ComputeWedgeAngles
(
int32 IncomingEID, |
Compute the two angles formed at the vertex CenterVID by the two wedges formed by splitting the local one-ring by local path specified as incoming and outgoing edges. | |
| bool | DeformJoint
(
const int32 IncomingEID, |
Edge flip the adjacent edges to the JointVID and collect the DeformedPath that can be used to replace the local incoming and outgoing edge path | |
| void | DeformJoint
(
FPathJoint& PathJoint |
Replace the specified two connected edge segments (FPathJoint) in the main path with a new sub-path that connects the same end points. | |
| const FEdgePath & | GetEdgePath () |
||
| const FIntrinsicEdgeFlipMesh & | |||
| double | |||
| bool | IsJointFlexible
(
const FPathJoint& PathJoint |
||
| void | Minimize
(
FEdgePathDeformationInfo& DeformedPathInfo, |
Minimize the deformable edge path with respect to the total path length. | |
| bool | OuterArcFlipEdges
(
int32 StartEID, |
Traveling either CCW or CW around vertex CenterVID, from edge StartEID to edge EndEID, flip edges adjacent to CVID. | |
| void | RemoveSegment
(
int32 SID |
Remove specified segment from the linked-list path and clean up joint-related data for the joint that ends with this segment. | |
| void | ReplaceJointWithPath
(
const FPathJoint PathJoint, |
Splice in a path to replace the joint and update the joint angle queue. | |
| int32 | SegmentHeadVID
(
int32 SID |
||
| int32 | SegmentTailVID
(
int32 SID |
||
| void | UpdateJointAndQueue
(
int32 OutgoingSegmentID |
Compute data associated with the joint formed by the specified segment (outgoing), and the preceding segment (incoming) in the path. |
Classes
| Type | Name | Description | |
|---|---|---|---|
| FEdgePathDeformationInfo | Information gathered during minimization | ||
| FPathJoint |
Enums
| Type | Name | Description | |
|---|---|---|---|
| ESide |
Typedefs
| Name | Description |
|---|---|
| FSurfacePoint | Struct that references a point on a mesh, by vertex, by edge-crossing, or barycentric coords |
| IntrinsicMeshType |
Constants
| Name | Description |
|---|---|
| InvalidID |