Operations

Choose your operating system:

Windows

macOS

Linux

Classes

Name

Description

Public class

FDisplaceMesh

Public class

FExtrudeMesh

FExtrudeMesh might someday be removed.

Public class

FFFDLattice

Free-form deformation lattice.

Public class

FGroupEdgeInserter

Used to insert group edges and group edge loops.

Public class

FGroupTopologyDeformer

FGroupTopologyDeformer supports deforming a Mesh based on an overlaid FGroupTopology.

Public class

FInsetMeshRegion

FInsetMeshRegion implements local inset of a mesh region.

Public class

FIntrinsicEdgeFlipMesh

FIntrinsicEdgeFlipMesh supports edge flips, but no other operations that change the mesh connectivity, and no operations that affect the vertices.

Public class

FIntrinsicTriangulation

Class that manages the intrinsic triangulation of a given FDynamicMesh.

Public class

FJoinMeshLoops

FJoinMeshLoops connects two open loops of a mesh with a quad-strip.

Public struct

FLatticeExecutionInfo

Public class

FMeshAttributeTransfer

FMeshAttributeTransfer transfers attributes from a SourceMesh to a TargetMesh

Public class

FMeshBevel

FMeshBevel applies a "Bevel" operation to edges of a FDynamicMesh3.

Public class

FMeshBoolean

MeshBoolean perform a boolean operation on two input meshes.

Public struct

FMeshConnection

A Connection stores the information needed to define a local reference direction for each vertex and triangle.

Public class

FMeshConvexHull

Calculate Convex Hull of a Mesh

Public class

FMeshGeodesicSurfaceTracer

Class that, given a starting location and direction, traces a geodesic path along a mesh.

Public class

FMeshMeshCut

Cut a mesh where it crosses a second mesh resolving all intersections, but not deleting geometry.

Public class

FMeshMirror

Public class

FMeshPlaneCut

Cut the Mesh with the Plane.

Public class

FMeshProjectionHull

Calculate a Convex Hull for a Mesh by first Projecting all vertices to a plane, computing a 2D convex polygon that contains them, and then sweeping that 2D hull to create an extruded 3D volume.

Public class

FMeshRegionOperator

This class automatically extracts a submesh from a mesh, and can re-insert it after you have edited it, as long as you have not messed up the boundary

Public class

FMeshRepairOrientation

Invert triangles as needed to a consistent ~"outward" orientation

Public class

FMeshSelfCut

Public class

FMeshSelfUnion

MeshSelfUnion perform a "Mesh Boolean" style union of a mesh on itself, resolving any self intersections and welding the new boundaries as needed

Public struct

FMeshSurfaceDirection

Public class

FMeshSurfacePath

Walk the surface of an FDynamicMesh to try find a planar path connecting two points.

Public struct

FMeshSurfacePoint

Public struct

FMeshTangentDirection

Public class

FMinimalHoleFiller

Construct a "minimal" fill surface for the hole.

Public struct

FNormalCoordinates

Normal Coordinates as defined by "Discrete Conformal Equivalence of Polyhedral Surfaces" - Gillespi, Springborn, Crane, TOG V40 No4, 2021 This structure assumes that the surface mesh is fixed, and the intrinsic mesh shares the same vertex set as the surface mesh and is initialized with the same connectivity as the surface mesh.

Public class

FOffsetMeshRegion

FOffsetMeshRegion implements local extrusion/offset of a mesh region.

Public class

FPlanarFlipsOptimization

If both triangles on an edge are coplanar, we can arbitrarily flip the interior edge to improve triangle quality.

Public class

FPlanarHoleFiller

Fill a set of boundary loops with planar surfaces. User must provide the triangulation function.

Public class

FPNTriangles

FPNTriangles implements curved PN (Point-Normal) Triangles - https://alex.vlachos.com/graphics/CurvedPNTriangles.pdf.

Public class

FPolygroupRemesh

PolygroupRemesh remesh only considering polygroup features (topological corners and bends on polygroup edges) This can help clean up low poly meshes that have extra vertices along straight edges e.g. after mesh Boolean operations

Public struct

FSignpost

Signpost Coordinates inspired by "Navigating Intrinsic Triangulations" Sharp, Soliman and Crane [2019, ACM Transactions on Graphics] This structure assumes that the surface mesh is fixed, but allows the intrinsic mesh to support operations like edge splits and triangle pokes.

