code: virtual void OnSplitVertex ( const [DynamicMeshInfo::FVertexSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FVertexSplitInfo) & SplitInfo, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


description: the primary biTangent layer ( normal layer 2) if exists, else nullptr

module: GeometryCore


code: const [FDynamicMeshColorOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshColorOverlay) * PrimaryColors() const


description: the primary Normal layer (normal layer 0) if exists, else nullptr


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


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


description: the primary tangent layer ( normal layer 1) if exists, else nullptr


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


description: the primary UV layer (layer 0)


description: the primary UV layer (layer 0)

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


code: void RemoveAttribute ( [FName](API\Runtime\Core\UObject\FName) AttribName )


description: Remove a weight layer at the specified index

code: virtual void RemoveWeightLayer ( int32 Index )


description: Remove a skin weights attribute matching the given profile name.

code: void RemoveSkinWeightsAttribute ( [FName](API\Runtime\Core\UObject\FName) InProfileName )


description: Serialize to and from an archive.

code: void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar, const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) * CompactMaps, bool bUseCompression )


description: Set number of Normals (3-vector float overlay) layers

code: virtual void SetNumNormalLayers ( int Num )


description: Set the number of Polygroup layers

code: virtual void SetNumPolygroupLayers ( int32 Num )


description: Set number of UV (2-vector float overlay) layers

code: virtual void SetNumUVLayers ( int Num )


description: Set the number of weight layers

code: virtual void SetNumWeightLayers ( int32 Num )


description: Split all bowtie vertices in all layers

code: void SplitAllBowties ( bool bParallel )


code: FDynamicMeshAttributeSet ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh )


code: FDynamicMeshAttributeSet ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int32 NumUVLayers, int32 NumNormalLayers )


code: virtual ~FDynamicMeshAttributeSet()


className: FDynamicMeshAttributeSet

description: Currently the default is to always have one UV layer and one Normal layer, but the number of layers can be requested on construction.

code: class FDynamicMeshAttributeSet : public [UE::Geometry::TDynamicAttributeSetBase< FDynamicMesh3 >](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeSetBase)

BoneColorAttrib

type: TUniquePtr<FDy...

BoneNameAttrib

description: Bone attributes.

GenericAttributes

type: GenericAttribut...

NormalLayers

type: TIndirectArray<...

ParentMesh

description: Parent mesh of this attribute set

SkinWeightAttributes

type: SkinWeightAttri...


className: FDynamicMeshAttributeSetBase


description: Start tracking a change

code: void BeginChange()


description: End the change transaction and get the resulting change object


className: FElementState

code: struct FElementState

ChangedElements

type: TBitArray

MaxElementID

type: int


code: template<typename AttribOverlayType, typename AttribChangeType> void SaveElement ( int ElementID, [FElementState](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeSetChangeTr-\FElementState) & State, const AttribOverlayType * Overlay, AttribChangeType & ChangeIn )


description: Store the initial state of a triangle

code: void SaveInitialTriangle ( int TriangleID )


description: Store the initial state of a vertex

code: void SaveInitialVertex ( int VertexID )


description: Store the final state of a set of triangles

code: void StoreAllFinalTriangles ( const [TArray](API\Runtime\Core\Containers\TArray)< int > & TriangleIDs )


code: FDynamicMeshAttributeSetChangeTracker ( const [FDynamicMeshAttributeSet](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeSet) * Attribs )


description: Store the final state of a set of vertices

code: void StoreAllFinalVertices ( const [TArray](API\Runtime\Core\Containers\TArray)< int > & VertexIDs )


className: FDynamicMeshBoneColorAttribute


className: FDynamicMeshAttributeSetChangeTracker

description: FDynamicMeshAttributeSetChangeTrackerconstructs a well-formed set ofTDynamicMeshAttributeChangeobjects (stored in aFDynamicMeshAttributeChangeSet). You should not use this class directly, it is intended to be used viaFDynamicMeshChangeTracker

Attribs

type: constFDynamicM...

Change

type: FDynamicMeshAtt...

ColorState

type: FElementState

NormalStates

type: TArray<FElemen...


className: FDynamicMeshBoneParentIndexAttribute


className: FDynamicMeshBoneNameAttribute


code: void ApplyReplaceChange ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< [FChangeTriangle](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshChange\FChangeTriangle) > & RemoveTris, const [TArray](API\Runtime\Core\Containers\TArray)< [FChangeVertex](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshChange\FChangeVertex) > & InsertVerts, const [TArray](API\Runtime\Core\Containers\TArray)< [FChangeTriangle](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshChange\FChangeTriangle) > & InsertTris ) const


className: FDynamicMeshBonePoseAttribute


description: Attach an attribute change set to this mesh change, which will the be applied/reverted automatically

code: void AttachAttributeChanges ( [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FDynamicMeshAttributeChangeSet](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeChangeSet) > AttribChanges )


description: Apply or Revert this change using the given Mesh

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


description: Run self-validity checks on internal data structures to test if change is well-formed

code: void CheckValidity ( [EValidityCheckFailMode](API\Runtime\GeometryCore\UE__Geometry__EValidityCheckFail-) FailMode ) const


className: FChangeTriangle

code: struct FChangeTriangle


className: FChangeVertex

code: struct FChangeVertex

Info

type: FVertexInfo


description: Store IDs of saved triangles in TrianglesOut. if bInitial=true, old triangles are stored, otherwise new triangles

code: void GetSavedTriangleList ( [TArray](API\Runtime\Core\Containers\TArray)< int > & TrianglesOut, bool bInitial ) const


description: true if this vertex was saved. Uses linear search.

code: bool HasSavedVertex ( int VertexID )


description: Store the initial state of a triangle

code: void SaveInitialTriangle ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int TriangleID )


description: Store the initial state of a vertex

code: void SaveInitialVertex ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int VertexID )


description: Store the final state of a triangle

code: void StoreFinalTriangle ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int TriangleID )


description: Store the final state of a vertex

code: void StoreFinalVertex ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int VertexID )


description: Do (limited) sanity checks on this MeshChange to ensure it is well-formed

code: void VerifySaveState() const


className: FDynamicMeshChange

description: Construction of a well-formedFDynamicMeshChangeis quite complex and it is strongly suggested that you do so viaFDynamicMeshChangeTracker

code: class FDynamicMeshChange

NewTriangles

type: TArray<FChange...


description: Construct a change object that represents the delta between the Begin and End states


description: Initialize the change-tracking process

code: void BeginChange()


description: Save necessary information about an edge before it is modified

code: void SaveEdge ( int32 EdgeID, bool bVertices )


description: Save necessary information about a triangle before it is modified

code: void SaveTriangle ( int32 TriangleID, bool bSaveVertices )


description: Save necessary information about a set of triangles before they are modified

code: template<typename EnumerableType> void SaveTriangles ( EnumerableType TriangleIDs, bool bSaveVertices )


description: Save necessary information about a set of triangles before they are modified, and also include any direct triangle neighbours

code: template<typename EnumerableType> void SaveTrianglesAndNeighbourTris ( EnumerableType TriangleIDs, bool bSaveVertices )


description: CurrentlyEndChange()only stores vertices that are part of modified triangles. So callingSaveVertex()independently, on triangles that are not saved, will be lost. (This needs to be fixed)Save necessary information about a vertex before it is modified

code: void SaveVertex ( int32 VertexID )


description: Save necessary information about a set of triangles in one-ring of a vertex

code: void SaveVertexOneRingTriangles ( int32 VertexID, bool bSaveVertices )


description: Save necessary information about a set of triangles in one-rings of a set of vertices

code: template<typename EnumerableType> void SaveVertexOneRingTriangles ( EnumerableType VertexIDs, bool bSaveVertices )


description: Save necessary information about a set of vertices before they are modified

code: template<typename EnumerableType> void SaveVertices ( EnumerableType VertexIDs )


description: Do (limited) sanity checking to make sure that the change is well-formed

code: void VerifySaveState()


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


code: ~FDynamicMeshChangeTracker()


className: FDynamicMeshChangeTracker

description: Currently only vertices that are part of saved triangles will be stored in the emitted FMeshChange!

code: class FDynamicMeshChangeTracker

AttribChangeTracker

description: Active attribute tracker, if Mesh has attribute overlays

Change

type: FDynamicMeshCha...

description: Active change that is being constructed


className: FDynamicMeshColorChange

description: Standard Color overlay change type - 4-element float

code: typedef [TDynamicMeshAttributeChange](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange)< float, 4 > FDynamicMeshColorChange


className: FDynamicMeshColorOverlay

description: Standard Color overlay type - 4-element float (rbga)

code: typedef [TDynamicMeshVectorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay)< float, 4, FVector4f > FDynamicMeshColorOverlay


className: FDynamicMeshMaterialAttribute

description: Standard per-triangle integer material ID

code: typedef [TDynamicMeshScalarTriangleAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshScalarTriangleAttrib-)< int32 > FDynamicMeshMaterialAttribute


className: FDynamicMeshNormalChange

description: Standard Normal overlay change type - 3-element float

code: typedef [TDynamicMeshAttributeChange](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange)< float, 3 > FDynamicMeshNormalChange


className: FDynamicMeshNormalOverlay

description: Standard Normal overlay type - 3-element float

code: typedef [TDynamicMeshVectorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay)< float, 3, FVector3f > FDynamicMeshNormalOverlay


description: a cut of the tree at a fixed level

code: [FTreeCutSet](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshOctree3\FTreeCutSet) BuildLevelCutSet ( uint32 CutLevel ) const


description: Check that the Octree is internally valid

code: void CheckValidity ( [EValidityCheckFailMode](API\Runtime\GeometryCore\UE__Geometry__EValidityCheckFail-) FailMode, bool bVerbose, bool bFailOnMissingObjects ) const


description: Call TriangleFunc for all triangles in the octree "above" the CutSet (ie at tree cells that are not children of any cut cells)

code: void CollectRootTriangles ( const [FTreeCutSet](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshOctree3\FTreeCutSet) & CutSet, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(int)> TriangleFunc ) const


