description: The set of functions below are intended to be used together in situations like 3D sculpting where we want to apply symmetry constraints within a "brush region of interest (ROI)" SeeUMeshVertexSculptToolfor example usage Computes list of vertices that are mirror-constrained to vertices in VertexROI. If bForceSameSizeWithGaps is true, MirrorVertexROIOut will be the same size as VertexROI, and -1 is stored for vertices in VertexROI that are source vertices or on the symmetry plane. Otherwise those vertices are skipped.

code: void GetMirrorVertexROI ( const [TArray](API\Runtime\Core\Containers\TArray)< int > & VertexROI, [TArray](API\Runtime\Core\Containers\TArray)< int > & MirrorVertexROIOut, bool bForceSameSizeWithGaps ) const


description: the input Frame mirrored to the "positive" side (unchanged if it is already on the positive side)

module: DynamicMesh

code: [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) GetPositiveSideFrame ( [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) FromFrame ) const


description:
Given a Mesh, an AABBTree, and a Symmetry Plane/Frame, detect any pairs of vertices with planar/mirror-symmetry relationships, as well as "on plane" vertices
false if any non-on-plane vertex fails to find a match.

code: bool Initialize ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) * Spatial, [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) SymmetryFrameIn )


description:
Given a Mesh and its bounding box, and a Symmetry Plane/Frame, detect any pairs of vertices with planar/mirror-symmetry relationships, as well as "on plane" vertices
false if any non-on-plane vertex fails to find a match.

code: bool Initialize ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) & Bounds, [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) SymmetryFrameIn )


description: For any vertices in VertexIndices that are on-plane, take the position in VertexPositionsInOut, apply the on-plane constraint, and return the constrained position in VertexPositionsInOut (ie VertexPositionsInOut is updated to new positions)

code: void ApplySymmetryPlaneConstraints ( const [TArray](API\Runtime\Core\Containers\TArray)< int > & VertexIndices, [TArray](API\Runtime\Core\Containers\TArray)< FVector3d > & VertexPositionsInOut ) const


className: MatchFeaturesTolerance

description: Note for features we specify a direct tolerance instead of a factor, as features are already in their own re-scaled space.

code: static constexpr double MatchFeaturesTolerance = (1.e-4);


className: MatchVertexToleranceFactor

code: static constexpr double MatchVertexToleranceFactor = OnPlaneToleranceFactor * 2;


className: OnPlaneToleranceFactor

description: Tolerances used for matching / hashing in symmetry-findingPoint must be within this distance from the symmetry plane to be considered "on" the plane. Note: Vertices can still be matched below this tolerance; this is just the distance at which a lack of match is considered a lack of symmetry Note: Each Tolerance Factor will be multiplied by "ErrorScale", so that it can appropriately scale up for larger inputs. SetErrorScale() must be called before using these tolerances.

code: static constexpr double OnPlaneToleranceFactor = (double)FMathf::ZeroTolerance * .5;


code: void UpdatePlaneVertex ( int32 VertexID )


code: void UpdateSourceVertex ( int32 VertexID )


className: VertexHashCellSizeFactor

description: Note performance of vertex hashing is much better when VertexHashCellSize is large enough that most hash lookups only need to look at a single cell.

code: static constexpr double VertexHashCellSizeFactor = MatchVertexToleranceFactor * 10;


className: FMeshPlanarSymmetry

description: The Symmetry Plane is specified by a Frame3d where the XY axes define the plane and the Z axis is the plane normal. So references to "Positive" side below are relative to that Z axis/plane

code: class FMeshPlanarSymmetry

bCanIgnoreDegenerateSymmetries

type: bool

description: If true, symmetry-finding can return false if it detects a symmetry where all points are on the symmetry plane, rather than attempt to fit a symmetry plane in that case.

Vertices

type: TArray<FSymmet...

description: List of vertices, size == TargetMesh.MaxVertexID()


description: true if the two regions are adjacent, ie they share an edge on at least one triangle

code: bool AreRegionsConnected ( int32 RegionAIndex, int32 RegionBIndex ) const


description: true if the two triangles are in the same region

code: bool AreTrianglesConnected ( int32 TriangleA, int32 TriangleB ) const


description: Build a region graph for a Mesh using the given ConnectedComponents

code: void BuildFromComponents ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FMeshConnectedComponents](API\Runtime\GeometryCore\Selections\FMeshConnectedComponents) & Components, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< int32(int32)> ExternalIDFunc, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int32, int32)> TrisConnectedPredicate )


description: Build a region graph for a Mesh using the given triangle sets

code: void BuildFromTriangleSets ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< [TArray](API\Runtime\Core\Containers\TArray)< int32 >> & TriangleSets, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< int32(int32)> ExternalIDFunc, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int32, int32)> TrisConnectedPredicate )


code: void BuildNeigbours ( int32 RegionIdx )


className: FRegion

code: struct FRegion

Neighbours

type: TArray<FNeighb...

Triangles

type: TArray< int32 >


description: the ExternalID for a Region, defined at Build time

code: int32 GetExternalID ( int32 RegionIdx ) const


description: the triangle count for a Region

code: int32 GetRegionTriCount ( int32 RegionIdx ) const


description: list of Neigbour Region Indices for a Region

code: [TArray](API\Runtime\Core\Containers\TArray)< int32 > GetNeighbours ( int32 RegionIdx ) const


description: list of triangles in a Region

code: const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & GetRegionTris ( int32 RegionIdx ) const


description: true if the RegionIndex is valid

code: int32 IsRegion ( int32 RegionIdx ) const


description: Max valid region index. Some region indices may be invalid.

code: int32 MaxRegionIndex() const


description: Merge one existing Region into another

code: bool MergeRegion ( int32 RemoveRgnIdx, int32 MergeToRgnIdx )


description: Incrementally merge regions with a triangle count below the given SmallThreshold. A Small region is merged to it's most-similar neighbour, as defined by RegionSimilarityFunc. The merge order is sorted by largest Similarity, ie most-similar regions are merged first.

code: bool MergeSmallRegions ( int32 SmallThreshold, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< float(int32 SmallRgnIdx, int32 NbrRgnIdx)> RegionSimilarityFunc )


code: bool MergeSmallRegionsPass ( int32 SmallThreshold, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< float(int32 SmallRgnIdx, int32 NbrRgnIdx)> RegionSimilarityFunc )


description:
Optimize region borders by swapping triangles. The swap criteria is, if 2/3 of the neighbours of a given Triangle in region A are both in region B, swap it to region B. This swapping process is repeated in rounds, MaxRounds times.
true if any swaps were applied

code: bool OptimizeBorders ( int32 MaxRounds )


description:
This method leaves theFMeshRegionGraphin an invalid state, and should only be used as a means to avoid memory copies while extracting the triangle sets from aFMeshRegionGraphthat will then be discarded
list of triangles in a Region

code: [TArray](API\Runtime\Core\Containers\TArray)< int32 > && MoveRegionTris ( int32 RegionIdx )


className: FMeshRegionGraph

description: An integer ID can be associated with each Region using the ExternalIDFunc passed to the various Build() functions.

code: class FMeshRegionGraph

Regions

type: TArray<FRegion...


description:
Top-level driver function, automatically computes UVs on the given TargetMesh and stores in the given TargetUVOverlay, using the steps below, based on the parameters above
result information, which may include warnings/etc

code: [FGeometryResult](API\Runtime\GeometryCore\Util\FGeometryResult) AutoComputeUVs ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & TargetMesh, [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & TargetUVOverlay, [FProgressCancel](API\Runtime\GeometryCore\Util\FProgressCancel) * Progress )


description:
Compute a decomposition of TargetMesh into many small patches (driven by TargetPatchCount).
true on success

code: bool ComputeInitialMeshPatches ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & TargetMesh, [FMeshConnectedComponents](API\Runtime\GeometryCore\Selections\FMeshConnectedComponents) & InitialComponentsOut, [FProgressCancel](API\Runtime\GeometryCore\Util\FProgressCancel) * Progress )


description:
Incrementally combine existing mesh patches into larger patches that meet the various criteria defined by the parameters above
false if catastrophic failure ocurred (ie IslandsOut is invalid) or if Progress was cancelled

code: bool ComputeIslandsByRegionMerging ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & TargetMesh, [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & TargetUVOverlay, const [FMeshConnectedComponents](API\Runtime\GeometryCore\Selections\FMeshConnectedComponents) & InitialComponents, [TArray](API\Runtime\Core\Containers\TArray)< [TArray](API\Runtime\Core\Containers\TArray)< int32 >> & IslandsOut, [FProgressCancel](API\Runtime\GeometryCore\Util\FProgressCancel) * Progress )


description:
Calculate UVs for the input mesh patches of TargetMesh and store in TargetUVOVerlay
number of failed UV islands, 0 if all were successful, and -1 if Progress was cancelled

code: int32 ComputeUVsFromTriangleSets ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & TargetMesh, [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & TargetUVOverlay, const [TArray](API\Runtime\Core\Containers\TArray)< [TArray](API\Runtime\Core\Containers\TArray)< int32 >> & TriangleSets, [TArray](API\Runtime\Core\Containers\TArray)< bool > & bValidUVsComputedOut, [FProgressCancel](API\Runtime\GeometryCore\Util\FProgressCancel) * Progress )


className: FPatchBasedMeshUVGenerator

description: The various steps of the generator can be called independently, eg if one already has a patch decomposition, then the initial steps can be skipped

code: class FPatchBasedMeshUVGenerator

bAutoAlignPatches

description: Packing parameters (used in AutoComputeUVs)

CompactnessThreshold

type: double

GroupConstraint

type: FPolygroupSet&...

description: If this is set, then the output patches will respect the borders of the input polygroups, eg as if they were disconnected components.

MergingThreshold

description: Parameters for island merging (ComputeIslandsByRegionMerging)

NormalSmoothingRounds

description: ExpMap parameters (ComputeUVsFromTriangleSets)

PackingGutterWidth

type: float

TargetPatchCount

description: Parameters for patch generation (ComputeInitialMeshPatches)