Public class

FSimpleHoleFiller

Fill an EdgeLoop hole with triangles.

Public class

FSimpleIntrinsicEdgeFlipMesh

FSimpleIntrinsicEdgeFlipMesh supports edge flips, but no other operations that change the mesh connectivity, and no operations that affect the vertices.

Public struct

FSmoothFillOptions

Fill parameters

Public class

FSmoothHoleFiller

This fills a hole in a mesh by doing a trivial fill, then doing a remesh, then a laplacian smooth, then a second remesh.

Public struct

FSurfacePoint

Location on an extrinsic (surface) mesh stored as a union.

Public class

FTangentTri2

Public struct

FTraceResult

Public class

FUniformTesselate

Given an input mesh and a tesselation level, this operator generates a new tesselated mesh where every triangle in the input mesh is uniformly subtriangulated into (TesselationNum + 1)^2 triangles.

Public class

FVertexPositionCache

Basic cache of vertex positions.

Public class

IHoleFiller

Public class

TRemoveOccludedTriangles

Remove "occluded" triangles, i.e. triangles on the "inside" of the mesh(es).

Enums

Functions

Name Description

Public function Static

double

 

UE::Geometry::AsZeroToTwoPi

(
    double AngleR
)

Return AngleR in [0,2pi) range.

Public function

void

 

UE::Geometry::ComputeArbitraryTrianglePatchUVs

(
    FDynamicMesh3& Mesh,
    FDynamicMeshUVOverlay& UVOverlay,
    const TArray< int32 >& TriangleSet
)

Public function

void

 

UE::Geometry::ComputeInsetLineSegmentsFromEdges

(
    const FDynamicMesh3& Mesh,
    const TArray< int32 >& EdgeList,
    double InsetDistance,
    TArray< FLine3d >& InsetLinesOut
)

For each edge in EdgeList, compute a line segment offset from the original edge by distance InsetDistance.

Public function

bool

 

UE::Geometry::EmbedProjectedPath

(
    FDynamicMesh3* Mesh,
    int StartTriID,
    FFrame3d Frame,
    const TArray< FVector2d >& Path2D,
    TArray< int >& OutPathVertices,
    TArray< int >& OutVertexCorrespond...,
    bool bClosePath,
    FMeshFaceSelection* EnclosedFa...,
    double PtSnapVertexOrEdgeThresholdS...
)

Embed a 2D path into a mesh by projection, starting the walk from a given triangle.

Public function

bool

 

UE::Geometry::EmbedProjectedPaths

(
    FDynamicMesh3* Mesh,
    const TArrayView< const int > Start...,
    FFrame3d Frame,
    const TArrayView< const TArray< FVe...,
    TArray< TArray< int >>& OutAllPath...,
    TArray< TArray< int >>& OutAllVert...,
    bool bClosePaths,
    FMeshFaceSelection* EnclosedFa...,
    double PtSnapVertexOrEdgeThresholdS...
)

Embed multiple 2D paths into a mesh by projection, starting the walks from the given triangles.

Public function

int32

 

UE::Geometry::FlipToDelaunay

(
    FIntrinsicTriangulation& Intrinsic...,
    TSet< int >& Uncorrected,
    const int32 MaxFlipCount
)

Perform edge flips on intrinsic mesh until either the MaxFlipCount is reached or the mesh is fully Delaunay

Public function

int32

 

UE::Geometry::FlipToDelaunay

(
    FIntrinsicEdgeFlipMesh& IntrinsicM...,
    TSet< int >& Uncorrected,
    const int32 MaxFlipCount
)

Perform edge flips on intrinsic mesh until either the MaxFlipCount is reached or the mesh is fully Delaunay

Public function

int32

 

UE::Geometry::FlipToDelaunay

(
    FSimpleIntrinsicEdgeFlipMesh& Intr...,
    TSet< int >& Uncorrected,
    const int32 MaxFlipCount
)

Perform edge flips on intrinsic mesh until either the MaxFlipCount is reached or the mesh is fully Delaunay

Public function Static

bool

 

UE::Geometry::GeodesicSingleTriangleUtils::IsTerminated

(
    const FTraceResult& Result
)

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceFromVertex

(
    const FDynamicMesh3& Mesh,
    const FMeshTangentDirection& Direc...,
    double MaxDistance
)

Trace from a Vertex Crossing.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceFromVertex

(
    const FDynamicMesh3& Mesh,
    const FMeshTangentDirection& Direc...,
    FTangentTri2& ScratchTangentTri2,
    double MaxDistance
)

Trace from a Vertex Crossing.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceFromVertex

(
    const FDynamicMesh3& Mesh,
    int32 VID,
    const FMeshSurfaceDirection& Direc...,
    double MaxDistance
)

Trace from a Vertex Crossing.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceFromVertex

(
    const FDynamicMesh3& Mesh,
    int32 VID,
    const FMeshSurfaceDirection& Direc...,
    FTangentTri2& ScratchTangentTri2,
    double MaxDistance
)

Trace from a Vertex Crossing.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceNextTriangle

(
    const FDynamicMesh3& Mesh,
    const FTraceResult& LastTrace,
    double MaxDistance
)

Trace, starting with the result of an earlier trace.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceNextTriangle

(
    const FDynamicMesh3& Mesh,
    const FTraceResult& LastTrace,
    FTangentTri2& ScratchTangentTri2,
    double MaxDistance
)

Trace, starting with the result of an earlier trace.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceTangentTriangle

(
    const FTangentTri2& TangentTri2,
    const FVector2d& RayOrigin,
    const FVector2d& RayDir,
    double MaxDistance
)

Functions for tracing across a single triangle on a mesh TraceFTangentTri2 using a local coordinate system defined by aligning the first edge of the triangle with the positive x-direction and the opposing vertex with positive y-coordinate.

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceTriangleFromBaryPoint

(
    const FDynamicMesh3& Mesh,
    const int32 TriID,
    const FVector3d& BaryPoint,
    const FMeshSurfaceDirection& Direc...,
    double MaxDistance
)

Trace From an Edge crossing into the triangle TriID

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceTriangleFromBaryPoint

(
    const FDynamicMesh3& Mesh,
    const int32 TriID,
    const FVector3d& BaryPoint,
    const FMeshSurfaceDirection& Direc...,
    FTangentTri2& ScratchTangentTri2,
    double MaxDistance
)

Trace From an Edge crossing into the triangle TriID

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceTriangleFromEdge

(
    const FDynamicMesh3& Mesh,
    const int32 TriID,
    double EdgeAlpha,
    const FMeshSurfaceDirection& Direc...,
    double MaxDistance
)

Trace From an Edge crossing into the triangle TriID

Public function

FTraceResult

 

UE::Geometry::GeodesicSingleTriangleUtils::TraceTriangleFromEdge

(
    const FDynamicMesh3& Mesh,
    const int32 TriID,
    double EdgeAlpha,
    const FMeshSurfaceDirection& Direc...,
    FTangentTri2& ScratchTangentTri2,
    double MaxDistance
)

Trace From an Edge crossing into the triangle TriID

Public function

FVector3d

 

UE::Geometry::IntrinsicCorrespondenceUtils::AsR3Position

(
    const FSurfacePoint& SurfacePoint,
    const FDynamicMesh3& Mesh,
    bool& bValidPoint
)

Public function

bool

 

UE::Geometry::IntrinsicCorrespondenceUtils::VisitVertexAdjacentElements

(
    const MeshType& Mesh,
    const int32 VID,
    const int32 StartEID,
    FunctorType& Functor
)

Utility to walk around a vertex (VID) visiting the adjacent edges and triangles.

Public function

FVector3d

 

UE::Geometry::SolveInsetVertexPositionFromLinePair

(
    const FVector3d& Position,
    const FLine3d& InsetEdgeLine1,
    const FLine3d& InsetEdgeLine2
)

Solve for a new inset position by finding the intersection point a pair of inset-lines (or handle parallel-lines case).

Public function

void

 

UE::Geometry::SolveInsetVertexPositionsFromInsetLines

(
    const FDynamicMesh3& Mesh,
    const TArray< FLine3d >& InsetEdge...,
    const TArray< int32 >& VertexIDs,
    TArray< FVector3d >& VertexPositio...,
    bool bIsLoop
)

For each vertex in VertexIDs, compute inset position based on list of precomputed inset lines and store in VertexPositionsOut.