description: Call TriangleFunc for any triangles in the spill set (ie not contained in any Root cell)

code: void CollectSpillTriangles ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(int)> TriangleFunc ) const


description: Call TriangleFunc on any triangles in the branch of the tree starting at CellRef

code: void CollectTriangles ( const [FCellReference](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshOctree3\FCellReference) & CellRef, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(int)> TriangleFunc ) const


description: Find the nearest triangle of the mesh that is hit by the ray

code: int32 FindNearestHitObject ( const FRay3d & Ray, double MaxDistance ) const


className: FCellReference

description: Support for building "cuts" of the octree, which are sets of internal nodes which can be used to decompose the tree (eg into spatially-coherent chunks of triangles, for example)FCellReferenceis a handle to an internal cell of the octree

code: struct FCellReference


code: int32 FindNearestHitObject ( const FRay3d & Ray, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int)> IncludeTriangleIDFunc, double MaxDistance ) const


className: FTreeCutSet

description: FTreeCutSetis a cut of the tree, ie a set of internal cells which are "parents" of separate branches

code: class FTreeCutSet

CutCellIDs

type: TSet< uint32 >

CutCells

type: TArray<FCellRe...


description: Add all triangles of MeshIn to the octree

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


description: Insert a triangle into the tree

code: void InsertTriangle ( int32 TriangleID )


description: Insert a list of triangles into the tree

code: void InsertTriangles ( const [TArray](API\Runtime\Core\Containers\TArray)< int > & Triangles )


description: Insert a set of triangles into the tree

code: void InsertTriangles ( const [TSet](API\Runtime\Core\Containers\TSet)< int > & Triangles )


description: Include the current bounds of a triangle in the ModifiedBounds box

code: void NotifyPendingModification ( int TriangleID )


description: Include the current bounds of a set of triangles in the ModifiedBounds box

code: template<typename EnumerableType> void NotifyPendingModification ( const EnumerableType & Triangles )


description: Reinsert a set of triangles into the tree. Internally precomputes which triangles need re-inserting, which can be done in parallel and generally saves time as some triangles can be skipped.

code: void ReinsertTrianglesParallel ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles, [TArray](API\Runtime\Core\Containers\TArray)< uint32 > & TempBuffer, [TArray](API\Runtime\Core\Containers\TArray)< bool > & TempFlagBuffer )


description: Reinsert a set of triangles into the tree

code: template<typename EnumerableType> void ReinsertTriangles ( const EnumerableType & Triangles )


description: Remove a triangle from the tree

code: bool RemoveTriangle ( int32 TriangleID )


description: Remove a set of triangles into the tree

code: template<typename EnumerableType> void RemoveTriangles ( const EnumerableType & Triangles, bool bMarkModifiedBounds )


description: Reset the internal ModifiedBounds box that tracks modified triangle bounds

code: void ResetModifiedBounds()


description: true if the cell identified by CellRef intersects the Bounds box

code: bool TestCellIntersection ( const [FCellReference](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshOctree3\FCellReference) & CellRef, const [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) & Bounds ) const


description: For a fixed-level cut set created by BuildLevelCutSet, check that all current cells at that level are in the cut set (call this after adding/removing to the tree to make sure the CutSet is up to date)

code: void UpdateLevelCutSet ( [FTreeCutSet](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshOctree3\FTreeCutSet) & CutSet, [TArray](API\Runtime\Core\Containers\TArray)< [FCellReference](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshOctree3\FCellReference) > & NewCutCellsOut ) const


description: FDynamicMeshOctree3is an extension ofFSparseDynamicOctree3for the triangles of aFDynamicMesh3instance. This extension does several things: 1) provides a simplified API based on triangle IDs to various Octree functions 2) tracks ModifiedBounds box of modified areas 3) support for computing/updating/querying a "Cut" of the octree, ie a set of cells which are roots of sub-branches that partition the tree. This is useful for splitting up mesh processing/rendering into spatially-coherent chunks. (This functionality should probably be extracted into a separate class...)

code: class FDynamicMeshOctree3 : public [UE::Geometry::FSparseDynamicOctree3](API\Runtime\GeometryCore\Spatial\FSparseDynamicOctree3)

Mesh

description: Potential optimizations:

ModifiedBounds

type: FAxisAlignedBox...

description: Bounding box of triangles that have been inserted/removed since last clear


className: FDynamicMeshPolygroupAttribute

description: Per-triangle integer polygroup ID

code: typedef [TDynamicMeshScalarTriangleAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshScalarTriangleAttrib-)< int32 > FDynamicMeshPolygroupAttribute


description: If tangents are available in the overlays, returns them. If only Normal is available, computes orthogonal basis. Falls back to unit axes if no overlays are available.

code: void GetTangentFrame ( int32 TriangleID, int32 TriVertexIndex, FVector3f & NormalOut, FVector3f & TangentOut, FVector3f & BitangentOut ) const


description: If tangents are available in the overlays, returns them, otherwise falls back to unit X/Y axes.

code: void GetTangentVectors ( int32 TriangleID, int32 TriVertexIndex, FVector3f & TangentOut, FVector3f & BitangentOut ) const


description: If tangents are available in the overlays, returns them. Otherwise computes orthogonal basis to Normal argument.

code: void GetTangentVectors ( int32 TriangleID, int32 TriVertexIndex, const FVector3f & Normal, FVector3f & TangentOut, FVector3f & BitangentOut ) const


description:
Checks the mesh for valid tangents. When bCheckValues == true, inspects the tangents for invalid values (ex. zero, NaN).
true if the mesh has valid tangents

code: bool HasValidTangents ( bool bCheckValues ) const


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


className: FDynamicMeshTangents

description: FDynamicMeshTangentsis a helper object for accessing tangents stored in the AttributeSet of aFDynamicMesh3.

code: class FDynamicMeshTangents


code: virtual bool Apply ( [FDynamicMeshAttributeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeBase) * Attribute, bool bRevert ) const


code: virtual void SaveInitialTriangle ( const [FDynamicMeshAttributeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeBase) * Attribute, int TriangleID )


code: virtual void StoreAllFinalTriangles ( const [FDynamicMeshAttributeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeBase) * Attribute, const [TArray](API\Runtime\Core\Containers\TArray)< int > & TriangleIDs )


code: FDynamicMeshTriangleAttributeChange()


className: FDynamicMeshTriangleAttributeChange

code: template<typename AttribValueType, int AttribDimension> class FDynamicMeshTriangleAttributeChange : public [UE::Geometry::TDynamicAttributeChangeBase< FDynamicMesh3 >](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeChangeBase)


className: FDynamicMeshTriGroupChange

description: Standard per-triangle integer attribute change type

code: typedef [FDynamicMeshTriangleAttributeChange](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshTriangleAttributeCha-)< int32, 1 > FDynamicMeshTriGroupChange


className: FDynamicMeshUVChange

description: Standard UV overlay change type - 2-element float

code: typedef [TDynamicMeshAttributeChange](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange)< float, 2 > FDynamicMeshUVChange


className: FDynamicMeshUVOverlay

description: Standard UV overlay type - 2-element float

code: typedef [TDynamicMeshVectorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay)< float, 2, FVector2f > FDynamicMeshUVOverlay


code: typedef [TDynamicVertexAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicVertexAttribute)< int32, 1, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) > FDynamicMeshVertexInt32Attribute


className: FDynamicMeshWeightAttribute

description: Per-vertex scalar float weight

code: typedef [TDynamicMeshVertexAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVertexAttribute)< float, 1 > FDynamicMeshWeightAttribute


className: FDynamicMeshWeightChange

description: Standard weight map change type - 1-element float

code: typedef [TDynamicMeshAttributeChange](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange)< float, 1 > FDynamicMeshWeightChange


className: FDynamicMeshVertexSkinWeightsAttribute


code: typedef [TDynamicPointSet3](API\Runtime\GeometryCore\DynamicMesh\TDynamicPointSet3)< double > FDynamicPointSet3d


className: FEdgeCollapseInfo

description: Information about mesh elements modified/removed by CollapseEdge()

code: struct FEdgeCollapseInfo

bIsBoundary

type: bool

CollapseT

type: double


className: FEdgeSplitInfo

description: Information about the mesh elements created by a call to SplitEdge()

code: struct FEdgeSplitInfo


className: FEdgeFlipInfo

description: Information about the mesh elements modified by a call to FlipEdge()

code: struct FEdgeFlipInfo


className: FMergeEdgesInfo

description: Information about mesh elements modified by MergeEdges()

code: struct FMergeEdgesInfo

BowtiesKeptEdges

type: TArray< int, TI...

BowtiesRemovedEdges

description: Even more Removed and Kept edges, in cases where there were multiple such edges on one or both sides of the merged edge Only possible if the pre-merge mesh had non-manifold vertices (aka bowties), in almost all meshes these arrays will be empty


description:
Create a superset reference skeleton out of all the bones in the mesh Lods.
false if one of the Lods has no bone attributes or Lods have incompatible skeletons