description: Given a UV overlay, generate a mesh out of the overlay using the given UV to 3d position function. The resulting mesh's vertex IDs will match the overlay element IDs, and the triangle IDs will match the overlay triangle IDs. The mesh will have a UV overlay of its own that will match the source overlay except for the parent verts.

code: namespace UE { namespace Geometry { namespace UVUnwrapMeshUtil { void UE::Geometry::UVUnwrapMeshUtil::GenerateUVUnwrapMesh ( const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & UVOverlay, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & UnwrapMeshOut, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector2f &)> UVToVertPosition ) } } }


className: FUVEditResult

code: struct FUVEditResult


description: Given a mesh that corresponds to an overlay with an exact mapping of triangle IDs and element IDs to vertex IDs (i.e. one generated by GenerateUVUnwrapMesh), update the vertex locations and triangle connectivity of the mesh.

code: namespace UE { namespace Geometry { namespace UVUnwrapMeshUtil { void UE::Geometry::UVUnwrapMeshUtil::UpdateUVUnwrapMesh ( const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & UVOverlayIn, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & UnwrapMeshOut, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector2f &)> UVToVertPosition, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedElementIDs, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedConnectivityTids ) } } }


description: Given a copy of a UV Unwrap mesh whose positions and connectivity have been updated, update the destination unwrap mesh. Note that SourceUnwrapMesh is expected to have its overlay already updated.

code: namespace UE { namespace Geometry { namespace UVUnwrapMeshUtil { void UE::Geometry::UVUnwrapMeshUtil::UpdateUVUnwrapMesh ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & SourceUnwrapMesh, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & DestUnwrapMesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedVids, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedConnectivityTids ) } } }


description: Given a mesh that corresponds to an overlay with an exact mapping of triangle IDs and element IDs to vertex IDs (i.e. one generated by GenerateUVUnwrapMesh), update the element values and connectivity of the overlay.

code: namespace UE { namespace Geometry { namespace UVUnwrapMeshUtil { void UE::Geometry::UVUnwrapMeshUtil::UpdateUVOverlayFromUnwrapMesh ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & UnwrapMeshIn, [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & UVOverlayOut, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector2f(const FVector3d &)> VertPositionToUV, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedVids, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedConnectivityTids ) } } }


description: Given two overlays that have the same triangle IDs, copy all or part of one overlay into another.

code: namespace UE { namespace Geometry { namespace UVUnwrapMeshUtil { void UE::Geometry::UVUnwrapMeshUtil::UpdateOverlayFromOverlay ( const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & OverlayIn, [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & OverlayOut, bool bParentVertsIdentical, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedElements, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * ChangedConnectivityTids ) } } }


description: The fail mode is a template parameter so that we can do compile time branching. The function will return on the first mismatch it finds.

code: namespace UE { namespace Geometry { namespace UVUnwrapMeshUtil { template<EValidityCheckFailMode FailMode> bool UE::Geometry::UVUnwrapMeshUtil::DoesUnwrapMatchOverlay ( const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) & OverlayIn, const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & UnwrapMeshIn, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector2f &)> UVToVertPosition, double Tolerance ) } } }


code: namespace UE { namespace MeshUVTransforms { enum EIslandPositionType { CurrentPosition, MinBoxCornerToOrigin, CenterToOrigin, } } }


description: Fit all UV element IDs of the UV Overlay inside the specified Box.

code: namespace UE { namespace MeshUVTransforms { void UE::MeshUVTransforms::FitToBox ( [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * UVOverlay, const [FAxisAlignedBox2d](API\Runtime\GeometryCore\FAxisAlignedBox2d) & Box, bool bUniformScale ) } }


description: Fit given UV element IDs inside the specified Box.

code: namespace UE { namespace MeshUVTransforms { void UE::MeshUVTransforms::FitToBox ( [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * UVOverlay, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & UVElementIDs, const [FAxisAlignedBox2d](API\Runtime\GeometryCore\FAxisAlignedBox2d) & Box, bool bUniformScale ) } }


description: For all UV seam elements, apply a small displacement so that they have unique positions. This allows unwelding/re-welding the UVs without breaking the seams (which is horrible but necessary in some cases)

code: namespace UE { namespace MeshUVTransforms { void UE::MeshUVTransforms::MakeSeamsDisjoint ( [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * UVOverlay ) } }


description: Recenter given UV element IDs using given IslandPositionType strategy (based on centroid, bounding-box, etc) and then apply uniform scaling

code: namespace UE { namespace MeshUVTransforms { void UE::MeshUVTransforms::RecenterScale ( [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * UVOverlay, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & UVElementIDs, [EIslandPositionType](API\Plugins\DynamicMesh\Parameterization\UE__MeshUVTransf-) NewPosition, double UVScale ) } }


description: true if the specified layer (default or extended) exist and is initialized on the given Mesh

code: bool CheckExists ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh )


description: Construct aFPolygroupLayerfor the default layer


description: Construct aFPolygroupLayerfor an extended layer

code: static [FPolygroupLayer](API\Plugins\DynamicMesh\Polygroups\FPolygroupLayer) Layer ( int32 Index )


code: bool operator== ( const [FPolygroupLayer](API\Plugins\DynamicMesh\Polygroups\FPolygroupLayer) & OtherLayer ) const


className: FPolygroupLayer

description: FPolygroupLayerrepresents a polygroup set on aFDynamicMesh3, which supports a "default" group set stored on the mesh, and then N extended group layers stored in the mesh AttributeSet. This struct can represent either.

code: struct FPolygroupLayer

bIsDefaultLayer

description: If true, layer is the defaultFDynamicMesh3triangle groups layer

LayerIndex

description: If bIsDefaultLayer is false, this is the index of the AttributeSet Polygroup Layer


description: Allocate a new unused PolygroupID by incrementing the MaxGroupID member

code: int32 AllocateNewGroupID()


description: PolygroupID for a TriangleID

code: int32 GetGroup ( int32 TriangleID ) const


description: PolygroupAttribute this PolygroupSet references, or null if no PolygroupAttribute is in use


description: Mesh this PolygroupSet references

code: const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetMesh()


description: index of current PolygroupAttribute into Mesh AttributeSet, or -1 if this information does not exist

code: int32 GetPolygroupIndex() const


description: PolygroupID for a TriangleID

code: int32 GetTriangleGroup ( int32 TriangleID ) const


description: Calculate the current maximum PolygroupID used in the active set and store in MaxGroupID member

code: void RecalculateMaxGroupID()


description: Set the PolygroupID for a TriangleID

code: void SetGroup ( int32 TriangleID, int32 NewGroupID, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & WritableMesh )


description: Initialize a PolygroupSet by copying an existing PolygroupSet

code: FPolygroupSet ( const [FPolygroupSet](API\Plugins\DynamicMesh\Polygroups\FPolygroupSet) * CopyIn )


description: Initialize a PolygroupSet for the given Mesh, and standard triangle group layer

code: FPolygroupSet ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn )


code: FPolygroupSet ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn, [FPolygroupLayer](API\Plugins\DynamicMesh\Polygroups\FPolygroupLayer) GroupLayer )


description: Initialize a PolygroupSet for given Mesh and specific Polygroup attribute layer

code: FPolygroupSet ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn, const [FDynamicMeshPolygroupAttribute](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshPolygroupAttribute) * PolygroupAttribIn )


description: Initialize a PolygroupSet for given Mesh and specific Polygroup attribute layer, found by index. If not valid, fall back to standard triangle group layer.

code: FPolygroupSet ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn, int32 PolygroupLayerIndex )


description: Initialize a PolygroupSet for given Mesh and specific Polygroup attribute layer, found by name. If not valid, fall back to standard triangle group layer.

code: FPolygroupSet ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn, [FName](API\Runtime\Core\UObject\FName) AttribName )


className: FPolygroupSet

description: To support unique Polygroup ID allocation,FPolygroupSetcalculates the maximum GroupID on creation, and updates this maximum acrossSetGroup()calls.AllocateNewGroupID()can be used to provide new unused GroupIDs. For consistency withFDynamicMesh3, MaxGroupID is set such that all GroupIDs are less than MaxGroupID

code: struct FPolygroupSet

Mesh

type: constFDynamicM...


description: Copy the computed Polygroups to the given PolygroupSet and Mesh

code: void CopyPolygroupsToPolygroupSet ( [FPolygroupSet](API\Plugins\DynamicMesh\Polygroups\FPolygroupSet) & Polygroups, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & TargetMesh )


description: Copy the computed Polygroups to the input Mesh. Will be automatically called by the FindPolygroupsFromX() functions above if bCopyToMesh=true

code: void CopyPolygroupsToMesh()


className: EWeightingType

description: Weight potions for algorithms below

code: enum EWeightingType { None, NormalDeviation, }


description: Initialize the PolygroupEdges output member by finding all the mesh edges that are on polygroup borders. Requires that polygroups have been computed and copied to the mesh

code: bool FindPolygroupEdges()


description: Find Polygroups by randomly picking initial seed triangles and then flood-filling outwards, stopping when the opening angle at an edge is larger than the angle defined by the DotTolerance.

code: bool FindPolygroupsFromFaceNormals ( double DotTolerance, bool bRespectUVSeams, bool bRespectNormalSeams )


description: Find Polygroups based on UV Islands, ie each UV Island becomes a Polygroup

code: bool FindPolygroupsFromUVIslands ( int32 UVLayer )


description: Find Polygroups based on Seams in UV Overlay


description: Find Polygroups based on mesh connectivity, ie each connected-component becomes a Polygroup

code: bool FindPolygroupsFromConnectedTris()


description: Find Polygroups by trying to invert triangluation of a polygon mesh

code: bool FindSourceMeshPolygonPolygroups ( bool bRespectUVSeams, bool bRespectNormalSeams, double QuadAdjacencyWeight, double QuadMetricClamp, int MaxSearchRounds )


description: Incrementally compute approximate-geodesic-based furthest-point sampling of the mesh until NumPoints samples have been found, then compute local geodesic patches (eg approximate surface voronoi diagaram). Optionally weight geodesic-distance computation, which will produce different patch shapes. If StartingGroups are provided, then new groups are constrained to subdivide existing groups, ie none of the new groups will cross the boundaries of the StartingGroups