code: static bool CombineLodBonesToReferenceSkeleton ( const [TArray](API\Runtime\Core\Containers\TArray)< [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) > & Meshes, [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & BoneNames, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & BoneParentIdx, [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & BonePose, bool & bOrderChanged )


code: typedef [TDynamicPointSet3](API\Runtime\GeometryCore\DynamicMesh\TDynamicPointSet3)< float > FDynamicPointSet3f


description:
the order of the bones in the output arrays might be different than the order of the bones in the mesh bone attribute. The reference skeleton expects the parent bone to always have a lower index than the children. This doesn't have to be true for dynamic mesh bone attributes. You can useTDynamicVertexSkinWeightsAttribute::ReindexBoneIndicesToSkeletonmethod to reindex the skinning weights if the order changed (bOutOrderChanged == true).
false if the dynamic mesh has no bone attributes

code: static bool GetBonesInIncreasingOrder ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & BoneNames, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & BoneParentIdx, [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & BonePose, bool & bOrderChanged )


description: Return an array of indices into the bone attribute arrays of all the children of the bone. Optionally, recursively add all grandchildren via a breadth-first search.

code: static bool GetBoneChildren ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, int32 BoneIndex, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & ChildrenIndices, bool bRecursive )


className: FMeshBones

description: FMeshBonesis a utility class for manipulating mesh bone attributes

code: class FMeshBones


code: bool ContainsColor ( int FromID ) const


code: bool ContainsGroup ( int FromID ) const


code: bool ContainsNormal ( int NormalLayer, int FromID ) const


code: bool ContainsTriangle ( int FromID ) const


code: bool ContainsUV ( int UVLayer, int FromID ) const


code: bool ContainsVertex ( int FromID ) const


code: const [FIndexMapi](API\Runtime\GeometryCore\FIndexMapi) & GetGroupMap() const


code: int GetNewColor ( int FromID ) const


code: int GetNewGroup ( int FromID ) const


code: int GetNewNormal ( int NormalLayer, int FromID ) const


code: int GetNewTriangle ( int FromID ) const


code: int GetNewUV ( int UVLayer, int FromID ) const


code: [FIndexMapi](API\Runtime\GeometryCore\FIndexMapi) & GetNormalMap ( int NormalLayer )


code: int GetNewVertex ( int FromID ) const


code: const [FIndexMapi](API\Runtime\GeometryCore\FIndexMapi) & GetTriangleMap() const


code: [FIndexMapi](API\Runtime\GeometryCore\FIndexMapi) & GetUVMap ( int UVLayer )


code: const [FIndexMapi](API\Runtime\GeometryCore\FIndexMapi) & GetVertexMap() const


description: Size internal arrays-of-maps to be suitable for this Mesh

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


description: the value used to indicate "invalid" in the mapping

code: constexpr int InvalidID() const


code: void SetGroup ( int FromID, int ToID )


code: void SetNormal ( int NormalLayer, int FromID, int ToID )


code: void SetTriangle ( int FromID, int ToID )


code: void SetUV ( int UVLayer, int FromID, int ToID )


code: void SetVertex ( int FromID, int ToID )


className: FMeshIndexMappings

description: FMeshIndexMappingsstores a set of integer IndexMaps for a mesh This is a convenient object to have, to avoid passing around large numbers of separate maps. The individual maps are not necessarily all filled by every operation.

code: struct FMeshIndexMappings

ColorMap

type: FIndexMapi

NormalMaps

type: TArray<FIndexM...


description: the computed overlay normal at an element of the overlay (ie based on normals of triangles connected to this element)

code: static FVector3d ComputeOverlayNormal ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, int ElemIdx, bool bWeightByArea, bool bWeightByAngle )


code: void SetColor ( int FromID, int ToID )


description: Compute per-triangle normals

code: void ComputeTriangleNormals()


description:
Compute normal at mesh vertex by weighted sum of one-ring triangle normals. Can optionally weight by area, angle, or both (averaged)
the vertex normal at vertex VertIdx of Mesh.

code: static FVector3d ComputeVertexNormal ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, int VertIdx, bool bWeightByArea, bool bWeightByAngle )


description:
Compute normal at mesh vertex by weighted sum of subset of one-ring triangle normals. Can optionally weight by area, angle, or both (averaged)
the vertex normal at vertex VertIdx of Mesh.

code: static FVector3d ComputeVertexNormal ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, int32 VertIdx, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int32)> TriangleFilterFunc, bool bWeightByArea, bool bWeightByAngle )


description: Compute standard per-vertex normals by averaging one-ring face normals

code: void ComputeVertexNormals ( bool bWeightByArea, bool bWeightByAngle )


description: Compute per-vertex normals using a custom combination of area-weighted and angle-weighted averaging of one-ring triangle normals

code: void Compute_FaceAvg ( bool bWeightByArea, bool bWeightByAngle )


description: Compute per-vertex normals using area-weighted averaging of one-ring triangle normals

code: void Compute_FaceAvg_AreaWeighted()


description: Recompute the element Normals of the given attribute overlay using area-weighted averaging of one-ring triangle normals

code: void Compute_Overlay_FaceAvg_AreaWeighted ( const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay )


description: Recompute the element Normals of the given attribute overlay using a custom combination of area-weighted and angle-weighted averaging of one-ring triangle normals

code: void Compute_Overlay_FaceAvg ( const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, bool bWeightByArea, bool bWeightByAngle )


description: Compute per-triangle normals

code: void Compute_Triangle()


description: assumes that the computed normals are vertex normals

code: void CopyToVertexNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * SetMesh, bool bInvert ) const


code: const [TArray](API\Runtime\Core\Containers\TArray)< FVector3d > & GetNormals() const


description: Retrieve the area and/or angle weights for each vertex of a triangle

code: static FVector3d GetVertexWeightsOnTriangle ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int TriID, double TriArea, bool bWeightByArea, bool bWeightByAngle )


description: Initialize the given Mesh with per-face normals, ie separate overlay element for each vertex of each triangle.

code: static void InitializeMeshToPerTriangleNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh )


description: Initialize the given NormalOverlay with per-vertex normals, ie single overlay element for each mesh vertex.

code: static void InitializeOverlayToPerVertexNormals ( [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, bool bUseMeshVertexNormalsIfAvailable )


description: Initialize the given NormalOverlay with per-face normals, ie separate overlay element for each vertex of each triangle.

code: static void InitializeOverlayToPerTriangleNormals ( [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay )


code: static void InitializeOverlayTopologyFromOpeningAngle ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, double AngleThresholdDeg )


code: static void InitializeOverlayTopologyFromFaceGroups ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay )


description: Initialize the given triangles of NormalOverlay with per-vertex normals, ie single overlay element for each mesh vertex. Only the triangles included in the region are considered when calculating per-vertex normals.

code: static void InitializeOverlayRegionToPerVertexNormals ( [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles )


code: FVector3d & operator[] ( int i )


code: const FVector3d & operator[] ( int i ) const


description: assumes that the computed normals are attribute normals

code: void CopyToOverlay ( [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, bool bInvert ) const


description: Compute per-vertex normals for the vertices of a set of triangles of a Mesh

code: static void QuickComputeVertexNormalsForTriangles ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles, bool bWeightByArea, bool bWeightByAngle, bool bInvert )


description: Compute per-vertex normals for the given Mesh

code: static void QuickComputeVertexNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, bool bInvert )


description: Compute overlay normals for the given mesh

code: static bool QuickRecomputeOverlayNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, bool bInvert, bool bWeightByArea, bool bWeightByAngle )


description: Compute overlay normals for the given mesh, for the given set of element IDs

code: static bool RecomputeOverlayElementNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & ElementIDs, bool bWeightByArea, bool bWeightByAngle )


description: NormalOverlay must be attached to ParentMesh or an exact copy

code: void RecomputeOverlayNormals ( const [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshNormalOverlay) * NormalOverlay, bool bWeightByArea, bool bWeightByAngle )


description: Compute overlay normals for the given mesh, for the given set of triangles

code: static bool RecomputeOverlayTriNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles, bool bWeightByArea, bool bWeightByAngle )


description: Set the size of the Normals array to Count, and optionally clear all values to (0,0,0)

code: void SetCount ( int Count, bool bClearToZero )


description: Looks through the normals for any that are zero, and tries to set them to the normal of some neighboring triangle, preferring the triangle on its longer side if possible. This is useful for finding connected components based on normals, as it prevents degenerate triangles with 0 normals from connecting otherwise disconnected components. This won't help if a whole mesh componenent is entirely made of such degenerate triangles (which is usually ok).


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


description: Apply rounds of explicit uniform-weighted normal smoothing to the VertexNormals attribute of the given Mesh.

code: static void SmoothVertexNormals ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, int32 SmoothingRounds, double SmoothingAlpha )


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


className: FMeshNormals

description: FMeshNormalsis a utility class that can calculate and store various types of normal vectors for a FDynamicMesh.

code: class FMeshNormals

Mesh

description: Target Mesh

Normals

type: TArray< FVector...

description: Set of computed normals


className: FMeshTangentsd

code: typedef [TMeshTangents](API\Runtime\GeometryCore\DynamicMesh\TMeshTangents)< double > FMeshTangentsd


className: FMeshTangentsf

code: typedef [TMeshTangents](API\Runtime\GeometryCore\DynamicMesh\TMeshTangents)< float > FMeshTangentsf


description: the (TriangleID, TriEdgeIndex) values packed into a 32 bit integer

code: uint32 Encoded() const


description: Construct aFMeshTriEdgeIDfor the given TriangleID and EdgeIndexin range

code: FMeshTriEdgeID ( int32 TriangleIDIn, int32 EdgeIndexIn )


code: FMeshTriOrderedEdgeID ( int32 TriangleIDIn, int32 VertexIndexA, int32 VertexIndexB )


className: FMeshTriEdgeID

description: Note that cycling or permuting the vertices of a triangle will change these indices.

code: struct FMeshTriEdgeID

TriangleID

type: unsigned:  30

description: The index of the mesh Triangle

TriEdgeIndex

type: unsigned:  2

description: The 0/1/2 index of the edge in the triangle's tuple of edges


description: Decode an encodedFMeshTriEdgeIDfrom a packed uint32 created by theEncoded()function

code: FMeshTriEdgeID ( uint32 EncodedEdgeKey )


className: FMeshTriOrderedEdgeID

description: Note that cycling or permuting the vertices of a triangle will change/break these indices.

code: struct FMeshTriOrderedEdgeID

TriangleID

description: The index of the mesh Triangle

VertIndexA

description: The 0/1/2 index of the first vertex in the triangles tuple of vertices

VertIndexB

description: The 0/1/2 index of the second vertex in the triangles tuple of vertices


description:
Attaches or replaces non-manifold vertex mapping data to the provided mesh.
Note: Failure occurs if the DynamicMesh does not have attributes enabled or if the provided array is not long enough to provide a mapping value for each DynamicMesh vertex id.
false on failure (no attribute will be attached to the DynamicMesh in this case)

code: static bool AttachNonManifoldVertexMappingData ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & VertexToNonManifoldVertexIDMap, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & MeshInOut )


description:
Return the vertex ID in the potentially non-manifold data used to generate this DynamicMesh associated with the provided vertex id. In the case that the source data was actually manifold the returned vertex id will be identical to the DynamicMesh vertex id.
Note: the code assumes but does not check that vid is a valid vertex vid.

code: int32 GetOriginalNonManifoldVertexID ( const int32 vid ) const


className: NonManifoldMeshVIDsAttrName

description: Name used to identify vertex attribute data generated during conversion to a DynamicMesh in the case that the source was non-manifold.

code: static [FName](API\Runtime\Core\UObject\FName) NonManifoldMeshVIDsAttrName = FName(TEXT("NonManifoldVIDAttr"));


description: Return true if attribute data indicates that the source data that was converted to this DynamicMesh contained non-manifold vertices.


description:
Return true if the provided DynamicMesh vertex id resulted from a non-manifold vertex in the source data.
Note: the code assumes but does not check that vid is a valid vertex id

code: bool IsNonManifoldVertexID ( const int32 vid ) const


description: Note, this will invalidate any NonManifoldMappingSupport object associated with this DynamicMesh, and subsequent use of such object will produce unexpected results.

code: static void RemoveAllNonManifoldMappingData ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & MeshInOut )


description: Update the support for a new DynamicMesh.

code: void Reset ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh )


description: Note: this will invalidate any NonManifoldMappingSupport object associated with this DynamicMesh, and subsequent use of such object will produce unexpected results.

code: static void RemoveNonManifoldVertexMappingData ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & MeshInOut )


className: FNonManifoldMappingSupport

description: Also, any mapping information between the DynamicMesh and source data will be corrupted by topological changes to the DynamicMesh (e.g. edge splits, collapses etc).

code: class FNonManifoldMappingSupport

DynamicMesh

type: constFDynamicM...


code: FNonManifoldMappingSupport ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh )


className: FPokeTriangleInfo

description: Information about mesh elements modified/created by PokeTriangle()

code: struct FPokeTriangleInfo

NewVertex

type: int


code: FVertexInfo ( const FVector3d & PositionIn )


code: FVertexInfo ( const FVector3d & PositionIn, const FVector3f & NormalIn )


code: FVertexInfo ( const FVector3d & PositionIn, const FVector3f & NormalIn, const FVector3f & ColorIn )


code: FVertexInfo ( const FVector3d & PositionIn, const FVector3f & NormalIn, const FVector3f & ColorIn, const FVector2f & UVIn )


className: FVertexSplitInfo

description: Information about mesh elements modified/created by SplitVertex()

code: struct FVertexSplitInfo


className: FVertexInfo

description: FVertexInfostores information about vertex attributes - position, normal, color, UV

code: struct FVertexInfo


description: Apply given Transform to a Mesh. Modifies Vertex Positions and Normals, and any Per-Triangle Normal Overlays

code: namespace MeshTransforms { void MeshTransforms::ApplyTransform ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FTransformSRT3d](API\Runtime\GeometryCore\FTransformSRT3d) & Transform, bool bReverseOrientationIfNeeded ) }


code: namespace MeshTransforms { void MeshTransforms::ApplyTransform ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector3d &)> PositionTransform, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3f(const FVector3f &)> NormalTransform ) }


description: Apply inverse of given Transform to a Mesh. Modifies Vertex Positions and Normals, and any Per-Triangle Normal Overlays

code: namespace MeshTransforms { void MeshTransforms::ApplyTransformInverse ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FTransformSRT3d](API\Runtime\GeometryCore\FTransformSRT3d) & Transform, bool bReverseOrientationIfNeeded ) }


description: If applying Transform would invert Mesh w/ a negative scale, then invert Mesh's triangle orientations. Note: Does not apply the transform.

code: namespace MeshTransforms { void MeshTransforms::ReverseOrientationIfNeeded ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FTransformSRT3d](API\Runtime\GeometryCore\FTransformSRT3d) & Transform ) }


description: Apply Scale to vertex positions of Mesh, relative to given Origin. Does not modify any other attributes (normals/etc)

code: namespace MeshTransforms { void MeshTransforms::Scale ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const FVector3d & Scale, const FVector3d & Origin, bool bReverseOrientationIfNeeded ) }


description: Apply Translation to vertex positions of Mesh. Does not modify any other attributes.

code: namespace MeshTransforms { void MeshTransforms::Translate ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const FVector3d & Translation ) }


description: Transform Mesh into local coordinates of Frame

code: namespace MeshTransforms { void MeshTransforms::WorldToFrameCoords ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & Frame ) }


description:
Run the merge operation and modify .Mesh
true if the algorithm succeeds

code: virtual bool Apply()


description: Default tolerance is float ZeroTolerance

code: static const double DEFAULT_TOLERANCE = FMathf::ZeroTolerance;


description: Returns true if endpoint vertices are within tolerance. Note that we do not know the order of the vertices here so we try both combinations.

code: bool IsSameEdge ( const FVector3d & a, const FVector3d & b, const FVector3d & c, const FVector3d & d ) const


description: Transform Mesh out of local coordinates of Frame

code: namespace MeshTransforms { void MeshTransforms::FrameCoordsToWorld ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & Frame ) }


code: FMergeCoincidentMeshEdges ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * mesh )


className: FMergeCoincidentMeshEdges

description: Currently if the two edges have the same "orientation" (ie from their respective triangles) they cannot be merged.

code: class FMergeCoincidentMeshEdges

bWeldAttrsOnMergedEdges

description: Enable / Disable attribute welding along merged mesh edges

FinalNumBoundaryEdges

description: Number of mesh boundary edges after merging

InitialNumBoundaryEdges

description: Number of mesh boundary edges before merging

MergeSearchTolerance

description: Edges are considered as potentially the same if their midpoints are within this distance.

MergeVertexTolerance

description: Edges are coincident if both pairs of endpoint vertices are closer than this distance

Mesh

description: The mesh that we are modifying

OnlyUniquePairs

description: Only merge unambiguous pairs that have unique duplicate-edge matches

SplitAttributeWelder

type: FSplitAttribute...

description: Used to weld attributes at the merged edges


className: FDynamicMeshNormalOverlay

code: typedef [TDynamicMeshVectorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay)< float, 3, FVector3f > FDynamicMeshNormalOverlay


className: FDynamicMeshColorOverlay

code: typedef [TDynamicMeshVectorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay)< float, 4, FVector4f > FDynamicMeshColorOverlay


className: FDynamicMeshUVOverlay

code: typedef [TDynamicMeshVectorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay)< float, 2, FVector2f > FDynamicMeshUVOverlay


description: Welds split colors shared by the ParentVID vertex in the ParentMesh.

code: static void WeldSplitColors ( const int32 ParentVID, [FDynamicMeshColorOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay) & ColorOverlay, float ColorDistSqrdThreshold )


description: Weld split-elements across the entire mesh.

code: void WeldSplitElements ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & ParentMesh )


description: Weld split-elements at the ParentVID in each overlay that are "close enough" as defined by the appropriate threshold.

code: void WeldSplitElements ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & ParentMesh, const int32 ParentVID )


description: Welds split Normals / Tangents shared by the ParentVID vertex in the ParentMesh based on the angled between the vectors.

code: static void WeldSplitUnitVectors ( const int32 ParentVID, [FDynamicMeshNormalOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay) & NormalOverlay, float DotThreshold, bool bMergeZeroVectors )


description: Welds split UVs shared by the ParentVID vertex in the ParentMesh.

code: static void WeldSplitUVs ( const int32 ParentVID, [FDynamicMeshUVOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshVectorOverlay) & UVOverlay, float UVDistSqrdThreshold )


className: FSplitAttributeWelder

description: FSplitAttributeWeldercan be used to weld split-attributes that share the same vertex in the parent mesh (e.g. split normals)

code: class FSplitAttributeWelder

ColorDistSqrdThreshold

type: float

description: Merge threshold used to compare Color Overlay elements Applied as (ColorA - ColorB).SizeSquared() <= ColorDistSqrdThreshold

NormalVecDotThreshold

description: Merge threshold used to compare Normal Overlay vectors.

TangentVecDotThreshold

description: Merge threshold used to compare Tangent (and BiTangent) Overlay vectors.

UVDistSqrdThreshold

description: Merge threshold used to compare UV Overlay elements.


className: Value

code: enum &123; Value = true &125;


code: namespace TCanBulkSerialize< UE { namespace Geometry { namespace FDynamicMesh3 { template<> struct TCanBulkSerialize< UE::Geometry::FDynamicMesh3::FEdge > } } }


description:
calling code must not store a reference to ObjectType!
false if the Object was empty, ie ifReleaseSharedObject()has been called

code: bool AccessSharedObject ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const ObjectType &)> ProcessFunc )


description: Release the shared object. Generally this is intended to only be called by the "owner" of the object.

code: void ReleaseSharedObject()


description: Construct shared access to a raw pointer of ObjectType

code: TConstObjectSharedAccess ( const ObjectType * Object )


description: Construct shared access to a shared pointer of ObjectType

code: TConstObjectSharedAccess ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< ObjectType > Object )


className: TConstObjectSharedAccess

description: Note that aTSharedPtrdoes not strictly need to be used. However this allows the Owner thread to destruct the Object, and/or terminate, and the background thread can still safely access a shared ObjectType (now empty).

code: template<typename ObjectType> class TConstObjectSharedAccess

EmptyObject

type: ObjectType

description: Default-constructed value of ObjectType that will be returned if ObjectRawPtr and ObjectSharedPtr are both null/invalid

ObjectLock

type: FCriticalSectio...

description: Controls access to the shared object

ObjectRawPtr

type: const ObjectTyp...

description: Only one of ObjectRawPtr or ObjectSharedPtr should be initialized. ObjectRawPtr will be checked first.

ObjectSharedPtr

type: TSharedPtr< Obj...


description: Check validity of attribute

code: virtual bool CheckValidity ( bool bAllowNonmanifold, [EValidityCheckFailMode](API\Runtime\GeometryCore\UE__Geometry__EValidityCheckFail-) FailMode ) const