code: bool FindPolygroupsFromFurthestPointSampling ( int32 NumPoints, [EWeightingType](API\Plugins\DynamicMesh\Polygroups\FPolygroupsGenerator\EWeightingType) WeightingType, FVector3d WeightingCoeffs, [FPolygroupSet](API\Plugins\DynamicMesh\Polygroups\FPolygroupSet) * StartingGroups )


code: void GetSeamConstraintEdges ( bool bUVSeams, bool bNormalSeams, [TSet](API\Runtime\Core\Containers\TSet)< int32 > & ConstraintEdgesOut ) const


code: void OptimizePolygroups ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int32, int32)> TrisConnectedPredicate )


code: void PostProcessPolygroups ( bool bApplyMerging, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int32, int32)> TrisConnectedPredicate )


code: FPolygroupsGenerator ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn )


className: FPolygroupsGenerator

description: FPolygroupsGeneratorgenerates (face/tri/poly)groups for an input mesh based on the geometry and attributes of the input mesh. The various FindPolygroupsFromX() are the driving functions, each performs the full computation.

code: class FPolygroupsGenerator

bApplyPostProcessing

description: If true, then groups will be post-processed to optimize them, based on parmeters below

bCopyToMesh

description: If true, after groups are computed they will be copied to the output mesh

FoundPolygroups

type: TArray<TArray<...

description: Lists of triangle IDs, each list defines a polygroup/polygon

InitialGroupID

description: Start at this GroupID when assigning new groups

description: Source mesh

PolygroupEdges

type: TArray< int >

description: List of edge IDs of mesh edges that are on polygroup borders


description: Compute the upper bound of the group IDs for the given layer (one greater than the highest group ID)

code: namespace UE { namespace Geometry { int32 UE::Geometry::ComputeGroupIDBound ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FDynamicMeshPolygroupAttribute](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshPolygroupAttribute) * Layer ) } }


description:
Find the first FDynamicMeshPolygroupAttribute with the givenFNamein a the AttributeSet of a Mesh.
nullptr if no Polygroup layer is found

code: namespace UE { namespace Geometry { [FDynamicMeshPolygroupAttribute](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshPolygroupAttribute) * UE::Geometry::FindPolygroupLayerByName ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [FName](API\Runtime\Core\UObject\FName) Name ) } }


code: namespace UE { namespace Geometry { const [FDynamicMeshPolygroupAttribute](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshPolygroupAttribute) * UE::Geometry::FindPolygroupLayerByName ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [FName](API\Runtime\Core\UObject\FName) Name ) } }


description: index of the first Layer with the givenFNamein Mesh AttributeSet, or -1 if not found

code: namespace UE { namespace Geometry { int32 UE::Geometry::FindPolygroupLayerIndexByName ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [FName](API\Runtime\Core\UObject\FName) Name ) } }


description: index of Layer in Mesh AttributeSet, or -1 if not found

code: namespace UE { namespace Geometry { int32 UE::Geometry::FindPolygroupLayerIndex ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FDynamicMeshPolygroupAttribute](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshPolygroupAttribute) * Layer ) } }


description: unique group layer name derived from BaseName by appending a numeric suffix in the form _0, _1, etc

code: namespace UE { namespace Geometry { [FString](API\Runtime\Core\Containers\FString) UE::Geometry::MakeUniqueGroupLayerName ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [FString](API\Runtime\Core\Containers\FString) BaseName ) } }


code: uint64 GetChangeStamp() const


code: template<typename VecType> void GetTriVertices ( int32 TriangleIndex, VecType & V0, VecType & V1, VecType & V2 ) const


code: [FIndex3i](API\Runtime\GeometryCore\FIndex3i) GetTriangle ( int32 TriangleIndex ) const


code: bool IsTriangle ( int32 TriangleIndex ) const


code: bool IsVertex ( int32 VertexIndex ) const


code: FVector3d GetVertex ( int32 ElementIndex ) const


className: FDynamicMeshUVMesh

description: Wrapper around a Mesh and UV Overlay that provides UVs triangles as vertices. This allows building aTMeshAABBTree3for the UV mesh

code: struct FDynamicMeshUVMesh


description:
Find nearest triangle from the given ray
a pointer to the mesh whose triangle was intersected, nullptr otherwise.

code: virtual const void * FindNearestHitTriangle ( const FRay3d & Ray, double & NearestT, int & TriId, FVector3d & TriBaryCoords, const [IMeshSpatial::FQueryOptions](API\Runtime\GeometryCore\Spatial\IMeshSpatial\FQueryOptions) & Options ) const


description: a pointer to the mesh that holds the nearest triangle

code: virtual const void * FindNearestTriangle ( const FVector3d & Point, double & NearestDistSqrOut, int & TriId, FVector3d & TriBaryCoords, const [IMeshSpatial::FQueryOptions](API\Runtime\GeometryCore\Spatial\IMeshSpatial\FQueryOptions) & Options ) const


description: axis aligned bounding box for the detail mesh(es).

code: virtual [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) GetBounds() const


description: TODO: Rework the curvature interface to only compute the minimal set of work.

code: virtual void GetCurvature ( const void * Mesh, [FMeshVertexCurvatureCache](API\Plugins\DynamicMesh\FMeshVertexCurvatureCache) & CurvatureCache ) const


description: the material ID for the given triangle.

code: virtual int32 GetMaterialID ( const void * Mesh, const int TriId ) const


code: virtual const [FBakeDetailNormalTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailNormalTexture) * GetNormalTextureMap ( const void * Mesh ) const


description: Retrieve a normal map and UV layer index from a given mesh in the detail set

code: virtual const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) * GetNormalMap ( const void * Mesh ) const


description: the group ID for the given triangle.

code: virtual int32 GetPolyGroupID ( const void * Mesh, const int TriId ) const


description: 3 vertex indices of the given triangle.

code: virtual [FIndex3i](API\Runtime\GeometryCore\FIndex3i) GetTriangle ( const void * Mesh, const int TriId ) const


description: Retrieve a texture map and UV layer index from a given mesh in the detail set

code: virtual const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) * GetTextureMap ( const void * Mesh ) const


description: the triangle count of a given mesh.

code: virtual int32 GetTriangleCount ( const void * Mesh ) const


description: the normal for the given triangle.

code: virtual FVector3d GetTriNormal ( const void * Mesh, const int TriId ) const


description: true if this mesh has vertex colors on the given layer

code: virtual bool HasColors ( const void * Mesh ) const


description: true if this mesh has normals

code: virtual bool HasNormals ( const void * Mesh ) const


description: true if this mesh has tangents

code: virtual bool HasTangents ( const void * Mesh ) const


description: true if this mesh has UVs on the given layer

code: virtual bool HasUVs ( const void * Mesh, const int UVLayer ) const


code: [FMeshBakerDynamicMeshSampler](API\Plugins\DynamicMesh\Sampling\FMeshBakerDynamicMeshSampler) & operator= ( const [FMeshBakerDynamicMeshSampler](API\Plugins\DynamicMesh\Sampling\FMeshBakerDynamicMeshSampler) & )


description: true if the given triangle index is valid.

code: virtual bool IsTriangle ( const void * Mesh, const int TriId ) const


code: [FMeshBakerDynamicMeshSampler](API\Plugins\DynamicMesh\Sampling\FMeshBakerDynamicMeshSampler) & operator= ( [FMeshBakerDynamicMeshSampler](API\Plugins\DynamicMesh\Sampling\FMeshBakerDynamicMeshSampler) && )


description: Iterate over each mesh in the detail set.

code: virtual void ProcessMeshes ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const void *)> ProcessFn ) const


description: Associate a normal map and UV layer index for a given mesh in the detail set

code: virtual void SetNormalTextureMap ( const void * Mesh, const [FBakeDetailNormalTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailNormalTexture) & Map )


code: virtual void SetNormalMap ( const void * Mesh, const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) & Map )


description: Set the tangents for a given mesh

code: virtual void SetTangents ( const void * Mesh, [FMeshTangentsd](API\Runtime\GeometryCore\DynamicMesh\FMeshTangentsd) * Tangents )


description: Associate a texture map and UV layer index for a given mesh in the detail set

code: virtual void SetTextureMap ( const void * Mesh, const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) & Map )


description: true if nearest point to triangle distance correspondence is supported

code: virtual bool SupportsNearestPointCorrespondence() const


description: true if triangle ray intersection correspondence is supported

code: virtual bool SupportsRaycastCorrespondence() const


description:
Return true if any triangles hit by the given ray
true if any triangles hit by the given ray

code: virtual bool TestAnyHitTriangle ( const FRay3d & Ray, const [IMeshSpatial::FQueryOptions](API\Runtime\GeometryCore\Spatial\IMeshSpatial\FQueryOptions) & Options ) const


description:
Compute interpolated Position value inside triangle using barycentric coordinates
resulting interpolated Position parameter value

code: virtual FVector3d TriBaryInterpolatePoint ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords ) const


description:
Compute interpolated Normal value inside triangle using barycentric coordinates
true if a valid normal was returned, false otherwise

code: virtual bool TriBaryInterpolateNormal ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, FVector3f & NormalOut ) const


description:
Compute interpolated UV value inside triangle using barycentric coordinates
true if a valid UV was returned, false otherwise

code: virtual bool TriBaryInterpolateUV ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, const int UVLayer, FVector2f & UVOut ) const


description: true if identity correspondence is supported

code: virtual bool SupportsIdentityCorrespondence() const


description:
Compute interpolated vertex color value inside triangle using barycentric coordinates
true if a valid vertex color was returned, false otherwise

code: virtual bool TriBaryInterpolateColor ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, FVector4f & ColorOut ) const


code: FMeshBakerDynamicMeshSampler ( [FMeshBakerDynamicMeshSampler](API\Plugins\DynamicMesh\Sampling\FMeshBakerDynamicMeshSampler) && )


description:
Compute interpolated tangent values inside triangle using barycentric coordinates
true if valid tangents were returned, false otherwise