description: Compact the attribute in place

code: void CompactInPlace ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps )


description: Generic function to copy data in to an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: bool CopyIn ( int RawID, void * Buffer, int BufferSize )


description: Generic function to copy data out of an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: bool CopyOut ( int RawID, void * Buffer, int BufferSize ) const


description: Implementation of parent-class copy.MakeCopy()andMakeCompactCopy()implementations should call this to transfer any custom data added by parent attribute set class.

code: virtual void CopyParentClassData ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > & Other )


description:
Copy data from a different attribute to this one, using the mesh index mapping to determine the correspondence
true if the copy succeeded, false otherwise (e.g. false if the data from the source attribute was not compatible and the CopyOut failed to copy across)

code: bool CopyThroughMapping ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase) * Source, const [FMeshIndexMappings](API\Runtime\GeometryCore\DynamicMesh\FMeshIndexMappings) & Mapping )


description: Get optional identifier for this attribute set.


description: Allocate a new compact copy of the attribute layer, optionally with a different parent. Default implementation does a full copy and then compacts it, usually derived class will want to override this with a more efficient direct compact copy implementation

code: virtual [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase) * MakeCompactCopy ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps, ParentType * ParentIn ) const


description: Allocate a new copy of the attribute layer, optionally with a different parent

code: [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase) * MakeCopy ( ParentType * ParentIn ) const


description: Allocate a new empty instance of the same type of attribute layer

code: [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase) * MakeNew ( ParentType * ParentIn ) const


code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TDynamicAttributeChangeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeChangeBase)< ParentType > > NewBlankChange() const


description: Update to reflect an edge flip in the parent mesh

code: virtual void OnFlipEdge ( const [DynamicMeshInfo::FEdgeFlipInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeFlipInfo) & FlipInfo )


description: Update to reflect an edge collapse in the parent mesh

code: virtual void OnCollapseEdge ( const [DynamicMeshInfo::FEdgeCollapseInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeCollapseInfo) & CollapseInfo )


description: Update to reflect an edge merge in the parent mesh

code: virtual void OnMergeEdges ( const [DynamicMeshInfo::FMergeEdgesInfo](API\Runtime\GeometryCore\DynamicMesh\FMergeEdgesInfo) & MergeInfo )


code: virtual void OnNewTriangle ( int TriangleID, bool bInserted )


code: virtual void OnNewVertex ( int VertexID, bool bInserted )


description: Update to reflect a face poke in the parent mesh

code: virtual void OnPokeTriangle ( const [DynamicMeshInfo::FPokeTriangleInfo](API\Runtime\GeometryCore\DynamicMesh\FPokeTriangleInfo) & PokeInfo )


code: virtual void OnRemoveTriangle ( int TriangleID )


code: virtual void OnRemoveVertex ( int VertexID )


code: virtual void OnSplitVertex ( const [DynamicMeshInfo::FVertexSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FVertexSplitInfo) & SplitInfo, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


code: virtual void OnReverseTriOrientation ( int TriangleID )


description: Update to reflect an edge split in the parent mesh

code: virtual void OnSplitEdge ( const [DynamicMeshInfo::FEdgeSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeSplitInfo) & SplitInfo )


description: Update any held pointer to the parent

code: void Reparent ( ParentType * NewParent )


description: Serialize to and from an archive.

code: void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar )


description: Set optional identifier for this attribute set.

code: void SetName ( [FName](API\Runtime\Core\UObject\FName) NameIn )


code: virtual ~TDynamicAttributeBase()


className: TDynamicAttributeBase

description: Subclasses can override the On* functions to ensure the attribute remains up to date through changes to the dynamic object

code: template<typename ParentType> class TDynamicAttributeBase

Name

type: FName

description: OptionalFNameidentifier for this attribute set.


code: virtual bool Apply ( [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute, bool bRevert ) const


code: virtual void SaveInitialTriangle ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute, int TriangleID )


code: virtual void SaveInitialVertex ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute, int VertexID )


code: virtual void StoreAllFinalTriangles ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute, const [TArray](API\Runtime\Core\Containers\TArray)< int > & TriangleIDs )


code: virtual void StoreAllFinalVertices ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute, const [TArray](API\Runtime\Core\Containers\TArray)< int > & VertexIDs )


code: virtual ~TDynamicAttributeChangeBase()


className: TDynamicAttributeChangeBase

description: Generic base class for change tracking of an attribute layer

code: template<typename ParentType> class TDynamicAttributeChangeBase


description: Check validity of attributes

code: virtual bool CheckValidity ( bool bAllowNonmanifold, [EValidityCheckFailMode](API\Runtime\GeometryCore\UE__Geometry__EValidityCheckFail-) FailMode ) const