code: virtual bool TriBaryInterpolateTangents ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, FVector3d & TangentX, FVector3d & TangentY ) const


code: FMeshBakerDynamicMeshSampler ( const [FMeshBakerDynamicMeshSampler](API\Plugins\DynamicMesh\Sampling\FMeshBakerDynamicMeshSampler) & )


code: FMeshBakerDynamicMeshSampler ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) * Spatial, const [FMeshTangentsd](API\Runtime\GeometryCore\DynamicMesh\FMeshTangentsd) * Tangents )


className: FMeshBakerDynamicMeshSampler

description: DynamicMesh bake detail sampler for baking 1 detail mesh to 1 target mesh.

code: class FMeshBakerDynamicMeshSampler : public [UE::Geometry::IMeshBakerDetailSampler](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler)

DetailNormalTextureMap

type: FBakeDetailNorm...

DetailTangents

type: constFMeshTang...

DetailTextureMap

type: FBakeDetailText...


className: ECorrespondenceStrategy

description: ECorrespondenceStrategy determines the basic approach that will be used to establish a mapping from points on the BakeTarget Mesh (usually low-poly) to points on the Detail Mesh (eg highpoly). Geometrically this is not a 1-1 mapping so there are various options

code: enum ECorrespondenceStrategy { RaycastStandard, NearestPoint, RaycastStandardThenNearest, Identity, Custom, }


description: DetailMesh Getters.

code: const [IMeshBakerDetailSampler](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler) * GetDetailSampler() const


description: Other Getters.

code: double GetProjectionDistance() const


description: TargetMesh Getters.

code: const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetTargetMesh() const


code: const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * GetTargetMeshNormals() const


code: const [FMeshTangentsd](API\Runtime\GeometryCore\DynamicMesh\FMeshTangentsd) * GetTargetMeshTangents() const


code: int32 GetTargetMeshUVLayer() const


code: const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * GetTargetMeshUVs() const


code: void SetCorrespondenceStrategy ( const [ECorrespondenceStrategy](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker\ECorrespondenceStrategy) Strategy )


code: void SetProjectionDistance ( const double ProjectionDistanceIn )


description: Setters.

code: void SetDetailSampler ( [IMeshBakerDetailSampler](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler) * Sampler )


code: void SetTargetMesh ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh )


code: void SetTargetMeshTangents ( const [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMeshTangentsd](API\Runtime\GeometryCore\DynamicMesh\FMeshTangentsd), ESPMode::ThreadSafe > & Tangents )


code: void SetTargetMeshUVLayer ( const int32 UVLayerIn )


code: static void EvaluateChannel ( const int DataIdx, float *& In, float & Out, void * EvalData )


description: the data layout of the evaluator

code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


className: FMeshBaseBaker

code: class FMeshBaseBaker

CorrespondenceStrategy

type: ECorrespondence...

DetailSampler

type: IMeshBakerDetai...

TargetMeshTangents

type: TSharedPtr<FMe...


code: static void EvaluateColor ( const int DataIdx, float *& In, FVector4f & Out, void * EvalData )


description: Invoked at start of bake to setup this evaluator and return an evaluation context to the baker. The evaluation context indicates to the baker how the evaluator should be invoked. See FEvaluationContext for more details.

code: virtual void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


code: static void EvaluateDefault ( float *& Out, void * EvalData )


code: static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


description: the type of evaluator.

code: virtual [EMeshMapEvaluatorType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshMapEvaluatorT-) Type() const


code: FMeshConstantMapEvaluator ( float ValueIn )


className: FMeshConstantMapEvaluator

description: A mesh evaluator for constant data. This evaluator can be useful as a filler when computing per channel color data.

code: class FMeshConstantMapEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)


description: Compute functionsCalculate bake result

code: virtual void Bake()


description: Populate Curvatures member if valid data has not been provided

code: void CacheDetailCurvatures ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * DetailMesh )


className: EClampMode

code: enum EClampMode { FullRange = 0, Positive = 1, Negative = 2, }


className: ECurvatureType

description: Options

code: enum ECurvatureType { Mean = 0, Gaussian = 1, MaxPrincipal = 2, MinPrincipal = 3, }


className: EColorMode

code: enum EColorMode { BlackGrayWhite = 0, RedGreenBlue = 1, RedBlue = 2, }


code: void GetColorMapRange ( FVector3f & NegativeColor, FVector3f & ZeroColor, FVector3f & PositiveColor )


description: Output

code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > & GetResult() const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > TakeResult()


code: virtual ~FMeshCurvatureMapBaker()


className: FMeshCurvatureMapBaker

code: class FMeshCurvatureMapBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

bOverrideCurvatureRange

type: bool

description: Allows override of the max curvature; if false, range is set based on [-(avg+stddev), avg+stddev]

Curvatures

description: Required input data, can be provided, will be computed otherwise

ResultBuilder

type: TUniquePtr<TIm...

UseClampMode

type: EClampMode

UseColorMode

type: EColorMode

UseCurvatureType

type: ECurvatureType


code: void CacheDetailCurvatures()


description: the data layout of the evaluator

code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


code: static void EvaluateChannel ( const int DataIdx, float *& In, float & Out, void * EvalData )


code: static void EvaluateDefault ( float *& Out, void * EvalData )


code: static void EvaluateColor ( const int DataIdx, float *& In, FVector4f & Out, void * EvalData )


code: void GetColorMapRange ( FVector3f & NegativeColorOut, FVector3f & ZeroColorOut, FVector3f & PositiveColorOut ) const


code: static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


code: double GetCurvature ( int32 vid ) const


code: virtual void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


description: the type of evaluator.

code: virtual [EMeshMapEvaluatorType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshMapEvaluatorT-) Type() const


className: FMeshCurvatureMapEvaluator

description: A mesh evaluator for mesh curvatures.

code: class FMeshCurvatureMapEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)

bOverrideCurvatureRange

description: Allows override of the max curvature; if false, range is set based on [-(avg+stddev), avg+stddev].

Curvatures

description: Required input data, can be provided, will be computed otherwise.

DetailSampler

type: constIMeshBake...

description: Cached data.

MaxPreClamp

type: double


description: Output

code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > > & GetResult() const


description: Compute functions

code: virtual void Bake()


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > > TakeResult()


className: FMeshGenericWorldPositionColorBaker

description: Bake Colors based on arbitrary Position/Normal sampling. Useful for (eg) baking from an arbitrary function defined over space

code: class FMeshGenericWorldPositionColorBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

ColorSampleFunction

type: TFunction< FVec...

DefaultColor

description: Required input data


description: Output

code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > & GetResult() const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > TakeResult()


className: FMeshGenericWorldPositionNormalBaker

description: Bake Tangent-Space Normals based on arbitrary Position/Normal sampling. Useful for (eg) baking from an arbitrary function defined over space.

code: class FMeshGenericWorldPositionNormalBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

BaseMeshTangents

type: constTMeshTang...

description: Required input data


code: const [FMeshImageBakingCache](API\Plugins\DynamicMesh\Sampling\FMeshImageBakingCache) * GetCache() const


code: void SetCache ( const [FMeshImageBakingCache](API\Plugins\DynamicMesh\Sampling\FMeshImageBakingCache) * CacheIn )


className: FMeshImageBaker

code: class FMeshImageBaker

ImageBakeCache

type: constFMeshImag...


code: void EvaluateSamples ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const [FVector2i](API\Runtime\GeometryCore\FVector2i) &, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshImageBakingCache\FCorrespondenceSample) &)> SampleFunction, bool bParallel ) const


code: enum ECorrespondenceStrategy { RaycastStandard, NearestPoint, RaycastStandardThenNearest, Identity, }


className: FCorrespondenceSample

code: struct FCorrespondenceSample

BaseSample

type: FMeshUVSampleIn...


description: Iterate over valid samples in the Occupancy map to find "holes", ie pixels where no valid sample could be computed according to IsValidSampleFunction. This can be used after a bake to find locations where the baked map needs to be repaired as a post-process (eg using image infilling/etc), which can produce better results than (eg) using a "worse" sampling strategy to guarantee some non-garbage result (eg Nearest-point sampling)

code: void FindSamplingHoles ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(const [FVector2i](API\Runtime\GeometryCore\FVector2i) &)> IsValidSampleFunction, [TArray](API\Runtime\Core\Containers\TArray)< [FVector2i](API\Runtime\GeometryCore\FVector2i) > & HolePixelsOut, bool bParallel ) const


code: const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetBakeTargetMesh() const


code: const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * GetBakeTargetNormals() const


code: const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * GetBakeTargetUVs() const


code: const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetDetailMesh() const


code: const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * GetDetailNormals() const


code: const [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) * GetDetailSpatial() const


code: const [FImageOccupancyMap](API\Runtime\GeometryCore\Image\FImageOccupancyMap) * GetOccupancyMap() const


code: void SetBakeTargetMesh ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh )


code: void SetCorrespondenceStrategy ( [ECorrespondenceStrategy](API\Plugins\DynamicMesh\Sampling\FMeshImageBakingCache\ECorrespondenceStrategy) Strategy )


code: void SetDetailMesh ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) * Spatial )


code: void SetGutterSize ( int32 GutterSize )


code: void SetDimensions ( [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) Dimensions )


code: void SetThickness ( double Thickness )


code: void SetUVLayer ( int32 UVLayer )


className: FMeshImageBakingCache

code: class FMeshImageBakingCache

CancelF

type: TFunction< bool...

description: If this function returns true, we should abort calculation

DetailMesh

type: constFDynamicM...

Dimensions

type: FImageDimension...

OccupancyMap

type: TUniquePtr<FIm...


description: Add a baker to be processed.

code: int32 AddEvaluator ( const [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator), ESPMode::ThreadSafe > & Eval )


description: BakeProcess all bakers to generate image results for each.

code: void Bake()


className: BoxFilter

description: Texture filters


description: Evaluate this sample.