code: [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * GetRegisteredAttribute ( int Idx ) const


code: int NumRegisteredAttributes() const


code: virtual void OnCollapseEdge ( const [DynamicMeshInfo::FEdgeCollapseInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeCollapseInfo) & CollapseInfo )


code: virtual void OnFlipEdge ( const [DynamicMeshInfo::FEdgeFlipInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeFlipInfo) & FlipInfo )


code: virtual void OnMergeEdges ( const [DynamicMeshInfo::FMergeEdgesInfo](API\Runtime\GeometryCore\DynamicMesh\FMergeEdgesInfo) & MergeInfo )


code: virtual void OnNewVertex ( int VertexID, bool bInserted )


description: These functions are called by theFDynamicMesh3to update the various attributes when the parent mesh topology has been modified.

code: virtual void OnNewTriangle ( int TriangleID, bool bInserted )


code: virtual void OnPokeTriangle ( const [DynamicMeshInfo::FPokeTriangleInfo](API\Runtime\GeometryCore\DynamicMesh\FPokeTriangleInfo) & PokeInfo )


code: virtual void OnRemoveTriangle ( int TriangleID )


code: virtual void OnRemoveVertex ( int VertexID )


code: virtual void OnReverseTriOrientation ( int TriangleID )


description: Mesh-specific on* functions; may be split out

code: virtual void OnSplitEdge ( const [DynamicMeshInfo::FEdgeSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeSplitInfo) & SplitInfo )


description: Stores the given attribute pointer in the attribute register, so that it will be updated with mesh changes, but does not take ownership of the attribute memory.

code: void RegisterExternalAttribute ( [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute )


code: virtual void OnSplitVertex ( const [DynamicMeshInfo::FVertexSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FVertexSplitInfo) & SplitInfo, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


code: void UnregisterExternalAttribute ( [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Attribute )


code: void ResetRegisteredAttributes()


code: virtual ~TDynamicAttributeSetBase()


className: TDynamicAttributeSetBase

description: Generic base class for managing a set of registered attributes that must all be kept up to date

code: template<typename ParentType> class TDynamicAttributeSetBase

RegisteredAttributes

type: TArray<TDynami...

description: Not managed by the base class; we should be able to register any attributes here that we want to be automatically updated


description: Add value at the end of the value array.

code: void Append ( const AttribValueType & InValue )


description: Compact the attribute in place

code: virtual void CompactInPlace ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps )


description: Set this attribute to contain the same arrays as the copy attribute.

code: void Copy ( const [TDynamicBoneAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicBoneAttributeBase)< ParentType, AttribValueType > & Copy )


description: Generic function to copy data in to an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: virtual bool CopyIn ( int RawID, void * Buffer, int BufferSize )


description: Generic function to copy data out of an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: virtual bool CopyOut ( int RawID, void * Buffer, int BufferSize ) const


description:
Copy data from a different attribute to this one, using the mesh index mapping to determine the correspondence
true if the copy succeeded, false otherwise (e.g. false if the data from the source attribute was not compatible and the CopyOut failed to copy across)

code: virtual bool CopyThroughMapping ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Source, const [FMeshIndexMappings](API\Runtime\GeometryCore\DynamicMesh\FMeshIndexMappings) & Mapping )


code: const [TArray](API\Runtime\Core\Containers\TArray)< AttribValueType > & GetAttribValues() const


code: const AttribValueType & GetValue ( const int32 InBoneID ) const


description: Resize the array of values to the given max bone number and set all the values to the InitialValue.

code: void Initialize ( const int32 InNumBones, const AttribValueType & InitialValue )


description: true if the attribute has no bone values stored

code: bool IsEmpty() const


description:
Assumes that the AttribValueType support equality operator. If not, create a template specialization.
true, if this attribute is the same as the Other.

code: virtual bool IsSameAs ( const [TDynamicBoneAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicBoneAttributeBase)< ParentType, AttribValueType > & Other ) const


description: FTransform doesn't support equality operator.

code: template<> bool IsSameAs ( const [TDynamicBoneAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicBoneAttributeBase)< [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3), FTransform > & Other ) const


description: Allocate a new empty instance of the same type of attribute layer

code: virtual [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * MakeNew ( ParentType * ParentIn ) const


description: Allocate a new copy of the attribute layer, optionally with a different parent

code: virtual [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * MakeCopy ( ParentType * ParentIn ) const


code: virtual [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TDynamicAttributeChangeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeChangeBase)< ParentType > > NewBlankChange() const


description: the number of the values stored.

code: int32 Num() const


description: Update any held pointer to the parent

code: virtual void Reparent ( ParentType * NewParent )


description: Resize the array of values to the given max bone number.

code: void Resize ( const int32 InNumBones )


description: Serialization

code: void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar )


code: void SetValue ( const int32 InBoneID, const AttribValueType & InValue )


description: Create an empty attribute.

code: TDynamicBoneAttributeBase()


description: Create an attribute for the given parent and set the number of unintialized values.

code: TDynamicBoneAttributeBase ( ParentType * ParentIn, const int InNumBones )


description: Create an attribute for the given parent and number of bones and set all values to the InitialValue.

code: TDynamicBoneAttributeBase ( ParentType * ParentIn, const int InNumBones, const AttribValueType & InitialValue )


code: virtual ~TDynamicBoneAttributeBase()


className: TDynamicBoneAttributeBase

description: Bone Attributes

code: template<typename ParentType, typename AttribValueType> class TDynamicBoneAttributeBase : public [UE::Geometry::TDynamicAttributeBase< ParentType >](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)

AttribValues

type: TArray< AttribV...

description: List of per-bone values.

Parent

type: ParentType *...

description: The parent object (e.g. mesh, point set) this attribute belongs to.


code: bool Apply ( [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > * Overlay, bool bRevert ) const


code: void ApplyReplaceChange ( [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > * Overlay, const [TArray](API\Runtime\Core\Containers\TArray)< [FChangeTriangle](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange\FChangeTriangle) > & RemoveTris, const [TArray](API\Runtime\Core\Containers\TArray)< [FChangeElement](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange\FChangeElement) > & InsertElements, const [TArray](API\Runtime\Core\Containers\TArray)< RealType > & InsertElementData, const [TArray](API\Runtime\Core\Containers\TArray)< [FChangeTriangle](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshAttributeChange\FChangeTriangle) > & InsertTris ) const


className: FChangeElement

code: struct FChangeElement


className: FChangeTriangle

code: struct FChangeTriangle


code: void SaveInitialElement ( const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > * Overlay, int ElementID )


code: void SaveInitialTriangle ( const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > * Overlay, int TriangleID )


code: void StoreFinalElement ( const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > * Overlay, int ElementID )


code: void StoreFinalTriangle ( const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > * Overlay, int TriangleID )


className: TDynamicMeshAttributeChange

description: This class is meant to be used viaFDynamicMeshChangeand is not fully functional on its own (see comments in ApplyReplaceChange)

code: template<typename RealType, int ElementSize> class TDynamicMeshAttributeChange

NewElementData

type: TArray< RealTyp...

NewElements

type: TArray<FChange...


description: Allocate a new element with the given constant value

code: int AppendElement ( RealType ConstantValue )


description: Allocate a new element with the given value

code: int AppendElement ( const RealType * Value )


description: true if the two triangles are connected, ie shared edge exists and is not a seam edge

code: bool AreTrianglesConnected ( int TriangleID0, int TriangleID1 ) const


description: Support for inserting element at specific ID. This is a bit tricky because we likely will need to update the free list in the RefCountVector, which can be expensive. If you are going to do many inserts (eg inside a loop), wrap in BeginUnsafe / EndUnsafe calls, and pass bUnsafe = true to theInsertElement()calls, to the defer free list rebuild until you are done.Call this before a set of unsafe InsertVertex() calls

code: void BeginUnsafeElementsInsert()


description: Checks that the overlay mesh is well-formed, ie all internal data structures are consistent

code: bool CheckValidity ( bool bAllowNonManifoldVertices, [EValidityCheckFailMode](API\Runtime\GeometryCore\UE__Geometry__EValidityCheckFail-) FailMode ) const


description: Discard all elements.

code: void ClearElements()


description: Discard elements for given triangles.

code: template<typename EnumerableIntType> void ClearElements ( const EnumerableIntType & Triangles )


description: Copy the Copy overlay to a compact rep, also updating parent references based on the CompactMaps

code: void CompactCopy ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps, const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > & Copy )


description: Compact overlay and update links to parent based on CompactMaps

code: void CompactInPlace ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps )


description: Set this overlay to contain the same arrays as the copy overlay

code: void Copy ( const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > & Copy )


description: Count the number of unique elements for a given parent-mesh vertex

code: int CountVertexElements ( int VertexID, bool bBruteForce ) const


description: Build overlay topology from a predicate function, e.g. to build topology for sharp normals

code: void CreateFromPredicate ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int ParentVertexIdx, int TriIDA, int TriIDB)> TrisCanShareVertexPredicate, RealType InitElementValue )


description: the number of in-use Elements in the overlay

code: int ElementCount() const


description: enumerator for valid element indices suitable for use with range-based for


description: Call after a set of unsafe InsertVertex() calls to rebuild free list

code: void EndUnsafeElementsInsert()


description: Goes through elements and frees any whose reference counts indicate that they are not being used. This is usually not necessary since most operations that remove references will go ahead and do this, but it may be used, for instance, after SetTriangle is called with bAllowElementFreeing set to false.

code: void FreeUnusedElements ( const [TSet](API\Runtime\Core\Containers\TSet)< int > * ElementsToCheck )


description: Get the element at a given index

code: template<typename AsType> void GetElement ( int ElementID, AsType & Data ) const


description: Accessors/QueriesGet the element at a given index

code: void GetElement ( int ElementID, RealType * Data ) const


description: Get the Element value associated with a vertex of a triangle.

code: template<typename AsType> void GetElementAtVertex ( int TriangleID, int VertexID, AsType & Data ) const


description:
Find the element ID at a vertex of a triangle.
Returns the element ID or FDynamicMesh3::InvalidID if the vertex is not a parent of any element contained in the triangle.

code: int GetElementIDAtVertex ( int TriangleID, int VertexID ) const


description: Find the triangles connected to an element

code: void GetElementTriangles ( int ElementID, [TArray](API\Runtime\Core\Containers\TArray)< int > & OutTriangles ) const


description: the parent mesh for this overlay

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


description: the parent mesh for this overlay


description: Get the parent vertex id for the element at a given index

code: int GetParentVertex ( int ElementID ) const


description: Get the element index tuple for a triangle

code: [FIndex3i](API\Runtime\GeometryCore\FIndex3i) GetTriangle ( int TriangleID ) const


description: If the triangle is set to valid element indices, return the indices in TriangleOut and return true, otherwise return false

code: bool GetTriangleIfValid ( int TriangleID, [FIndex3i](API\Runtime\GeometryCore\FIndex3i) & TriangleOut ) const


description: Compute interpolated parameter value inside triangle using barycentric coordinates

code: template<typename AsType> void GetTriBaryInterpolate ( int32 TriangleID, const AsType * BaryCoords, AsType * DataOut ) const


description: Find the elements associated with a given parent-mesh vertex

code: void GetVertexElements ( int VertexID, [TArray](API\Runtime\Core\Containers\TArray)< int > & OutElements ) const


description: true if overlay has any interior seam edges. This requires an O(N) search unless it early-outs.

code: bool HasInteriorSeamEdges() const


description: Set a triangle's element indices to InvalidID

code: void InitializeNewTriangle ( int TriangleID )


description: Initialize the triangle list to the given size, and set all triangles to InvalidID

code: void InitializeTriangles ( int MaxTriangleID )


description: Insert element at given index, assuming it is unused. If bUnsafe, we use fast id allocation that does not update free list. You should only be using this betweenBeginUnsafeElementsInsert()/EndUnsafeElementsInsert()calls

code: [EMeshResult](API\Runtime\GeometryCore\UE__Geometry__EMeshResult) InsertElement ( int ElementID, const RealType * Value, bool bUnsafe )


description: Updates the triangles array and optionally the element reference counts

code: void InternalSetTriangle ( int TriangleID, const [FIndex3i](API\Runtime\GeometryCore\FIndex3i) & TriElements, bool bUpdateRefCounts, bool bAllowElementFreeing )


description: true if the elements are compact

code: bool IsCompact() const


description: true if this element index is in use

code: bool IsElement ( int vID ) const


description: Returns true if this overlay is the same as Other.

code: bool IsSameAs ( const [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > & Other, bool bIgnoreDataLayout ) const


description: Returns true if the parent-mesh edge is a "Seam" in this overlay. If present, bIsNonIntersectingOut will be true only if this is a seam edge that does not intersect with another seam or the end of the seam.

code: bool IsSeamEdge ( int EdgeID, bool * bIsNonIntersectingOut ) const


description: Returns true if the parent-mesh edge is a "Seam End" in this overlay, meaning the adjacent element triangles share one element, not two

code: bool IsSeamEndEdge ( int EdgeID ) const


description: Returns true if the parent-mesh vertex is connected to any seam edges

code: bool IsSeamVertex ( int VertexID, bool bBoundaryIsSeam ) const


description:
Determines whether the base-mesh vertex has "bowtie" topology in the Overlay. Bowtie topology means that one or more elements at the vertex are shared across disconnected UV-components.
true if the base-mesh vertex has "bowtie" topology in the overlay

code: bool IsBowtieInOverlay ( int32 VertexID ) const


description: true if this triangle was set

code: bool IsSetTriangle ( int TID ) const


description: the maximum element index in the overlay. This may be larger than the count if Elements have been deleted.

code: int MaxElementID() const


description:
Collapse SourceElementID into TargetElementID, resulting in connecting any containing triangles and reducing the total elements in the overlay.
If the operation completed successfully, returns true

code: bool MergeElement ( int SourceElementID, int TargetElementID )


description: Update the overlay to reflect an edge collapse in the parent mesh

code: void OnCollapseEdge ( const [DynamicMeshInfo::FEdgeCollapseInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeCollapseInfo) & CollapseInfo )


description: Update the overlay to reflect an edge flip in the parent mesh

code: void OnFlipEdge ( const [DynamicMeshInfo::FEdgeFlipInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeFlipInfo) & FlipInfo )


description: Update the overlay to reflect an edge merge in the parent mesh

code: void OnMergeEdges ( const [DynamicMeshInfo::FMergeEdgesInfo](API\Runtime\GeometryCore\DynamicMesh\FMergeEdgesInfo) & MergeInfo )


description: Update the overlay to reflect a face poke in the parent mesh

code: void OnPokeTriangle ( const [DynamicMeshInfo::FPokeTriangleInfo](API\Runtime\GeometryCore\DynamicMesh\FPokeTriangleInfo) & PokeInfo )


description: Reverse the orientation of a triangle's elements

code: void OnReverseTriOrientation ( int TriangleID )


description: Remove a triangle from the overlay

code: void OnRemoveTriangle ( int TriangleID )


description: Update the overlay to reflect an edge split in the parent mesh

code: void OnSplitEdge ( const [DynamicMeshInfo::FEdgeSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeSplitInfo) & SplitInfo )


description: Update the overlay to reflect a vertex split in the parent mesh

code: void OnSplitVertex ( const [DynamicMeshInfo::FVertexSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FVertexSplitInfo) & SplitInfo, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


description: Serialize to and from an archive.

code: void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar, const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) * CompactMaps, bool bUseCompression )


description: Set the element at a given index

code: void SetElement ( int ElementID, const RealType * Data )


description: Set the element at a given index

code: template<typename AsType> void SetElement ( int ElementID, const AsType & Data )


description: Set the value at an Element to be a linear interpolation of two other Elements

code: void SetElementFromLerp ( int SetElement, int ElementA, int ElementB, double Alpha )


description: Set the value at an Element to be a barycentric interpolation of three other Elements

code: void SetElementFromBary ( int SetElement, int ElementA, int ElementB, int ElementC, const FVector3d & BaryCoords )


code: void SetParentVertex ( int ElementIndex, int ParentVertexIndex )


description: Set the triangle to the given Element index tuple, and increment element reference counts

code: [EMeshResult](API\Runtime\GeometryCore\UE__Geometry__EMeshResult) SetTriangle ( int TriangleID, const [FIndex3i](API\Runtime\GeometryCore\FIndex3i) & TriElements, bool bAllowElementFreeing )


description: Refine an existing overlay topology by splitting any bow ties

code: void SplitBowties()


description: Split any bowties at given vertex.

code: void SplitBowtiesAtVertex ( int32 Vid, [TArray](API\Runtime\Core\Containers\TArray)< int32 > * NewElementIDs )


description:
Create a new copy of ElementID, and update connected triangles in the TrianglesToUpdate array to reference the copy of ElementID where they used to reference ElementID (Note: This just calls "SplitElementWithNewParent" with the existing element's parent id.)
the ID of the newly created element

code: int SplitElement ( int ElementID, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


description:
Create a new copy of ElementID, and update connected triangles in the TrianglesToUpdate array to reference the copy of ElementID where they used to reference ElementID. The new element will have the given parent vertex ID. Deletes any elements that are no longer used after the triangles are changed.
the ID of the newly created element

code: int SplitElementWithNewParent ( int ElementID, int SplitParentVertexID, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


description: Refine an existing overlay topology. For any element on a given triangle, if the predicate returns true, it gets topologically split out so it isn't shared by any other triangle. Used for creating sharp vertices in the normals overlay.

code: void SplitVerticesWithPredicate ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int ElementIdx, int TriID)> ShouldSplitOutVertex, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(int ElementIdx, int TriID, RealType *FillVect)> GetNewElementValue )


description: true if triangle contains element

code: bool TriangleHasElement ( int TriangleID, int ElementID ) const


description: Set the triangle to have InvalidID element IDs, decrementing element reference counts if needed.

code: void UnsetTriangle ( int TriangleID, bool bAllowElementFreeing )


description: Create an empty overlay

code: TDynamicMeshOverlay()


description: Create an overlay for the given parent mesh

code: TDynamicMeshOverlay ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * ParentMeshIn )


className: TDynamicMeshOverlay

description: Note that although this is a template, many of the functions are defined in the .cpp file. As a result you need to explicitly instantiate and export the instance of the template that you wish to use in the block at the top of DynamicMeshOverlay.cpp

code: template<typename RealType, int ElementSize> class TDynamicMeshOverlay

Elements

type: TDynamicVector<...

description: List of element values

ElementsRefCounts

type: FRefCountVector

description: Reference counts of element indices. Iterate over this to find out which elements are valid.

ElementTriangles

description: List of triangle element-index triplets [Elem0 Elem1 Elem2]

ParentMesh

description: The parent mesh this overlay belongs to

ParentVertices

description: List of parent vertex indices, one per element


className: BaseType

code: typedef [TDynamicMeshTriangleAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshTriangleAttribute)< RealType, 1 > BaseType


code: RealType GetValue ( int TriangleID ) const


code: void SetNewValue ( int NewTriangleID, RealType Value )


code: void SetValue ( int TriangleID, RealType Value )


code: TDynamicMeshScalarTriangleAttribute()


code: TDynamicMeshScalarTriangleAttribute ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * ParentMeshIn )