code: void BakeSample ( [FMeshMapTileBuffer](API\Plugins\DynamicMesh\Sampling\FMeshMapTileBuffer) & TileBuffer, const [FMeshMapEvaluator::FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, const FVector2d & QueryUVPosition, const [FVector2i](API\Runtime\GeometryCore\FVector2i) & ImageCoords, const [FImageOccupancyMap](API\Runtime\GeometryCore\Image\FImageOccupancyMap) & OccupancyMap )


className: EBakeFilterType

description: Parameters

code: enum EBakeFilterType { None, Box, BSpline, MitchellNetravali, }


description: Computes the connected UV triangles and returns an array containing the mapping from triangle ID to unique UV chart ID. If the mesh has no UVs, the UVCharts will be initialized to 0.

code: static void ComputeUVCharts ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & MeshUVCharts )


code: template<[EBakeFilterType](API\Plugins\DynamicMesh\Sampling\FMeshMapBaker\EBakeFilterType) BakeFilterType> static bool EvaluateIsInFilterRegion ( const FVector2d & Dist )


code: template<[EBakeFilterType](API\Plugins\DynamicMesh\Sampling\FMeshMapBaker\EBakeFilterType) BakeFilterType> static float EvaluateFilter ( const FVector2d & Dist )


description: evaluator ids with the corresponding mode

code: const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & EvaluatorIdsForMode ( [FMeshMapEvaluator::EAccumulateMode](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EAccumulateMode) Mode ) const


className: FBakeAnalytics

description: Analytics

code: struct FBakeAnalytics

NumGutterPixels

type: std::atomic< in...


description: the bake result image for a given baker index.

code: const [TArrayView](API\Runtime\Core\Containers\TArrayView)< [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > > > GetBakeResults ( int32 EvalIdx )


description: the evaluator at the given index.

code: [FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator) * GetEvaluator ( int32 EvalIdx ) const


code: bool GetGutterEnabled() const


description: the Triangle ID to UV Chart ID mapping

code: const [TArray](API\Runtime\Core\Containers\TArray)< int32 > * GetTargetMeshUVCharts() const


code: int32 GetSamplesPerPixel() const


description: Initialize evaluation contexts and precompute data for bake evaluation.

code: void InitBake()


description: Initialize filter

code: void InitFilter()


description: Initialize bake sample default floats and colors.

code: void InitBakeDefaults()


className: IsInFilterRegionFn

code: typedef bool(*)(const FVector2d &Dist) IsInFilterRegionFn


description: Reset the list of bakers.

code: void Reset()


description: the number of bake evaluators on this baker.

code: int32 NumEvaluators() const


code: void SetDimensions ( [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) DimensionsIn )


code: void SetFilter ( [EBakeFilterType](API\Plugins\DynamicMesh\Sampling\FMeshMapBaker\EBakeFilterType) FilterTypeIn )


code: void SetGutterEnabled ( bool bEnabled )


code: void SetGutterSize ( int32 GutterSizeIn )


description: Set an a Triangle ID to UV Chart ID array for TargetMesh. If this is not set, then the baker will compute it as part ofBake(). SinceComputeUVCharts()is non-trivial, this method is intended to allow a client to externally cache the result of ComputeUVCharts to minimize the overhead per bake.

code: void SetTargetMeshUVCharts ( [TArray](API\Runtime\Core\Containers\TArray)< int32 > * UVChartsIn )


code: void SetTileSize ( int TileSizeIn )


className: TextureFilterFn

description: Texture filter function

code: typedef float(*)(const FVector2d &Dist) TextureFilterFn


className: FMeshMapBaker

code: class FMeshMapBaker : public [UE::Geometry::FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker)

BakeAccumulateLists

type: TArray<TArray<...

description: Lists of Bake indices for each accumulation mode.

BakeAnalytics

type: FBakeAnalytics

BakeContexts

type: TArray<FMeshMa...

description: Evaluation contexts for each mesh evaluator.

BakeDefaultColors

type: TArray< FVector...

BakeDefaults

type: TArray< float >

description: Array of default values/colors per BakeResult.

BakeOffsets

type: TArray< int32 >

description: Offsets per Baker into the BakeResults array.

BakeResults

type: TArray<TUnique...

description: Array of bake result images.

Bakers

type: TArray<TShared...

description: The list of evaluators to process.

BakeSampleBufferSize

description: The total size of the temporary float buffer for BakeSample.

BakeSampleOffsets

description: Offsets per BakeResult into the BakeSample buffer.

bGutterEnabled

description: If true, the baker will pad the baked content past the UV borders by GutterSize.

bParallel

type: const bool

FilterKernelSize

description: The pixel distance around the sample texel to be considered by the filter. [0, TilePadding]

FilterType

type: EBakeFilterType

description: The texture filter type.

GutterSize

description: The pixel distance (in texel diagonal length) to pad baked content past the UV borders.

InteriorSampleCallback

type: TFunction< void...

description: Function to call for each interior sample

IsInFilterRegionEval

type: IsInFilterRegio...

MeshUVSampler

type: FMeshSurfaceUVS...

PostWriteToImageCallback

description: Function to call after evaluator data is written to the final image, but before any gutter processing occurs

SampleFilterF

type: TFunction< floa...

SamplesPerPixel

description: The number of samples to evaluate per pixel.

TargetMeshUVCharts

type: TArray< int32 >...

TargetMeshUVChartsLocal

description: Local Array of TargetMesh triangle ID to UV chart ID mapping.

TextureFilterEval

type: TextureFilterFn

TilePadding

description: The amount of padding for tiled processing of the output image(s).

TileSize

description: The square dimensions for tiled processing of the output image(s).


description:
It is the responsibility of the caller to release the ownership if it was acquired viaReleaseProcessLock().
true if ownership of queue processing was acquired.

code: bool AcquireProcessLock()


className: Alignment

description: Align to cache line size and pad our slot data to avoid false sharing.

code: static constexpr SIZE_T Alignment = 64;


description: true if all items in the queue have been processed.

code: bool IsDone() const


description: Post Data pointer into the queue at a given index.

code: void Post ( SIZE_T Idx, void * Data )


code: void SetSamplesPerPixel ( int32 SamplesPerPixelIn )


description:
Retrieve the next item in the queue to process. The current index is only advanced if the item is valid or.
A void* to the data to be processed, nullptr if the data for the next item in the queue is not available yet.

code: template<bool bFlush> void * Process()


description: This should only be invoked by the thread that successfully acquired ownership of queue processing viaAcquireProcessLock().

code: void ReleaseProcessLock()


code: FMeshMapBakerQueue ( SIZE_T Size )


className: FMeshMapBakerQueue

description: This queue is designed to mediate the aggregation of data into a shared output buffer. The number of data to be aggregated must be provided at initialization. Producer threads then "post" data to the queue and any single thread can temporarily assume the role of consumer to "process" the data.

code: class FMeshMapBakerQueue


description: the data layout of the evaluator

code: const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


className: EAccumulateMode

description: Accumulate mode informs the baker how samples should be accumulated into the buffer.

code: enum EAccumulateMode { Add, Overwrite, Last, }


className: EComponents

description: The number of float components of an evaluator result/target.

code: enum EComponents { Float1 = 1, Float2 = 2, Float3 = 3, Float4 = 4, }


description: Detail to target mesh correspondence sample.

code: struct FCorrespondenceSample

BaseSample

type: FMeshUVSampleIn...

DetailMesh

type: const void *...

description: The following data has an interpretation which depends on the concrete MeshMapEvaluator/IMeshBakerDetailSampler.


className: EvaluateColorFn

description: This function will be invoked once per pixel after the evaluated samples have been accumulated. This function should:

code: typedef void(&42;)(const int DataIdx, float &42;&In, FVector4f &Out, void &42;EvalData) EvaluateColorFn


className: EvaluateChannelFn

description: This function will be invoked once per pixel channel after the evaluated samples have been accumulated. This function should:

code: typedef void(&42;)(const int DataIdx, float &42;&In, float &Out, void &42;EvalData) EvaluateChannelFn


className: EvaluateDefaultFn

description: This function should:

code: typedef void(&42;)(float &42;&Out, void &42;EvalData) EvaluateDefaultFn


className: FEvaluationContext

description: The data layout of each output result/target for this evaluator.

code: struct FEvaluationContext

AccumulateMode

type: EAccumulateMode

description: Define how the results should be accumulatd by the Baker.

DataLayout

type: TArray<ECompon...

description: The data layout of this evaluator including:

EvalData

type: void *

description: Define custom data to be passed to the evaluation function.

Evaluate

type: EvaluateFn

EvaluateChannel

type: EvaluateChannel...

EvaluateColor

type: EvaluateColorFn

EvaluateDefault

type: EvaluateDefault...


className: EvaluateFn

description: Function pointer to evaluate a mesh correspondence sample into a float buffer. This function should:

code: typedef void(&42;)(float &42;&Out, const FCorrespondenceSample &Sample, void &42;EvalData) EvaluateFn


description: Invoked at start of bake to setup this evaluator and return an evaluation context to the baker. The evaluation context indicates to the baker how the evaluator should be invoked. SeeFEvaluationContextfor more details.

code: void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


description: the type of evaluator.


description: Write float data to a float buffer and increment.

code: static void WriteToBuffer ( float *& Out, const float Data )


description: Write FVector2f data to a float buffer and increment.

code: static void WriteToBuffer ( float *& Out, const FVector2f & Data )


description: Write FVector3f data to a float buffer and increment.

code: static void WriteToBuffer ( float *& Out, const FVector3f & Data )


description: Write FVector4f data to a float buffer and increment.

code: static void WriteToBuffer ( float *& Out, const FVector4f & Data )


className: FMeshMapEvaluator

code: class FMeshMapEvaluator


code: float * GetPixel ( const int64 LinearIdx ) const


code: float & GetPixelWeight ( const int64 LinearIdx ) const


code: FMeshMapTileBuffer ( const [FImageTile](API\Runtime\GeometryCore\Image\FImageTile) & TileIn, const int32 PixelSizeIn )


code: const [FImageTile](API\Runtime\GeometryCore\Image\FImageTile) & GetTile() const


className: FMeshMapTileBuffer

description: Image tile storage for map bakes.

code: class FMeshMapTileBuffer


description: Compute functions

code: virtual void Bake()


code: void BakeMaterial ( int32 MaterialID )


className: FMeshMultiResampleImageBaker

code: class FMeshMultiResampleImageBaker : public [UE::Geometry::FMeshResampleImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshResampleImageBaker)

MultiTextures

type: TMap< int32,TS...


code: static void EvaluateSampleMulti ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


description: Invoked at start of bake to setup this evaluator and return an evaluation context to the baker. The evaluation context indicates to the baker how the evaluator should be invoked. See FEvaluationContext for more details.

code: virtual void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


description: the type of evaluator.

code: virtual [EMeshMapEvaluatorType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshMapEvaluatorT-) Type() const


className: FMeshMultiResampleImageEvaluator

description: A mesh evaluator for sampling multiple 2D textures by material ID

code: class FMeshMultiResampleImageEvaluator : public [UE::Geometry::FMeshResampleImageEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshResampleImageEvaluator)

DetailUVLayer

type: int

description: The UV channel used to sample the textures.

type: TArray<TShared...

description: List of textures indexed by material ID. Entries can be null.


description: Output

code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > & GetResult() const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > TakeResult()


code: virtual ~FMeshNormalMapBaker()


className: FMeshNormalMapBaker

code: class FMeshNormalMapBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

BaseMeshTangents

type: constTMeshTang...

description: Required input data

NormalsBuilder

type: TUniquePtr<TIm...


description: the data layout of the evaluator

code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


code: static void EvaluateChannel ( const int DataIdx, float *& In, float & Out, void * EvalData )


code: static void EvaluateDefault ( float *& Out, void * EvalData )


code: static void EvaluateColor ( const int DataIdx, float *& In, FVector4f & Out, void * EvalData )


code: template<bool bUseDetailNormalMap> static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


code: [FMeshNormalMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshNormalMapEvaluator) & operator= ( const [FMeshNormalMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshNormalMapEvaluator) & )


className: FNormalTextureMap

code: typedef [TMap](API\Runtime\Core\Containers\TMap)< const void *, [FNormalTexture](API\Plugins\DynamicMesh\Sampling\FMeshNormalMapEvaluator\FNormalTexture) > FNormalTextureMap


code: FMeshNormalMapEvaluator ( const [FMeshNormalMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshNormalMapEvaluator) & )


className: FMeshNormalMapEvaluator

description: A mesh evaluator for tangent space normals.

code: class FMeshNormalMapEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)