className: TDynamicMeshScalarTriangleAttribute

description: TDynamicMeshScalarTriangleAttributeis an extension ofTDynamicMeshTriangleAttributefor scalar-valued attributes. Adds some convenience functions to simplify get/set code.

code: template<typename RealType> class TDynamicMeshScalarTriangleAttribute : public [UE::Geometry::TDynamicMeshTriangleAttribute< RealType, 1 >](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshTriangleAttribute)


code: void CompactCopy ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps, const [TDynamicMeshTriangleAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshTriangleAttribute)< AttribValueType, AttribDimension > & ToCopy )


description: Compact the attribute in place

code: virtual void CompactInPlace ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps )


description: Set this overlay to contain the same arrays as the copy overlay

code: void Copy ( const [TDynamicMeshTriangleAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshTriangleAttribute)< AttribValueType, AttribDimension > & Copy )


description: Generic function to copy data in to an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: virtual bool CopyIn ( int RawID, void * Buffer, int BufferSize )


description: Generic function to copy data out of an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: virtual bool CopyOut ( int RawID, void * Buffer, int BufferSize ) const


description: Accessors/Queries

code: virtual bool CopyThroughMapping ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) > * Source, const [FMeshIndexMappings](API\Runtime\GeometryCore\DynamicMesh\FMeshIndexMappings) & Mapping )


description: Copy the attribute value at FromTriangleID to ToTriangleID

code: void CopyValue ( int FromTriangleID, int ToTriangleID )


description: the parent mesh for this overlay

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


description: the parent mesh for this overlay


description: Get the element at a given index

code: void GetValue ( int TriangleID, AttribValueType * Data ) const


description: Get the element at a given index

code: template<typename AsType> void GetValue ( int TriangleID, AsType & Data ) const


description: Initialize the attribute values to the given max triangle ID

code: void Initialize ( AttribValueType InitialValue )


description: Returns true if the parent-mesh edge is a "Seam" in this overlay

code: bool IsBorderEdge ( int EdgeID, bool bMeshBoundaryIsBorder ) const


description: Returns true if this AttributeSet is the same as Other.

code: bool IsSameAs ( const [TDynamicMeshTriangleAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshTriangleAttribute)< AttribValueType, AttribDimension > & Other, bool bIgnoreDataLayout ) const


code: virtual [FDynamicMeshAttributeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeBase) * MakeCompactCopy ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * ParentMeshIn ) const


code: virtual [FDynamicMeshAttributeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeBase) * MakeCopy ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * ParentMeshIn ) const


code: virtual [FDynamicMeshAttributeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeBase) * MakeNew ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * ParentMeshIn ) const


code: virtual [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FDynamicMeshAttributeChangeBase](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAttributeChangeBase) > NewBlankChange() const


description: Update the overlay to reflect an edge collapse in the parent mesh

code: virtual void OnCollapseEdge ( const [DynamicMeshInfo::FEdgeCollapseInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeCollapseInfo) & CollapseInfo )


description: Update the overlay to reflect an edge flip in the parent mesh

code: virtual void OnFlipEdge ( const [DynamicMeshInfo::FEdgeFlipInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeFlipInfo) & FlipInfo )


description: Update the overlay to reflect an edge merge in the parent mesh

code: virtual void OnMergeEdges ( const [DynamicMeshInfo::FMergeEdgesInfo](API\Runtime\GeometryCore\DynamicMesh\FMergeEdgesInfo) & MergeInfo )


code: virtual void OnNewTriangle ( int TriangleID, bool bInserted )


description: Update the overlay to reflect a face poke in the parent mesh

code: virtual void OnPokeTriangle ( const [DynamicMeshInfo::FPokeTriangleInfo](API\Runtime\GeometryCore\DynamicMesh\FPokeTriangleInfo) & PokeInfo )


description: Update the overlay to reflect an edge split in the parent mesh

code: virtual void OnSplitEdge ( const [DynamicMeshInfo::FEdgeSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FEdgeSplitInfo) & SplitInfo )


description: Update the overlay to reflect a vertex split in the parent

code: virtual void OnSplitVertex ( const [DynamicMeshInfo::FVertexSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FVertexSplitInfo) & SplitInfo, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


code: void ResizeAttribStoreIfNeeded ( int TriangleID )


description: Serialize to and from an archive.

code: void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar, const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) * CompactMaps, bool bUseCompression )


code: void SetNewValue ( int NewTriangleID, const AttribValueType * Data )


description: Set the element at a given index

code: void SetValue ( int TriangleID, const AttribValueType * Data )


description: Set the element at a given index

code: template<typename AsType> void SetValue ( int TriangleID, const AsType & Data )


description: Create an empty overlay

code: TDynamicMeshTriangleAttribute()


description: Create an overlay for the given parent mesh

code: TDynamicMeshTriangleAttribute ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * ParentMeshIn, bool bAutoInit )


className: TDynamicMeshTriangleAttribute

description: TheFDynamicMesh3mesh topology operations (eg split/flip/collapse edge, poke face, etc) can be mirrored to the overlay viaOnSplitEdge(), etc.

code: template<typename AttribValueType, int AttribDimension> class TDynamicMeshTriangleAttribute : public [UE::Geometry::TDynamicAttributeBase< FDynamicMesh3 >](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)

AttribValues

description: List of per-triangle attribute values

ParentMesh

description: The parent mesh this overlay belongs to


description: Append a new Element to the overlay

code: int AppendElement ( const VectorType & Value )


description: Append a new Element to the overlay

code: int AppendElement ( const RealType * Value )


code: typedef [TDynamicMeshOverlay](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)< RealType, ElementSize > BaseType


description:
Iterate through triangles connected to VertexID and call ProcessFunc for each per-triangle-vertex Element with its Value. ProcessFunc must return true to continue the enumeration, or false to early-terminate it
true if at least one valid Element was found, ie if ProcessFunc was called at least one time

code: bool EnumerateVertexElements ( int VertexID, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(int TriangleID, int ElementID, const VectorType &Value)> ProcessFunc, bool bFindUniqueElements ) const