bHasDetailNormalTextures

type: bool

DetailNormalMaps

type: FNormalTextureM...

DetailSampler

type: constIMeshBake...

description: Cached data.


description: Compute functions

code: virtual void Bake()


className: EDistribution

description: Options

code: enum EDistribution { Uniform, Cosine, }


className: EResult

description: Output

code: enum EResult { AmbientOcclusion, BentNormal, }


className: ESpace

code: enum ESpace { Tangent, Object, }


code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > & GetResult ( [EResult](API\Plugins\DynamicMesh\Sampling\FMeshOcclusionMapBaker\EResult) Result ) const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > TakeResult ( [EResult](API\Plugins\DynamicMesh\Sampling\FMeshOcclusionMapBaker\EResult) Result )


description: Utility

code: bool WantAmbientOcclusion() const


code: virtual ~FMeshOcclusionMapBaker()


className: FMeshOcclusionMapBaker

code: class FMeshOcclusionMapBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

BaseMeshTangents

description: Inputs

BiasAngleDeg

type: double

description: Ambient Occlusion.

Distribution

type: EDistribution

NormalSpace

type: ESpace

description: Bent Normal.

OcclusionType

type: EOcclusionMapTy...


description: the data layout of the evaluator

code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


className: DefaultObjectNormal

code: static const FVector3d DefaultObjectNormal = FVector3d::Zero();


className: DefaultTangentNormal

code: static const FVector3d DefaultTangentNormal = FVector3d::UnitZ();


code: template<[EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) OcclusionType, [ESpace](API\Plugins\DynamicMesh\Sampling\FMeshOcclusionMapEvaluator\ESpace) NormalSpace> static void EvaluateChannel ( const int DataIdx, float *& In, float & Out, void * EvalData )


code: template<[EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) OcclusionType, [ESpace](API\Plugins\DynamicMesh\Sampling\FMeshOcclusionMapEvaluator\ESpace) NormalSpace> static void EvaluateColor ( const int DataIdx, float *& In, FVector4f & Out, void * EvalData )


code: template<[EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) OcclusionType, [ESpace](API\Plugins\DynamicMesh\Sampling\FMeshOcclusionMapEvaluator\ESpace) NormalSpace> static void EvaluateDefault ( float *& Out, void * EvalData )


code: template<[EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) OcclusionType, [ESpace](API\Plugins\DynamicMesh\Sampling\FMeshOcclusionMapEvaluator\ESpace) NormalSpace> static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


className: FOcclusionTuple

code: typedef [TTuple](API\Runtime\Core\Misc\TTuple)< float, FVector3f > FOcclusionTuple


code: virtual void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


description: the type of evaluator.

code: virtual [EMeshMapEvaluatorType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshMapEvaluatorT-) Type() const


className: FMeshOcclusionMapEvaluator

description: A mesh evaluator for occlusion data (Ambient Occlusion & Bent Normals).

code: class FMeshOcclusionMapEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)

BiasAngleDeg

description: Ambient Occlusion.

DetailSampler

description: Cached data.

NormalSpace

description: Bent Normal.

type: EMeshOcclusionM...

RayDirections

type: TArray< FVector...


description: Compute functions

code: virtual void Bake()


description: Output

code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > & GetResult() const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > > TakeResult()


code: virtual ~FMeshPropertyMapBaker()


className: FMeshPropertyMapBaker

code: class FMeshPropertyMapBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

Property

type: EMeshPropertyBa...

description: Options


code: static void EvaluateChannel ( const int DataIdx, float *& In, float & Out, void * EvalData )


code: static void EvaluateColor ( const int DataIdx, float *& In, FVector4f & Out, void * EvalData )


code: static void EvaluateDefault ( float *& Out, void * EvalData )


code: typedef [TMap](API\Runtime\Core\Containers\TMap)< const void *, [FNormalTexture](API\Plugins\DynamicMesh\Sampling\FMeshPropertyMapEvaluator\FNormalTexture) > FNormalTextureMap


code: [FMeshPropertyMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshPropertyMapEvaluator) & operator= ( const [FMeshPropertyMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshPropertyMapEvaluator) & )


code: FMeshPropertyMapEvaluator ( const [FMeshPropertyMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshPropertyMapEvaluator) & )


code: template<bool bUseDetailNormalMap> static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


className: FMeshPropertyMapEvaluator

description: A mesh evaluator for mesh properties as color data.

code: class FMeshPropertyMapEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)

Bounds

type: FAxisAlignedBox...

DetailSampler

description: Cached data.

type: EMeshPropertyMa...


description: Output

code: const [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > > & GetResult() const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > > TakeResult()


code: virtual ~FMeshResampleImageBaker()


className: FMeshResampleImageBaker

code: class FMeshResampleImageBaker : public [UE::Geometry::FMeshImageBaker](API\Plugins\DynamicMesh\Sampling\FMeshImageBaker)

DetailUVOverlay

type: constFDynamicM...

SampleFunction

type: TFunction< FVec...

description: Required input data


description: the data layout of the evaluator

code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


code: static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


description: the type of evaluator.

code: virtual [EMeshMapEvaluatorType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshMapEvaluatorT-) Type() const


code: virtual void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


className: FMeshResampleImageEvaluator

description: A mesh evaluator for sampling 2D texture data.

code: class FMeshResampleImageEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)

DetailSampler

description: Cached data.


description: Initialize the sampler.

code: virtual void Initialize ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * UVOverlay, [EMeshSurfaceSamplerQueryType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshSurfaceSample-) QueryType )


code: void InitializeUVMeshSpatial()


description: The Initialize function must have been called withEMeshSurfaceSamplerQueryType::UVOnlyIf the query location is not on a triangle in the Mesh then return false (SampleInfo will be invalid)

code: virtual bool QuerySampleInfo ( const FVector2d & UV, [FMeshUVSampleInfo](API\Plugins\DynamicMesh\Sampling\FMeshUVSampleInfo) & SampleInfo )


description:
Fill in the given SampleInfo for the given UV location in the given UVTriangleID.
If the query location is not on a triangle in the Mesh then return false (SampleInfo will be invalid)

code: virtual bool QuerySampleInfo ( int32 UVTriangleID, const FVector2d & UV, [FMeshUVSampleInfo](API\Plugins\DynamicMesh\Sampling\FMeshUVSampleInfo) & SampleInfo )


code: virtual ~FMeshSurfaceUVSampler()


className: FMeshSurfaceUVSampler

description: Note: This class is similar toTMeshSurfaceUVSampler(the "old" class) but provides a more convenient API. This class computes the sample info and that's it. The old class computes the sample info internally but also immediately forwards it to an application-specific sampling function which must be provided as a callback and hence has a fixed signature and requires that the sample type is passed as a template parameter. Also the old class is more awkward to use when sampling multiple things, see the documentation ofTMeshSurfaceUVSamplerfor more details.

code: class FMeshSurfaceUVSampler

QueryType

type: EMeshSurfaceSam...

UVMeshAdapter

type: FDynamicMeshUVM...

description: BV tree for finding triangle for a given UV. Not always initialized.


className: FMeshUVSampleInfo

description: Information about a UV sample

code: struct FMeshUVSampleInfo

BaryCoords

description: Barycentric coords in triangle

MeshVertices

description: 3D vertices

SurfacePoint

description: Surface point (lying in Triangle3D)

description: 3D triangle

TriangleIndex

description: Triangle containing the sample.

TriangleUV

description: 2D triangle

UVVertices

description: UV overlay vertices.


description: BakeProcess all bakers to generate the image result.

code: void Bake()


className: BakeFn

description: Function pointer to internal bake implementation.

code: typedef void(*)(void *Data) BakeFn


description: ParametersTemplate bake implementation.

code: template<[EBakeMode](API\Plugins\DynamicMesh\Sampling\FMeshVertexBaker\EBakeMode) ComputeMode> static void BakeImpl ( void * Data )


className: EBakeMode

code: enum EBakeMode { RGBA, PerChannel, }


description: the bake result image.

code: const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > * GetBakeResult() const


className: FMeshVertexBaker

code: class FMeshVertexBaker : public [UE::Geometry::FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker)

BakeContexts

type: TArray<FMeshMa...

description: Evaluation contexts for each mesh evaluator.

BakeDefaults

description: Internal cached default bake data.

BakeInternal

type: BakeFn

BakeMode

type: EBakeMode

BakeResult

type: TUniquePtr<TIm...

description: Bake output image.

Bakers

description: Internal list of bake evaluators.

BakeSampleBufferSize

description: The total size of the temporary float buffer for BakeSample.

bParallel

type: const bool

CancelF

type: TFunction< bool...

description: If this function returns true, we should abort calculation

ChannelEvaluators

type: TSharedPtr<FMe...

description: Evaluators to use for per channel (RGBA) bakes

ColorEvaluator

description: Evaluator to use for full color bakes

Dimensions

type: FImageDimension...

description: Internally cached image dimensions proportional to the number of unique vertex color elements.

TotalBakeDuration

description: Analytics


className: ZeroEvaluator

description: Constant evaluator for empty channels.


description: the data layout of the evaluator

code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< [EComponents](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\EComponents) > & DataLayout() const


code: static void EvaluateColor ( const int DataIdx, float *& In, FVector4f & Out, void * EvalData )


code: static void EvaluateDefault ( float *& Out, void * EvalData )


code: static void EvaluateSample ( float *& Out, const [FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample, void * EvalData )


description: Invoked at start of bake to setup this evaluator and return an evaluation context to the baker. The evaluation context indicates to the baker how the evaluator should be invoked. See FEvaluationContext for more details.

code: virtual void Setup ( const [FMeshBaseBaker](API\Plugins\DynamicMesh\Sampling\FMeshBaseBaker) & Baker, [FEvaluationContext](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FEvaluationContext) & Context )


code: virtual ~FRenderCaptureMapEvaluator()


description: the type of evaluator.

code: virtual [EMeshMapEvaluatorType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshMapEvaluatorT-) Type() const


className: FRenderCaptureMapEvaluator

code: template<typename [DataType](API\Plugins\OptimusCore\DataType)> class FRenderCaptureMapEvaluator : public [UE::Geometry::FMeshMapEvaluator](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator)

Channel

type: ERenderCaptureC...

DefaultResult

type: DataType

description: Analytics TODO Add some analytics to collect

EvaluateSampleCallback

type: TFunction<Data...


code: virtual void * ComputeCustomCorrespondence ( const [FMeshUVSampleInfo](API\Plugins\DynamicMesh\Sampling\FMeshUVSampleInfo) & SampleInfo, [FMeshMapEvaluator::FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & ValueOut ) const


className: EBakeDetailNormalSpace

code: enum EBakeDetailNormalSpace { Tangent, Object, }


className: FBakeDetailNormalTexture

description: (Image, NormalSpace, UVLayer) tuple for detail normal textures

code: typedef [TTuple](API\Runtime\Core\Misc\TTuple)< const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > *, int, [EBakeDetailNormalSpace](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\EBakeDetailNormalSpace) > FBakeDetailNormalTexture


className: FBakeDetailTexture

description: (Image, UVLayer) pair for detail textures

code: typedef [TTuple](API\Runtime\Core\Misc\TTuple)< const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > *, int > FBakeDetailTexture


description:
Find nearest triangle from the given ray
a pointer to the mesh whose triangle was intersected, nullptr otherwise.

code: virtual const void * FindNearestHitTriangle ( const FRay3d & Ray, double & NearestT, int & TriId, FVector3d & TriBaryCoords, const [IMeshSpatial::FQueryOptions](API\Runtime\GeometryCore\Spatial\IMeshSpatial\FQueryOptions) & Options ) const


description: axis aligned bounding box for the detail mesh(es).


description: TODO: Rework the curvature interface to only compute the minimal set of work.

code: void GetCurvature ( const void * Mesh, [FMeshVertexCurvatureCache](API\Plugins\DynamicMesh\FMeshVertexCurvatureCache) & CurvatureCache ) const


description: the material ID for the given triangle.

code: int32 GetMaterialID ( const void * Mesh, const int TriId ) const


code: const [FBakeDetailNormalTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailNormalTexture) * GetNormalTextureMap ( const void * Mesh ) const


description: Retrieve a normal map and UV layer index from a given mesh in the detail set

code: const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) * GetNormalMap ( const void * Mesh ) const


description: the group ID for the given triangle.

code: int32 GetPolyGroupID ( const void * Mesh, const int TriId ) const


description: Retrieve a texture map and UV layer index from a given mesh in the detail set

code: const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) * GetTextureMap ( const void * Mesh ) const


description: 3 vertex indices of the given triangle.

code: [FIndex3i](API\Runtime\GeometryCore\FIndex3i) GetTriangle ( const void * Mesh, const int TriId ) const


description: the triangle count of a given mesh.

code: int32 GetTriangleCount ( const void * Mesh ) const


description: the normal for the given triangle.

code: FVector3d GetTriNormal ( const void * Mesh, const int TriId ) const


description: a pointer to the mesh that holds the nearest triangle

code: virtual const void * FindNearestTriangle ( const FVector3d & Point, double & NearestDistSqrOut, int & TriId, FVector3d & TriBaryCoords, const [IMeshSpatial::FQueryOptions](API\Runtime\GeometryCore\Spatial\IMeshSpatial\FQueryOptions) & Options ) const


description: true if this mesh has vertex colors on the given layer

code: bool HasColors ( const void * Mesh ) const


description: true if this mesh has normals

code: bool HasNormals ( const void * Mesh ) const


description: true if this mesh has tangents

code: bool HasTangents ( const void * Mesh ) const


description: true if this mesh has UVs on the given layer

code: bool HasUVs ( const void * Mesh, int UVLayer ) const


description: true if the given triangle index is valid.

code: bool IsTriangle ( const void * Mesh, const int TriId ) const


code: virtual bool IsValidCorrespondence ( const [FMeshMapEvaluator::FCorrespondenceSample](API\Plugins\DynamicMesh\Sampling\FMeshMapEvaluator\FCorrespondenceSample) & Sample ) const


description: Iterate over each mesh in the detail set.

code: void ProcessMeshes ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const void *)> ProcessFn ) const


description: Associate a normal map and UV layer index for a given mesh in the detail set

code: void SetNormalMap ( const void * Mesh, const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) & Map )


code: void SetNormalTextureMap ( const void * Mesh, const [FBakeDetailNormalTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailNormalTexture) & Map )


description: Set the tangents for a given mesh

code: virtual void SetTangents ( const void * Mesh, [FMeshTangentsd](API\Runtime\GeometryCore\DynamicMesh\FMeshTangentsd) * Tangents )


description: Associate a texture map and UV layer index for a given mesh in the detail set

code: void SetTextureMap ( const void * Mesh, const [FBakeDetailTexture](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler\FBakeDetailTexture) & Map )


description: true if a user-defined correspondence test is supported

code: virtual bool SupportsCustomCorrespondence() const


description: true if identity correspondence is supported


description: true if nearest point to triangle distance correspondence is supported


description: true if triangle ray intersection correspondence is supported


description:
Return true if any triangles hit by the given ray
true if any triangles hit by the given ray

code: virtual bool TestAnyHitTriangle ( const FRay3d & Ray, const [IMeshSpatial::FQueryOptions](API\Runtime\GeometryCore\Spatial\IMeshSpatial\FQueryOptions) & Options ) const


description:
Compute interpolated tangent values inside triangle using barycentric coordinates
true if valid tangents were returned, false otherwise

code: bool TriBaryInterpolateTangents ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, FVector3d & TangentX, FVector3d & TangentY ) const


description:
Compute interpolated vertex color value inside triangle using barycentric coordinates
true if a valid vertex color was returned, false otherwise

code: bool TriBaryInterpolateColor ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, FVector4f & ColorOut ) const


description:
Compute interpolated Normal value inside triangle using barycentric coordinates
true if a valid normal was returned, false otherwise

code: bool TriBaryInterpolateNormal ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, FVector3f & NormalOut ) const


description:
Compute interpolated Position value inside triangle using barycentric coordinates
resulting interpolated Position parameter value

code: FVector3d TriBaryInterpolatePoint ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords ) const


description:
Compute interpolated UV value inside triangle using barycentric coordinates
true if a valid UV was returned, false otherwise

code: bool TriBaryInterpolateUV ( const void * Mesh, const int32 TriId, const FVector3d & BaryCoords, const int UVLayer, FVector2f & UVOut ) const


code: virtual ~IMeshBakerDetailSampler()


className: IMeshBakerDetailSampler

description: This class defines the interface for all sample queries thatFMeshBaseBakersupports including the spatial queries for base to detail correspondence sampling.

code: class IMeshBakerDetailSampler


description: Compute a sample at the given UV/3D location specified by CachedSampleInfo, which presumably was produced by previous calls toSampleUV()true if valid sample was computed

code: virtual bool CachedSampleUV ( const [FMeshUVSampleInfo](API\Plugins\DynamicMesh\Sampling\FMeshUVSampleInfo) & CachedSampleInfo, SampleType & ResultOut )


description: Configure the sampler.

code: virtual void Initialize ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn, const [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshUVOverlay) * UVOverlayIn, [EMeshSurfaceSamplerQueryType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshSurfaceSample-) QueryTypeIn, SampleType ZeroValueIn, [TUniqueFunction](API\Runtime\Core\Templates\TUniqueFunction)< void(const [FMeshUVSampleInfo](API\Plugins\DynamicMesh\Sampling\FMeshUVSampleInfo) &SampleInfo, SampleType &SampleValueOut)> SampleValueFunctionIn )


description:
Compute a sample at the given UV location in the given Triangle
true if valid sample was computed