description: Get Element at a specific ID

code: VectorType GetElement ( int ElementID ) const


description: Get Element at a specific ID

code: void GetElement ( int ElementID, VectorType & V ) const


description: Get the Element value associated with a vertex of a triangle.

code: VectorType GetElementAtVertex ( int TriangleID, int VertexID ) const


code: void GetElementAtVertex ( int TriangleID, int VertexID, VectorType & V ) const


description: Get the Element associated with a vertex of a triangle

code: void GetTriElement ( int TriangleID, int32 TriVertexIndex, VectorType & Value ) const


description: Get the three Elements associated with a triangle

code: void GetTriElements ( int TriangleID, VectorType & A, VectorType & B, VectorType & C ) const


description: Set Element at a specific ID

code: void SetElement ( int ElementID, const VectorType & Value )


code: TDynamicMeshVectorOverlay ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * parentMesh )


className: TDynamicMeshVertexAttribute

code: typedef [TDynamicVertexAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicVertexAttribute)< AttribValueType, AttribDimension, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) > TDynamicMeshVertexAttribute


className: TDynamicMeshVectorOverlay

description: TDynamicMeshVectorOverlayis an convenient extension ofTDynamicMeshOverlaythat adds a specific N-element Vector type to the template, and adds accessor functions that convert between that N-element vector type and the N-element arrays used byTDynamicMeshOverlay.

code: template<typename RealType, int ElementSize, typename VectorType> class TDynamicMeshVectorOverlay : public [UE::Geometry::TDynamicMeshOverlay< RealType, ElementSize >](API\Runtime\GeometryCore\DynamicMesh\TDynamicMeshOverlay)


description: Append vertex at position, returns vid

code: int AppendVertex ( const [TVector](API\Runtime\Core\Math\TVector)< RealType > & Position )


description: Call this before a set of unsafeInsertVertex()calls

code: void BeginUnsafeVerticesInsert()


description: ConstructionDiscard all data

code: void Clear()


description: Returns measure of compactness in range [0,1], where 1 is fully compacted

code: RealType CompactMetric() const


description: Call after a set of unsafeInsertVertex()calls to rebuild free list

code: void EndUnsafeVerticesInsert()


code: [TDynamicAttributeSetBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeSetBase)< [TDynamicPointSet3](API\Runtime\GeometryCore\DynamicMesh\TDynamicPointSet3)< RealType > > * GetBaseAttributeSet() const


description: Geometric queriesReturns bounding box of all points

code: [TAxisAlignedBox3](API\Runtime\GeometryCore\TAxisAlignedBox3)< RealType > GetBounds() const


description:
Get/set
the vertex position

code: [TVector](API\Runtime\Core\Math\TVector)< RealType > GetVertex ( int VertexID ) const


description: Direct buffer access (not a good idea to use)

code: const [TDynamicVector](API\Runtime\GeometryCore\Util\TDynamicVector)< double > & GetVerticesBuffer()


code: const [FRefCountVector](API\Runtime\GeometryCore\Util\FRefCountVector) & GetVerticesRefCounts()


description: Insert vertex at given index, assuming it is unused. If bUnsafe, we use fast id allocation that does not update free list. You should only be using this betweenBeginUnsafeVerticesInsert()/EndUnsafeVerticesInsert()calls

code: [EMeshResult](API\Runtime\GeometryCore\UE__Geometry__EMeshResult) InsertVertex ( int VertexID, const [TVector](API\Runtime\Core\Math\TVector)< RealType > & Position, bool bUnsafe )


description: true if vertex count == max vertex id

code: bool IsCompact() const


description: true if VertexID is a valid vertex in this point set

code: bool IsVertex ( int VertexID ) const


description: upper bound on vertex IDs used in the point set, ie all vertex IDs in use are < MaxVertexID

code: int MaxVertexID() const


description: Edit operationsRemove point

code: [EMeshResult](API\Runtime\GeometryCore\UE__Geometry__EMeshResult) RemoveVertex ( int VertexID )


description: Attribute Set Support. At the level of this class, we do not have a specific attribute set. Clients can provide a pointer to their attribute set so that functions likeAppendVertex()or DeleteVertex() will work.

code: void SetExternallyManagedAttributes ( [TDynamicAttributeSetBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeSetBase)< [TDynamicPointSet3](API\Runtime\GeometryCore\DynamicMesh\TDynamicPointSet3)< RealType >> * AttributeSet )


description: Set vertex position

code: void SetVertex ( int VertexID, const [TVector](API\Runtime\Core\Math\TVector)< RealType > & vNewPos )


description:
Indices
number of vertices in the point set

code: int VertexCount() const


description:
Iterators
enumerable object for valid vertex indices suitable for use with range-based for, ie for ( int i :VertexIndicesItr())


description: Enumerate positions of all points

code: [FRefCountVector::MappedEnumerable](API\Runtime\GeometryCore\Util\FRefCountVector\MappedEnumerable)< [TVector](API\Runtime\Core\Math\TVector)< RealType > > VerticesItr() const


description: A per-point attribute set can optionally be attached. Currently the client is responsible for managing the memory for this attribute set. The attribute set will be automatically updated when points are added or removed.

code: template<typename RealType> class TDynamicPointSet3

BaseAttributeSet

type: TDynamicAttribu...

description: Base attribute set

VertexRefCounts

description: Reference counts of vertex indices. Iterate over this to find out which vertex indices are valid.

Vertices

description: List of vertex positions


description: Check validity of attribute

code: virtual bool CheckValidity ( bool bAllowNonmanifold, [EValidityCheckFailMode](API\Runtime\GeometryCore\UE__Geometry__EValidityCheckFail-) FailMode ) const


code: void CompactCopy ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps, const [TDynamicVertexAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicVertexAttribute)< AttribValueType, AttribDimension, ParentType > & ToCopy )


description: Compact the attribute in place

code: virtual void CompactInPlace ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps )


description: Set this overlay to contain the same arrays as the copy overlay

code: void Copy ( const [TDynamicVertexAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicVertexAttribute)< AttribValueType, AttribDimension, ParentType > & Copy )


description: Generic function to copy data in to an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: virtual bool CopyIn ( int RawID, void * Buffer, int BufferSize )


description: Generic function to copy data out of an attribute; it's up to the derived class to map RawID to chunks of attribute data

code: virtual bool CopyOut ( int RawID, void * Buffer, int BufferSize ) const


description: Accessors/Queries

code: virtual bool CopyThroughMapping ( const [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * Source, const [FMeshIndexMappings](API\Runtime\GeometryCore\DynamicMesh\FMeshIndexMappings) & Mapping )


description: Copy the attribute value at FromVertexID to ToVertexID

code: void CopyValue ( int FromVertexID, int ToVertexID )


description: the parent for this attribute

code: const ParentType * GetParent() const


description: the parent for this attribute

code: ParentType * GetParent()


description: Get the element at a given index

code: void GetValue ( int VertexID, AttribValueType * Data ) const


description: Get the element at a given index

code: template<typename AsType> void GetValue ( int VertexID, AsType & Data ) const


description: Initialize the attribute values to the given max triangle ID

code: void Initialize ( AttribValueType InitialValue )


description: Returns true if this AttributeSet is the same as Other.

code: bool IsSameAs ( const [TDynamicVertexAttribute](API\Runtime\GeometryCore\DynamicMesh\TDynamicVertexAttribute)< AttribValueType, AttribDimension, ParentType > & Other, bool bIgnoreDataLayout ) const


description: Allocate a new compact copy of the attribute layer, optionally with a different parent. Default implementation does a full copy and then compacts it, usually derived class will want to override this with a more efficient direct compact copy implementation

code: virtual [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * MakeCompactCopy ( const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps, ParentType * ParentIn ) const


description: Allocate a new copy of the attribute layer, optionally with a different parent

code: virtual [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * MakeCopy ( ParentType * ParentIn ) const


description: Allocate a new empty instance of the same type of attribute layer

code: virtual [TDynamicAttributeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeBase)< ParentType > * MakeNew ( ParentType * ParentIn ) const


code: virtual [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [TDynamicAttributeChangeBase](API\Runtime\GeometryCore\DynamicMesh\TDynamicAttributeChangeBase)< ParentType > > NewBlankChange() const


description: Update the overlay to reflect an edge collapse in the parent

code: virtual void OnCollapseEdge ( const [FDynamicMesh3::FEdgeCollapseInfo](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3\FEdgeCollapseInfo) & CollapseInfo )


description: Update the overlay to reflect an edge flip in the parent

code: virtual void OnFlipEdge ( const [FDynamicMesh3::FEdgeFlipInfo](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3\FEdgeFlipInfo) & FlipInfo )


description: Update the overlay to reflect an edge merge in the parent

code: virtual void OnMergeEdges ( const [FDynamicMesh3::FMergeEdgesInfo](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3\FMergeEdgesInfo) & MergeInfo )


code: virtual void OnNewVertex ( int VertexID, bool bInserted )


description: Update the overlay to reflect a face poke in the parent

code: virtual void OnPokeTriangle ( const [FDynamicMesh3::FPokeTriangleInfo](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3\FPokeTriangleInfo) & PokeInfo )


description: Update the overlay to reflect an edge split in the parent

code: virtual void OnSplitEdge ( const [FDynamicMesh3::FEdgeSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3\FEdgeSplitInfo) & SplitInfo )


description: Update the overlay to reflect a vertex split in the parent

code: virtual void OnSplitVertex ( const [FDynamicMesh3::FVertexSplitInfo](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3\FVertexSplitInfo) & SplitInfo, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int > & TrianglesToUpdate )


code: void ResizeAttribStoreIfNeeded ( int VertexID )


description: Serialize to and from an archive.

code: void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar, const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) * CompactMaps, bool bUseCompression )


description: Set the value at an Attribute to be a barycentric interpolation of three other Attributes

code: virtual void SetAttributeFromBary ( int SetAttribute, int AttributeA, int AttributeB, int AttributeC, const FVector3d & BaryCoords )


code: void SetNewValue ( int NewVertexID, const AttribValueType * Data )