code: virtual bool SampleUV ( int32 UVTriangleID, const FVector2d & UV, SampleType & ResultOut )


description:
Compute a sample at the given UV location
true if valid sample was computed

code: virtual bool SampleUV ( const FVector2d & UV, SampleType & ResultOut )


code: virtual ~TMeshSurfaceUVSampler()


className: TMeshSurfaceUVSampler

description: Note that if you need to sample multiple things, rather than building up an uber-SampleType, you can first compute a sample with SampleType=FMeshUVSampleInfoto find the correspondence information, and then construction additional samplers of typeEMeshSurfaceSamplerQueryType::TriangleAndUV, and callCachedSampleUV(), to avoid expensive BVTree constructions and UV-to-3D recalculation.

code: template<typename SampleType> class TMeshSurfaceUVSampler

bUVSpatialValid

type: bool

UVMeshAdapter

description: BV tree for finding triangle for a given UV. Not always initialized.

ValueFunction

type: TUniqueFunction...

ZeroValue

type: SampleType


description: Forward declarations

code: namespace UE { namespace Geometry { enum EMeshMapEvaluatorType { Constant, Normal, Occlusion, Curvature, Property, ResampleImage, MultiResampleImage, RenderCapture, } } }


description: Forward declarations

code: namespace UE { namespace Geometry { enum EMeshOcclusionMapType { None = 0, AmbientOcclusion = 1, BentNormal = 2, All = 3, } } }


description: Forward declarations

code: namespace UE { namespace Geometry { enum EMeshPropertyBakeType { Position = 1, Normal = 2, FacetNormal = 3, UVPosition = 4, MaterialID = 5, } } }


description: Forward declarations

code: namespace UE { namespace Geometry { enum EMeshPropertyMapType { Position = 1, Normal = 2, FacetNormal = 3, UVPosition = 4, MaterialID = 5, VertexColor = 6, PolyGroupID = 7, } } }


description: Types of query that FMeshSurfaceUVSampler/TMeshSurfaceUVSampler supports

code: namespace UE { namespace Geometry { enum EMeshSurfaceSamplerQueryType { UVOnly, TriangleAndUV, } } }


description: Forward declarations

code: namespace UE { namespace Geometry { enum EOcclusionMapType { None = 0, AmbientOcclusion = 1, BentNormal = 2, All = 3, } } }


description: TODO Consolidate this with ERenderCaptureType.

code: namespace UE { namespace Geometry { enum ERenderCaptureChannel { BaseColor = 1, Roughness = 2, Metallic = 4, Specular = 8, Emissive = 16, WorldNormal = 32, DeviceDepth = 64, CombinedMRS = 128, Opacity = 256, SubsurfaceColor = 512, } } }


description:
If all the above fail, return nullptr
a pointer to the hit mesh, otherwise nullptr.

code: namespace UE { namespace Geometry { const void * UE::Geometry::GetDetailMeshTrianglePoint_Raycast ( const [IMeshBakerDetailSampler](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler) * DetailSpatial, const FVector3d & BasePoint, const FVector3d & BaseNormal, int32 & DetailTriangleOut, FVector3d & DetailTriBaryCoords, double Thickness, bool bFailToNearestPoint ) } }


description:
Compute base/detail mesh correspondence by nearest distance
Find point on Detail mesh that corresponds to point on Base mesh using minimum distance
a pointer to the nearest mesh, otherwise nullptr.

code: namespace UE { namespace Geometry { const void * UE::Geometry::GetDetailMeshTrianglePoint_Nearest ( const [IMeshBakerDetailSampler](API\Plugins\DynamicMesh\Sampling\IMeshBakerDetailSampler) * DetailSpatial, const FVector3d & BasePoint, int32 & DetailTriangleOut, FVector3d & DetailTriBaryCoords ) } }


code: namespace UE { namespace Geometry { [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) & UE::Geometry::operator&= ( [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) & Lhs, [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) Rhs ) } }


code: namespace UE { namespace Geometry { [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) & UE::Geometry::operator&= ( [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) & Lhs, [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) Rhs ) } }


code: namespace UE { namespace Geometry { [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) & UE::Geometry::operator^= ( [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) & Lhs, [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) Rhs ) } }


code: namespace UE { namespace Geometry { constexpr [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) UE::Geometry::operator& ( [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) Lhs, [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) Rhs ) } }


code: namespace UE { namespace Geometry { constexpr [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) UE::Geometry::operator& ( [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) Lhs, [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) Rhs ) } }


code: namespace UE { namespace Geometry { constexpr [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) UE::Geometry::operator^ ( [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) Lhs, [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) Rhs ) } }


code: namespace UE { namespace Geometry { constexpr [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) UE::Geometry::operator^ ( [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) Lhs, [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) Rhs ) } }


code: namespace UE { namespace Geometry { constexpr bool UE::Geometry::operator! ( [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) E ) } }


code: namespace UE { namespace Geometry { [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) & UE::Geometry::operator^= ( [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) & Lhs, [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) Rhs ) } }


code: namespace UE { namespace Geometry { constexpr bool UE::Geometry::operator! ( [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) E ) } }


code: namespace UE { namespace Geometry { constexpr [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) UE::Geometry::operator~ ( [EOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EOcclusionMapType) E ) } }


code: namespace UE { namespace Geometry { constexpr [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) UE::Geometry::operator~ ( [EMeshOcclusionMapType](API\Plugins\DynamicMesh\Sampling\UE__Geometry__EMeshOcclusionMapT-) E ) } }


description: Initialize the Element and Topology types for this Selection based on another Selection

code: void InitializeTypes ( const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & FromSelection )


description: Initialize the Element and Topology types for this Selection

code: void InitializeTypes ( [EGeometryElementType](API\Plugins\DynamicMesh\Selections\UE__Geometry__EGeometryElementTy-) ElementTypeIn, [EGeometryTopologyType](API\Plugins\DynamicMesh\Selections\UE__Geometry__EGeometryTopologyT-) TopologyTypeIn )


description: true if Selection is empty

code: bool IsEmpty() const


description: number of elements in Selection

code: int32 Num() const


description: true if the two selections have the same type

code: bool IsSameType ( const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & OtherSelection ) const


description: Clear the Selection (may not release memory)

code: void Reset()


className: FGeometrySelectionBounds

description: 3D Bounding information for aFGeometrySelection

code: struct FGeometrySelectionBounds


className: FGeometrySelection

description: FGeometrySelectionrepresents a subset of geometric elements of a larger object, for example a Mesh (currently the only use case). The main selection is represented via 64-bit unsigned integers. The integers are stored in aTSetfor efficient unique adds and removals. No assumptions are made about the values, they could be (eg) mesh indices, IDs of some type, or even pointer values.

code: struct FGeometrySelection

ElementType

type: EGeometryElemen...

description: Type of geometric element represented by this selection, if applicable

Selection

type: TSet< uint64 >

description: Set of selected items/elements

TopologyType

type: EGeometryTopolo...

description: Type of geometric topology this selection is defined relative to, if applicable


description: true if the Delta is empty (nothing Removed or Added)


className: FGeometrySelectionDelta

description: (Currently there is no way to swap the order)

code: struct FGeometrySelectionDelta

Added

type: TArray< uint64 ...

description: Elements added to aFGeometrySelectionduring some selection edit

Removed

description: Elements removed from aFGeometrySelectionduring some selection edit


description: Clear the Target Selection and return change information in DeltaOut

code: void ClearSelection ( [FGeometrySelectionDelta](API\Plugins\DynamicMesh\Selections\FGeometrySelectionDelta) & DeltaOut )


description: the Element Type of the Target Selection


description: Remove the items in the List from the Target Selection and return change information in DeltaOut

code: template<typename ListType> bool Deselect ( const ListType & List, [FGeometrySelectionDelta](API\Plugins\DynamicMesh\Selections\FGeometrySelectionDelta) & DeltaOut )


description: the active configuration for this Selection Editor, eg what type of element/topology is being selected. This is redundant w/ the above fields.

code: const [FGeometrySelectionHitQueryConfig](API\Plugins\DynamicMesh\Selections\FGeometrySelectionHitQueryConfig) & GetQueryConfig() const


description: Access the Selection object this Editor is modifying

code: const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & GetSelection() const


description: the Topology Type of the Target Selection


description: Initialize the Editor with the given Selection. The TargetSelectionIn must live longer than theFGeometrySelectionEditor

code: void Initialize ( [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) * TargetSelectionIn, bool bEnableTopologyIDFiltering )


code: void Initialize ( [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) * TargetSelectionIn, const [FGeometrySelectionHitQueryConfig](API\Plugins\DynamicMesh\Selections\FGeometrySelectionHitQueryConfig) & QueryConfigIn, bool bEnableTopologyIDFiltering )


description: true if the given ID is currently selected in the Target Selection

code: bool IsSelected ( uint64 ID ) const


code: uint64 RemapToExistingTopologyID ( uint64 ID, bool & bFoundOut ) const


description: Remove ID from Selection

code: bool RemoveFromSelection ( uint64 ID )


description: Replace the current set of selected items with those in the NewSelection, and return change information in DeltaOut

code: bool Replace ( const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & NewSelection, [FGeometrySelectionDelta](API\Plugins\DynamicMesh\Selections\FGeometrySelectionDelta) & DeltaOut )


description: Add the items to the Target Selection

code: bool Select ( uint64 ID )


description: Add the items in the List to the Target Selection and return change information in DeltaOut

code: template<typename ListType> bool Select ( const ListType & List, [FGeometrySelectionDelta](API\Plugins\DynamicMesh\Selections\FGeometrySelectionDelta) & DeltaOut )


description: Update the active QueryConfig for this SelectionEditor. This is necessary to keep it in sync w/ the TargetSelection, if the ElementType or TopologyType are modified. This perhaps should be revisited as they basically always need to be the same...

code: void UpdateQueryConfig ( const [FGeometrySelectionHitQueryConfig](API\Plugins\DynamicMesh\Selections\FGeometrySelectionHitQueryConfig) & NewConfig, bool bEnableTopologyIDFilteringIn )