description: Get a list of single tangent vectors for each mesh vertex in the TargetMesh, derived from the Tangents Overlays. The Tangents Overlay may store multiple tangents for a single vertex (ie split tangents) In such cases the tangents can either be averaged, or the last tangent seen will be used, depending on the bAverageSplitVertexValues parameter.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetMeshPerVertexTangents ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptVectorList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVectorList) & TangentXList, [FGeometryScriptVectorList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVectorList) & TangentYList, bool & bIsValidTangentSet, bool & bHasVertexIDGaps, bool bAverageSplitVertexValues )


description: Recompute the normals of TargetMesh on all the triangles/vertices of the given Selection using the given CalculateOptions. This method will preserve any existing hard edges, ie each shared triangle-vertex normal is recomputed by averaging the face normals of triangles that reference that shared triangle-vertex normal

module: GeometryScriptingCore

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RecomputeNormalsForMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptCalculateNormalsOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptC-) CalculateOptions, bool bDeferChangeNotifications, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Recompute the normals of TargetMesh using the given CalculateOptions. This method will preserve any existing hard edges, ie each shared triangle-vertex normal is recomputed by averaging the face normals of triangles that reference that shared triangle-vertex normal

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RecomputeNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptCalculateNormalsOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptC-) CalculateOptions, bool bDeferChangeNotifications, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Set all normals in the TargetMesh Normals Overlay to the specified per-vertex normals

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetMeshPerVertexNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptVectorList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVectorList) VertexNormalList, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: If setting Tangents for use with a DynamicMeshComponent, it is also necessary to set the Tangents Type on the Component to "Externally Provided"

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetMeshPerVertexTangents ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptVectorList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVectorList) TangentXList, [FGeometryScriptVectorList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVectorList) TangentYList, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Set the triangle-vertex normals for the given TriangleID on the TargetMesh. This will create unique triangle-vertex normals, ie it will create hard edges / split normals in the normal overlay for each edge of the triangle.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetMeshTriangleNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int TriangleID, [FGeometryScriptTriangle](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptTriangle) Normals, bool & bIsValidTriangle, bool bDeferChangeNotifications )


description: Recompute the normals of TargetMesh by setting the normals of each triangle vertex to the triangle/face normal. Each vertex will have a unique normal in each triangle, ie there will be hard edges / split normals at every mesh edge

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetPerFaceNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Note that this function requires that some normals/tangents already exist on the TargetMesh. If this is not the case, functions like SetPerVertexNormals and ComputeTangents can be used to initialize the normals/tangents first.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * UpdateVertexNormal ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int VertexID, bool bUpdateNormal, FVector NewNormal, bool bUpdateTangents, FVector NewTangentX, FVector NewTangentY, bool & bIsValidVertex, bool bMergeSplitValues, bool bDeferChangeNotifications )


description: Resets the triangle PolyGroup assignments within a PolyGroup Layer to the given Clear Value (or 0 if no Clear Value is specified). Note, this will have no effect if PolyGroups have not been enabled on the mesh, or if the requested Group Layer does not exist.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ClearPolygroups ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, int ClearValue, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Sets PolyGroups by partitioning the mesh based on an edge crease/opening-angle. Note, this will have no effect if the Group Layer does not exist.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputePolygroupsFromAngleThreshold ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, float CreaseAngle, int MinGroupSize, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Sets PolyGroups by identifying adjacent triangles that form reasonable quads. Note any triangles that do not neatly pair to form quads will receive their own PolyGroup.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputePolygroupsFromPolygonDetection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, bool bRespectUVSeams, bool bRespectHardNormals, double QuadAdjacencyWeight, double QuadMetricClamp, int MaxSearchRounds, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Creates and assigns a new PolyGroup for each disconnected UV island of a Mesh. Note, this will have no effect if either the requested UV Layer or Group Layer does not exist.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertUVIslandsToPolygroups ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, int UVLayer, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Creates and assigns a new PolyGroup for each disconnected component of a Mesh. Regions of a mesh are disconnected they do not have a triangle in common. Note, this will have no effect if the Group Layer does not exist.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertComponentsToPolygroups ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Copies the triangle PolyGroup assignments from one layer on the Target Mesh to another. Note, this will have no effect if PolyGroups have not been enabled on the mesh, or if one of the requested Group Layers does not exist.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyPolygroupsLayer ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) FromGroupLayer, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) ToGroupLayer, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Deletes all triangles from the Target Mesh that have a particular PolyGroup ID, in the specific Group Layer.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * DeleteTrianglesInPolygroup ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, int PolygroupID, int & NumDeleted, bool bDeferChangeNotifications, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Enables the standard PolyGroup Layer on the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * EnablePolygroups ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: if the mesh is not Triangle-Compact (eg GetHasTriangleIDGaps == false) then the returned list will also have the same gaps

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetAllTrianglePolygroupIDs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & PolygroupIDsOut )


description: Create list of all unique PolyGroup IDs that exist in the PolyGroup Layer in the Mesh

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetPolygroupIDsInMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & PolygroupIDsOut )


description: Recompute the normals of TargetMesh by averaging the triangle/face normals around each vertex, using combined area and angle weighting. Each vertex will have a single normal, ie there will be no hard edges.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetPerVertexNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Create list of all triangles with the given PolyGroup ID in the given GroupLayer (not necessarily a single connected-component)

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetTrianglesInPolygroup ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, int PolygroupID, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & TriangleIDsOut )


description: Gets the PolyGroup ID associated with the specified Triangle ID and stored in the Group Layer. If the Group Layer or the Triangle does not exist, the value 0 will be returned and bIsValidTriangle set to false.

code: static int32 GetTrianglePolygroupID ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, int TriangleID, bool & bIsValidTriangle )


description: Sets the number of extended PolyGroup Layers on a Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetNumExtendedPolygroupLayers ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int NumLayers, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Set a new PolyGroup on all the triangles of the given Selection, for the given GroupLayer.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetPolygroupForMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, int & SetPolygroupIDOut, int SetPolygroupID, bool bGenerateNewPolygroup, bool bDeferChangeNotifications )


description: Appends a 3D box to the Target Mesh with dimensions and origin taken from the input Box

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendBoundingBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, FBox Box, int32 StepsX, int32 StepsY, int32 StepsZ, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D box to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float DimensionX, float DimensionY, float DimensionZ, int32 StepsX, int32 StepsY, int32 StepsZ, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D Capsule to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendCapsule ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float Radius, float LineLength, int32 HemisphereSteps, int32 CircleSteps, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D cone to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendCone ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float BaseRadius, float TopRadius, float Height, int32 RadialSteps, int32 HeightSteps, bool bCapped, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a rising circular staircase to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendCurvedStairs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float StepWidth, float StepHeight, float InnerRadius, float CurveAngle, int NumSteps, bool bFloating, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D Cylinder (with optional end caps) to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendCylinder ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float Radius, float Height, int32 RadialSteps, int32 HeightSteps, bool bCapped, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Generates a Delaunay Triangulation of the provided vertices, and appends it to the Target Mesh. If optional Constrained Edges are provided, will generate a Constrained Delaunay Triangulation which connects the specified vertices with edges. On success, all vertices are always appended to the output mesh, though duplicate vertices will not be used in any triangles and may optionally be removed. Use PositionsToVertexIDs to map indices in the input VertexPositions array to vertex IDs in the Dynamic Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendDelaunayTriangulation2D ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & VertexPositions, const [TArray](API\Runtime\Core\Containers\TArray)< FIntPoint > & ConstrainedEdges, [FGeometryScriptConstrainedDelaunayTriangulationOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptC-_2) TriangulationOptions, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & PositionsToVertexIDs, bool & bHasDuplicateVertices, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a planar disc to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendDisc ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float Radius, int32 AngleSteps, int32 SpokeSteps, float StartAngle, float EndAngle, float HoleRadius, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a linear staircase to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendLinearStairs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float StepWidth, float StepHeight, float StepDepth, int NumSteps, bool bFloating, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Generates a Delaunay Triangulation of the provided Polygon List, and appends it to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendPolygonListTriangulation ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, [FGeometryScriptGeneralPolygonList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptG-) PolygonList, [FGeometryScriptPolygonsTriangulationOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptP-_6) TriangulationOptions, bool & bTriangulationError, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Revolves an open 2D path, with optional top and bottom end caps, appending the result to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendRevolvePath ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PathVertices, [FGeometryScriptRevolveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptRevolveOptions) RevolveOptions, int32 Steps, bool bCapped, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a planar Rectangle to a Dynamic Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendRectangleXY ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float DimensionX, float DimensionY, int32 StepsWidth, int32 StepsHeight, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: In the coordinate system of the revolve polygon, +X is towards the "outside" of the revolve donut, and +Y is "up" (ie +Z in local space) Polygon should be oriented counter-clockwise to produce a correctly-oriented shape, otherwise it will be inside-out Polygon endpoint is not repeated.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendRevolvePolygon ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolygonVertices, [FGeometryScriptRevolveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptRevolveOptions) RevolveOptions, float Radius, int32 Steps, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a planar Rectangle with Rounded Corners (RoundRect) to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendRoundRectangleXY ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float DimensionX, float DimensionY, float CornerRadius, int32 StepsWidth, int32 StepsHeight, int32 StepsRound, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: It is strongly recommended that callers of this function update to the current AppendRoundRectangleXY function!

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendRoundRectangle_Compatibility_5_0 ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float DimensionX, float DimensionY, float CornerRadius, int32 StepsWidth, int32 StepsHeight, int32 StepsRound, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Polygon should be oriented counter-clockwise to produce a correctly-oriented shape, otherwise it will be inside-out Polygon endpoint is not repeated.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSimpleExtrudePolygon ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolygonVertices, float Height, int32 HeightSteps, bool bCapped, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Sweeps a 2D polygon along an arbitrary 3D path, appending the result to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSimpleSweptPolygon ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolygonVertices, const [TArray](API\Runtime\Core\Containers\TArray)< FVector > & SweepPath, bool bLoop, bool bCapped, float StartScale, float EndScale, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D sphere triangulated using box topology to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSphereBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float Radius, int32 StepsX, int32 StepsY, int32 StepsZ, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Revolves a 2D polygon on a helical path, like one used to create a vertical spiral, appending the result to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSpiralRevolvePolygon ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolygonVertices, [FGeometryScriptRevolveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptRevolveOptions) RevolveOptions, float Radius, int Steps, float RisePerRevolution, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D Sphere triangulated using latitude/longitude topology to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSphereLatLong ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, float Radius, int32 StepsPhi, int32 StepsTheta, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Sweep the given 2D PolygonVertices along the SweepPath specified as a set of FTransforms If the 2D vertices are (U,V), then in the coordinate space of the FTransform, X points "along" the path, Y points "right" (U) and Z points "up" (V).

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSweepPolygon ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolygonVertices, const [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & SweepPath, bool bLoop, bool bCapped, float StartScale, float EndScale, float RotationAngleDeg, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Sweep the given 2D PolylineVertices along the SweepPath specified as a set of FTransforms If the 2D vertices are (U,V), then in the coordinate space of the FTransform, X points "along" the path, Y points "right" (U) and Z points "up" (V).

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendSweepPolyline ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolylineVertices, const [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & SweepPath, const [TArray](API\Runtime\Core\Containers\TArray)< float > & PolylineTexParamU, const [TArray](API\Runtime\Core\Containers\TArray)< float > & SweepPathTexParamV, bool bLoop, float StartScale, float EndScale, float RotationAngleDeg, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Appends a 3D torus (donut) or partial torus to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendTorus ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, [FGeometryScriptRevolveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptRevolveOptions) RevolveOptions, float MajorRadius, float MinorRadius, int32 MajorSteps, int32 MinorSteps, [EGeometryScriptPrimitiveOriginMode](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptP-_1) Origin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Generates triangulated Voronoi Cells from the provided Voronoi Sites, identifying each with PolyGroups, and appends to the Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendVoronoiDiagram2D ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & VoronoiSites, [FGeometryScriptVoronoiOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVoronoiOptions) VoronoiOptions, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Returns the unique UV element IDs and values associated with the mesh vertex, in the specified UV Channel. If the Vertex or UV channel does not exist, the arrays will be empty and bHaveValidUVs will be set to false.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetAllSplitUVsAtVertex ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 UVSetIndex, int32 VertexID, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & ElementIDs, [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & ElementUVs, bool & bHaveValidUVs )


description: Returns anIndexList of all Triangle IDs in a mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetAllTriangleIDs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & TriangleIDList, bool & bHasTriangleIDGaps )


description: Compute the barycentric coordinates (A,B,C) of the Point relative to the specified TriangleID of the TargetMesh. The properties of barycentric coordinates are such that A,B,C are all positive, A+B+C=1.0, and A*Vertex1 + B*Vertex2 + C*Vertex3 = Point. So, the barycentric coordinates can be used to smoothly interpolate/blend any other per-triangle-vertex quantities. The Point must lie in the plane of the Triangle, otherwise the coordinates are somewhat meaningless (but clamped to 0-1 range to avoid catastrophic errors) The Positions of the Triangle Vertices are also returned for convenience (similar to GetTrianglePositions)

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeTriangleBarycentricCoords ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, bool & bIsValidTriangle, FVector Point, FVector & Vertex1, FVector & Vertex2, FVector & Vertex3, FVector & BarycentricCoords )


description: Returns an IndexList of all Vertex IDs in mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetAllVertexIDs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & VertexIDList, bool & bHasVertexIDGaps )


description: Returns a TriangleList of all Triangle Vertex ID triplets in a mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetAllTriangleIndices ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptTriangleList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptTriangleList) & TriangleList, bool bSkipGaps, bool & bHasTriangleIDGaps )


description: Appends a Triangulated Polygon to the Target Mesh. Polygon should be oriented counter-clockwise to produce a correctly-oriented shape, otherwise it will be inside-out Polygon endpoint is not repeated.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AppendTriangulatedPolygon ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPrimitiveOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPrimitiveOptions) PrimitiveOptions, FTransform Transform, const [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & PolygonVertices, bool bAllowSelfIntersections, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Returns a Vector List of all the mesh vertex 3D positions (possibly large!).

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetAllVertexPositions ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptVectorList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptVectorList) & PositionList, bool bSkipGaps, bool & bHasVertexIDGaps )


description: Material Queries Returns true if the mesh has Material IDs available/enabled.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetHasMaterialIDs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Polygroup Queries Returns true if the mesh has a standard PolyGroup Layer.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod, DisplayName="GetHasPolyGroups")) static bool GetHasPolygroups ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Returns true if there are gaps in the Triangle ID list, such that Get Num Triangle IDs is greater than Get Triangle Count.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetHasTriangleIDGaps ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description:
Normal queries
true if the TargetMesh has the Normals Attribute enabled (which allows for storing split normals)

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetHasTriangleNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Returns true if there are gaps in the Vertex ID list. For example, Get Number of Vertex IDs is greater than Get Vertex Count.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetHasVertexIDGaps ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description:
Vertex Color Queries
true if the TargetMesh has the Vertex Colors attribute enabled

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetHasVertexColors ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Compute the interpolated Position (A*Vertex1 + B*Vertex2 + C*Vertex3), where (A,B,C)=BarycentricCoords and the Vertex positions are taken from the specified TriangleID of the TargetMesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetInterpolatedTrianglePosition ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, FVector BarycentricCoords, bool & bIsValidTriangle, FVector & InterpolatedPosition )


description: Compute the interpolated UV (A*UV1+ B*UV2+ C*UV3), where (A,B,C)=BarycentricCoords and the UV positions are taken from the specified TriangleID in the specified UVSet of the TargetMesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetInterpolatedTriangleUV ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 UVSetIndex, int32 TriangleID, FVector BarycentricCoords, bool & bTriHasValidUVs, FVector2D & InterpolatedUV )


description: Compute the interpolated Normal (A*Normal1 + B*Normal2 + C*Normal3), where (A,B,C)=BarycentricCoords and the Normals are taken from the specified TriangleID in the Normal layer of the TargetMesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetInterpolatedTriangleNormal ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, FVector BarycentricCoords, bool & bTriHasValidNormals, FVector & InterpolatedNormal )


description: Returns true if the mesh is closed, such as no topological boundary edges.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetIsClosedMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Compute the interpolated Normal and Tangents for the specified specified TriangleID in the Normal and Tangent attributes of the TargetMesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetInterpolatedTriangleNormalTangents ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, FVector BarycentricCoords, bool & bTriHasValidElements, FVector & InterpolatedNormal, FVector & InterpolatedTangent, FVector & InterpolatedBiTangent )


description: Returns true if the mesh is dense. For example, no gaps in Vertex IDs or Triangle IDs. Note if a mesh is not dense, the Compact Mesh node can be used to removed the gaps.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetIsDenseMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Compute the interpolated Vertex Color (A*Color1 + B*Color2 + C*Color3), where (A,B,C)=BarycentricCoords and the Colors are taken from the specified TriangleID in the Vertex Color layer of the TargetMesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetInterpolatedTriangleVertexColor ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, FVector BarycentricCoords, [FLinearColor](API\Runtime\Core\Math\FLinearColor) DefaultColor, bool & bTriHasValidVertexColors, [FLinearColor](API\Runtime\Core\Math\FLinearColor) & InterpolatedColor )


description: Computes the bounding box of the mesh vertices in the local space of the mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static FBox GetMeshBoundingBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Returns true if the Target Mesh has attributes enabled.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool GetMeshHasAttributeSet ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Computes the volume and area of the mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static void GetMeshVolumeArea ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, float & SurfaceArea, float & Volume )


description: Returns information about the Target Mesh, such as the vertex and triangle count as well as some attribute information.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static [FString](API\Runtime\Core\Containers\FString) GetMeshInfoString ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Computes the volume, area and center-of-mass of the mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static void GetMeshVolumeAreaCenter ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, float & SurfaceArea, float & Volume, FVector & CenterOfMass )


description: Returns the count of extended PolyGroup Layers.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod, DisplayName="GetNumExtendedPolyGroupLayers")) static int GetNumExtendedPolygroupLayers ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Returns the number of open border loops, such as "holes" in the mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static int32 GetNumOpenBorderLoops ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, bool & bAmbiguousTopologyFound )


description: Returns the number of separate connected components in the mesh, such as "triangle patches" internally connected by shared edges.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static int32 GetNumConnectedComponents ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Returns the number of topological boundary edges in the mesh, i.e counts edges that only have one adjacent triangle.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static int32 GetNumOpenBorderEdges ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: UV Queries Gets the number of UV Channels on the Target Mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod), DisplayName="Get Num UV Channels") static int32 GetNumUVSets ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Gets the number of Vertex IDs in the mesh, which may be larger than the Vertex Count, if the mesh is not dense (e.g. after deleting vertices).

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static int32 GetNumVertexIDs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static FVector GetTriangleFaceNormal ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, bool & bIsValidTriangle )


description: Returns the Vertex ID triplet for the specified Triangle.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static FIntVector GetTriangleIndices ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, bool & bIsValidTriangle )


description: For the specified TriangleID of the Target Mesh, get the Normal vectors at each vertex of the Triangle. These Normals will be taken from the Normal Overlay, i.e. they will potentially be split-normals.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetTriangleNormals ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, FVector & Normal1, FVector & Normal2, FVector & Normal3, bool & bTriHasValidNormals )


description: For the specified Triangle ID of the TargetMesh, get the Normal and Tangent vectors at each vertex of the Triangle. These Normals/Tangents will be taken from the Normal and Tangents Overlays, i.e. they will potentially be split-normals.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetTriangleNormalTangents ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, bool & bTriHasValidElements, [FGeometryScriptTriangle](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptTriangle) & Normals, [FGeometryScriptTriangle](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptTriangle) & Tangents, [FGeometryScriptTriangle](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptTriangle) & BiTangents )


description: Returns the 3D positions (in the mesh local space) of the three vertices of the requested triangle. If the Triangle ID is not an element of the Target Mesh, all three vertices will be returned as (0, 0, 0) and bIsValidTriangle will be set to false.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static void GetTrianglePositions ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, bool & bIsValidTriangle, FVector & Vertex1, FVector & Vertex2, FVector & Vertex3 )


description: Static UPARAM(DisplayName = "Triangle Count") int32 GetTriangleCount( UDynamicMesh* TargetMesh ); Gets the number of Triangle IDs in the mesh. This may be larger than the Triangle Count if the mesh is not dense, even after deleting triangles.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static int32 GetNumTriangleIDs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Returns the UV values associated with the three vertices of the triangle in the specified UV Channel. If the Triangle does not exist in the mesh or if no UVs are set in the specified UV Channel for the triangle, the resulting values will be (0,0) and bHaveValidUVs will be set to false.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static void GetTriangleUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 UVSetIndex, int32 TriangleID, FVector2D & UV1, FVector2D & UV2, FVector2D & UV3, bool & bHaveValidUVs )


description: For the specified TriangleID of the TargetMesh, get the Vertex Colors at each vertex of the Triangle. These Colors will be taken from the Vertex Color Attribute, ie they will potentially be split-colors.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetTriangleVertexColors ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID, [FLinearColor](API\Runtime\Core\Math\FLinearColor) & Color1, [FLinearColor](API\Runtime\Core\Math\FLinearColor) & Color2, [FLinearColor](API\Runtime\Core\Math\FLinearColor) & Color3, bool & bTriHasValidVertexColors )


description: Gets the 2D bounding box of all UVs in the UV Channel. If the UV Channel does not exist, or if the UV Channel is empty, the resulting box will be invalid.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static FBox2D GetUVSetBoundingBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, bool & bIsValidUVSet, bool & bUVSetIsEmpty )


description: Return array of Triangle IDs connected to the given VertexID, ie the triangle one-ring

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetVertexConnectedTriangles ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 VertexID, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles )


description: Return array of Vertex IDs connected via a mesh edge to the given VertexID, ie the vertex one-ring

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetVertexConnectedVertices ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 VertexID, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Vertices )


description: Gets the number of vertices in the mesh. Note this may be less than the number of Vertex IDs used as some vertices may have been deleted.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static int32 GetVertexCount ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh )


description: Gets the 3D position of a mesh vertex in the mesh local space, by Vertex ID.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static FVector GetVertexPosition ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 VertexID, bool & bIsValidVertex )


description: Returns true if Vertex ID refers to a valid vertex in the Target Mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool IsValidVertexID ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 VertexID )


description: Returns true if Triangle ID refers to a valid Triangle in the Target Mesh.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="GeometryScript|MeshQueries", Meta=(ScriptMethod)) static bool IsValidTriangleID ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleID )


description: Compacts the mesh's vertices and triangles to remove any "holes" in the Vertex ID or Triangle ID lists.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CompactMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Tries to fill all open boundary loops (such as holes in the geometry surface) of a mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * FillAllMeshHoles ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptFillHolesOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptFillHolesOptions) FillOptions, int32 & NumFilledHoles, int32 & NumFailedHoleFills, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Removes any triangles in the mesh that are not visible from the exterior view, under various definitions of "visible" and "outside" as specified by the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RemoveHiddenTriangles ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptRemoveHiddenTrianglesOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptR-_1) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Removes connected components of the mesh that have a volume, area, or triangle count below a threshold as specified by the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RemoveSmallComponents ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptRemoveSmallComponentOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptR-_2) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Removes triangles that have area or edge length below specified amounts depending on the Options requested.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RepairMeshDegenerateGeometry ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptDegenerateTriangleOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptD-) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Attempts to resolve T-Junctions in the mesh by addition of vertices and welding.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ResolveMeshTJunctions ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptResolveTJunctionOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptR-_4) ResolveOptions, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Splits Bowties in the mesh and/or the attributes. A Bowtie is formed when a single vertex is connected to more than two boundary edges, and splitting duplicates the shared vertex so each triangle will have a unique copy.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SplitMeshBowties ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, bool bMeshBowties, bool bAttributeBowties, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Welds any open boundary edges of the mesh together if possible in order to remove "cracks."

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * WeldMeshEdges ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptWeldEdgesOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptWeldEdgesOptions) WeldOptions, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute a set of sample points lying on the surface of TargetMesh based on the provided sampling Options and NonUniformOptions. The sample points have radii in the range [Options.SamplingRadius, NonUniformOptions.MaxSamplingRadius], and are non-overlapping, ie the distance between two points is always larger than the sum of their respective radii.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeNonUniformPointSampling ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshPointSamplingOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptM-_10) Options, [FGeometryScriptNonUniformPointSamplingOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptN-) NonUniformOptions, [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & Samples, [TArray](API\Runtime\Core\Containers\TArray)< double > & SampleRadii, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & TriangleIDs, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute a set of sample points lying on the surface of TargetMesh based on the provided sampling Options. Samples are approximately uniformly distributed, and non-overlapping relative to the provided Options.SamplingRadius, ie the distance between any pair of samples if >= 2*SamplingRadius.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputePointSampling ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshPointSamplingOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptM-_10) Options, [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & Samples, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & TriangleIDs, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeVertexWeightedPointSampling ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshPointSamplingOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptM-_10) Options, [FGeometryScriptNonUniformPointSamplingOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptN-) NonUniformOptions, [FGeometryScriptScalarList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptScalarList) VertexWeights, [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & Samples, [TArray](API\Runtime\Core\Containers\TArray)< double > & SampleRadii, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & TriangleIDs, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute the Convex Hull of a given Mesh, or part of the mesh if an optional Selection is provided

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeMeshConvexHull ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyToMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) *& CopyToMeshOut, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptConvexHullOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptConvexHullOptions) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: this function can be quite expensive, and the results are expected to change in the future as the Convex Decomposition algorithm is improved

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeMeshConvexDecomposition ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyToMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) *& CopyToMeshOut, [FGeometryScriptConvexDecompositionOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptC-_3) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute the Swept Hull of a given Mesh for a given 3D Plane defined by ProjectionFrame. The Swept Hull is a linear sweep of the 2D convex hull of the mesh vertices projected onto the plane (the sweep precisely contains the mesh extents along the plane normal)

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeMeshSweptHull ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyToMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) *& CopyToMeshOut, FTransform ProjectionFrame, [FGeometryScriptSweptHullOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptSweptHullOptions) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Combine two Mesh Selections into a new Mesh Selection. The two inputs SelectionA and SelectionB must have the same Type.


description: Create a Mesh Selection from the IndexArray.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertIndexArrayToMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & IndexArray, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection )


description: Create a Mesh Selection from theIndexList. For cases where the IndexList Type does not match the SelectionType, ConvertMeshSelection with bAllowPartialInclusion=true is used to convert.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertIndexListToMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) IndexList, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection )


description: Create a Mesh Selection from the IndexSet.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertIndexSetToMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [TSet](API\Runtime\Core\Containers\TSet)< int32 > & IndexSet, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection )


description: Convert a Mesh Selection to a different Type (eg Vertices to Triangles, etc)Bydefault, Vertices map to Triangle one-rings, and Triangles to all contained vertices. If bAllowPartialInclusion is disabled, then more restrictive conversions are performed, as follows: For To-Vertices, only include vertices where all one-ring triangles are included in FromSelection. For To-Triangles, only include triangles where all tri vertices are included in FromSelection. For To-PolyGroups, only include groups where all group triangles are included in FromSelection

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) FromSelection, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & ToSelection, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) NewType, bool bAllowPartialInclusion )


description: Convert a Mesh Selection to anIndexArray

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertMeshSelectionToIndexArray ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & IndexArray, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) & SelectionType )


description: Convert a Mesh Selection to anIndexList

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ConvertMeshSelectionToIndexList ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) & IndexList, [EGeometryScriptIndexType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptIndexType) & ResultListType, [EGeometryScriptIndexType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptIndexType) ConvertToType )


description: Create a Selection of the given SelectionType that contains all the mesh elements of TargetMesh

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CreateSelectAllMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType )


description: Print information about the Mesh Selection to the Output Log

code: static void DebugPrintMeshSelection ( [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, bool bDisable )


description: Grow or Shrink the Selection on the TargetMesh to connected neighbours. For Vertex selections, Expand includes vertices in one-ring of selected vertices, and Contract removes any vertices with a one-ring neighbour that is not selected For Triangle selections, Add/Remove Triangles connected to selected Triangles For PolyGroup selections, Add/Remove PolyGroups connected to selected PolyGroups

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ExpandContractMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & NewSelection, int32 Iterations, bool bContract, bool bOnlyExpandToFaceNeighbours )


description: Expand the Selection on the TargetMesh to connected regions and return the NewSelection

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ExpandMeshSelectionToConnected ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & NewSelection, [EGeometryScriptTopologyConnectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptT-) ConnectionType )


description: Query information about a Mesh Selection

code: static void GetMeshSelectionInfo ( [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) & SelectionType, int & NumSelected )


description: Invert the Selection on the TargetMesh, ie select what is not currently selected

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * InvertMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & NewSelection, bool bOnlyToConnected )


description: Create a new Mesh Selection of the SelectionType for the TargetMesh by finding all elements contained in the Sphere.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectMeshElementsInSphere ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, FVector SphereOrigin, double SphereRadius, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, bool bInvert, int MinNumTrianglePoints )


description: Create a new Mesh Selection of the SelectionType for the TargetMesh by finding all elements on the "positive" side of a Plane

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectMeshElementsWithPlane ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, FVector PlaneOrigin, FVector PlaneNormal, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, bool bInvert, int MinNumTrianglePoints )


description: Create a new Mesh Selection of the SelectionType for the TargetMesh by finding all elements that have a normal vector that is within an angular deviation threshold from the given Normal. For Triangle and PolyGroup selections the triangle facet normal is used, for Vertex selections the per-vertex averaged normal is used.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectMeshElementsByNormalAngle ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, FVector Normal, double MaxAngleDeg, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, bool bInvert, int MinNumTrianglePoints )


description: Create a new Mesh Selection of the SelectionType for the TargetMesh by finding all elements inside a second SelectionMesh For Triangle and PolyGroup selections the triangle facet normal is used, for Vertex selections the per-vertex averaged normal is used.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectMeshElementsInsideMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectionMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, FTransform SelectionMeshTransform, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, bool bInvert, double ShellDistance, double WindingThreshold, int MinNumTrianglePoints )


description: Get the 3D Bounding Box of a Mesh Selection, ie bounding box of vertices contained in the Selection

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetMeshSelectionBoundingBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, FBox & SelectionBounds, bool & bIsEmpty, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute the set of Vertex Loops bordering a Mesh Selection. Both the 3D polylines and lists of vertex indices are returned for each Loop. Note that for a Vertex selection this will function return the border loops around the set of vertex triangle one-rings.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetMeshSelectionBoundaryLoops ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [TArray](API\Runtime\Core\Containers\TArray)< [FGeometryScriptIndexList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptIndexList) > & IndexLoops, [TArray](API\Runtime\Core\Containers\TArray)< [FGeometryScriptPolyPath](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptPolyPath) > & PathLoops, int & NumLoops, bool & bFoundErrors, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Simplifies planar areas of the mesh that have more triangles than necessary. Note that it does not change the 3D shape of the mesh. Planar regions are identified by comparison of face normals using a Angle Threshold in the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplySimplifyToPlanar ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPlanarSimplifyOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptP-_3) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Create a new Mesh Selection of the SelectionType for the TargetMesh by finding all elements contained in the Box.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectMeshElementsInBox ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, FBox Box, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, bool bInvert, int MinNumTrianglePoints )


description: Simplifies the mesh down to the PolyGroup Topology. For example, the high-level faces of the mesh PolyGroups. Another example would be on a default Box-Sphere where simplifying to PolyGroup topology produces a box.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplySimplifyToPolygroupTopology ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPolygroupSimplifyOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptP-_7) Options, [FGeometryScriptGroupLayer](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptGroupLayer) GroupLayer, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Simplifies the mesh until a target triangle count is reached. Behavior can be additionally controlled with the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplySimplifyToTriangleCount ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 TriangleCount, [FGeometryScriptSimplifyMeshOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_3) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Simplifies the mesh to a target geometric tolerance. Stops when any further simplification would result in a deviation from the input mesh larger than the tolerance. Behavior can be additionally controlled with the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplySimplifyToTolerance ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, float Tolerance, [FGeometryScriptSimplifyMeshOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_3) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Simplifies the mesh until a target vertex count is reached. Behavior can be additionally controlled with the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplySimplifyToVertexCount ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int32 VertexCount, [FGeometryScriptSimplifyMeshOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_3) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Builds a Bounding Volume Hierarchy (BVH) object for a mesh that can be used with multiple spatial queries.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * BuildBVHForMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & OutputBVH, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Finds the nearest point (Nearest Result) on the Target Mesh to a given 3D point (Query Point) by using the Query BVH.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * FindNearestPointOnMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & QueryBVH, FVector QueryPoint, [FGeometryScriptSpatialQueryOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_5) Options, [FGeometryScriptTrianglePoint](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptTrianglePoint) & NearestResult, [EGeometryScriptSearchOutcomePins](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptSearchOutcomePins) & Outcome, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Finds the nearest intersection of a 3D ray with the mesh by using the Query BVH. Note, depending on the Ray Origin and Ray Direction, there is the possibility that the ray might not intersect with the Target Mesh. Should the ray miss, the HitResult.bHit will be false and the Outcome will be Not Found.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * FindNearestRayIntersectionWithMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & QueryBVH, FVector RayOrigin, FVector RayDirection, [FGeometryScriptSpatialQueryOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_5) Options, [FGeometryScriptRayHitResult](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptRayHitResult) & HitResult, [EGeometryScriptSearchOutcomePins](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptSearchOutcomePins) & Outcome, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Checks if the provided Bounding Volume Hierarchy (BVH) can still be used with the Mesh — it generally returns false if the mesh has been changed.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * IsBVHValidForMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & TestBVH, bool & bIsValid, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Tests if a point is inside the mesh using the Fast Winding Number query and data stored in the BVH.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * IsPointInsideMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & QueryBVH, FVector QueryPoint, [FGeometryScriptSpatialQueryOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_5) Options, bool & bIsInside, [EGeometryScriptContainmentOutcomePins](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptC-_2) & Outcome, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Reset the Bounding Volume Hierarchy (BVH) by clearing all the internal data.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="GeometryScript|Spatial", Meta=(ScriptMethod)) static void ResetBVH ( [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & ResetBVH )


description: Create Mesh Selection of mesh elements in TargetMesh contained by QueryBox, using QueryBVH to accellerate the computation. Triangles are selected if MinNumTrianglePoints or more vertices are inside the box. PolyGroups are selected if any of their triangles are inside the box

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SelectMeshElementsInBoxWithBVH ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, const [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & QueryBVH, FBox QueryBox, [FGeometryScriptSpatialQueryOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_5) Options, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) & Selection, [EGeometryScriptMeshSelectionType](API\Plugins\GeometryScriptingCore\GeometryScript\EGeometryScriptMeshSelectionType) SelectionType, int MinNumTrianglePoints, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Apply PN Tessellation to the Target Mesh as controlled by the Tessellation Level and the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplyPNTessellation ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptPNTessellateOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptP-_4) Options, int TessellationLevel, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Selectively Tessellate a Selection of the Target Mesh or possibly the entire mesh as controlled by the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplySelectiveTessellation ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [FGeometryScriptSelectiveTessellateOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptS-_1) Options, int TessellationLevel, [ESelectiveTessellatePatternType](API\Plugins\GeometryScriptingCore\GeometryScript\ESelectiveTessellatePatternType) PatternType, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Apply Uniform Tessellation to the Target Mesh as controlled by the Tessellation Level and the Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ApplyUniformTessellation ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int TessellationLevel, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Rotates the mesh relative to the specified Rotation Origin.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RotateMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, FRotator Rotation, FVector RotationOrigin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Rebuilds the Bounding Volume Hierarchy (BVH) for the mesh in-place, which can reduce memory allocations, compared to building a new BVH.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RebuildBVHForMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptDynamicMeshBVH](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptDynamicMeshBVH) & UpdateBVH, bool bOnlyIfInvalid, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Rotates the selected part of the mesh relative to the specified Rotation Origin.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RotateMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, FRotator Rotation, FVector RotationOrigin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Applies the provided Scale transformation relative to the Scale Origin to the vertices of a Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ScaleMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, FVector Scale, FVector ScaleOrigin, bool bFixOrientationForNegativeScale, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Applies the given Scale transform relative to the Scale Origin to the selection part of the mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ScaleMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, FVector Scale, FVector ScaleOrigin, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Applies the provided Transform to the vertices of a Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TransformMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, FTransform Transform, bool bFixOrientationForNegativeScale, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Applies the given Transform to the vertices identified by the Selection of the mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TransformMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, FTransform Transform, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Applies the provided Translation to the vertices of a Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TranslateMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, FVector Translation, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Set the Pivot Location for the Mesh. Since the Pivot of a Mesh object is always the point at (0,0,0), this function simply translates the mesh by -PivotLocation.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TranslatePivotToLocation ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, FVector PivotLocation, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Computes new UVs for the specified UV Channel using PatchBuilder method in the Options, and optionally packs.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AutoGeneratePatchBuilderMeshUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, [FGeometryScriptPatchBuilderOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptP-) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Computes new UVs for the specified UV Channel using XAtlas, and optionally packs.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * AutoGenerateXAtlasMeshUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, [FGeometryScriptXAtlasOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptXAtlasOptions) Options, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute local UV parameterization on TargetMesh vertices around the given CenterPoint / Triangle. This method uses a Discrete Exponential Map parameterization, which unwraps the mesh locally based on geodesic distances and angles. The CenterPoint will have UV value (0,0), and the computed vertex UVs will be such thatLength(UV)== geodesic distance.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ComputeMeshLocalUVParam ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, FVector CenterPoint, int32 CenterPointTriangleID, [TArray](API\Runtime\Core\Containers\TArray)< int > & VertexIDs, [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & VertexUVs, double Radius, bool bUseInterpolatedNormal, FVector TangentYDirection, double UVRotationDeg, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Applies the given Translation to the vertices identified by the Selection of the mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TranslateMeshSelection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, FVector Translation, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: bOnlyUVPositions controls whether only UV positions will be updated, or if the UV topology will be fully replaced. When false, CopyFromUVMesh must currently have a MaxVertexID <= that of the UV Channel MaxElementID When true, CopyFromUVMesh must currently have a MaxTriangleID <= that of CopyToMesh

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyMeshToMeshUVLayer ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyFromUVMesh, int ToUVSetIndex, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyToMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) *& CopyToMeshOut, bool & bFoundTopologyErrors, bool & bIsValidUVSet, bool bOnlyUVPositions, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: CopyMeshToMeshUVChannel will copy the 3D UV Mesh back to the UV Channel. This pair of functions can then be used to implement UV generation/editing via other mesh functions.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyMeshUVLayerToMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyFromMesh, int UVSetIndex, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyToUVMesh, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) *& CopyToUVMeshOut, bool & bInvalidTopology, bool & bIsValidUVSet, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Copy the data in one UV Channel to another UV Channel on the same Target Mesh.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * CopyUVSet ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int FromUVSet, int ToUVSet, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Get a list of single vertex UVs for each mesh vertex in the TargetMesh, derived from the specified UV Channel. The UV Channel may store multiple UVs for a single vertex (along UV seams) In such cases an arbitrary UV will be stored for that vertex, and bHasSplitUVs will be returned as true

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetMeshPerVertexUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, [FGeometryScriptUVList](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptUVList) & UVList, bool & bIsValidUVSet, bool & bHasVertexIDGaps, bool & bHasSplitUVs, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Compute information about dimensions and areas for a UV Set of a Mesh, with an optional Mesh Selection

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetMeshUVSizeInfo ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, double & MeshArea, double & UVArea, FBox & MeshBounds, FBox2D & UVBounds, bool & bIsValidUVSet, bool & bFoundUnsetUVs, bool bOnlyIncludeValidUVTris, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Recomputes UVs in the UV Channel for a Mesh based on different types of well-defined UV islands, such as existing UV islands, PolyGroups, or a subset of the mesh based on a non-empty Selection.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RecomputeMeshUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, [FGeometryScriptRecomputeUVsOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptR-) Options, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Packs the existing UV islands in the specified UV Channel into standard UV space based on the Repack Options.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RepackMeshUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, [FGeometryScriptRepackUVsOptions](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptRepackUVsOptions) RepackOptions, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Update all the selected UV values in the specified UV Channel by a rotation of Rotation Angle (in degrees) relative to the Rotation Origin. If the provided Selection is empty, the update is applied to the entire UV Channel.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * RotateMeshUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, float RotationAngle, FVector2D RotationOrigin, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Update all selected UV values in the specified UV Channel by Scale, mathematically the new value is given by (UV - ScaleOrigin) * Scale + ScaleOrigin If the provided Selection is empty, the update is applied to the entire UV Channel.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ScaleMeshUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, FVector2D Scale, FVector2D ScaleOrigin, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )


description: Sets the UVs of a mesh triangle in the given UV Channel.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetMeshTriangleUVs ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, int TriangleID, [FGeometryScriptUVTriangle](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptUVTriangle) UVs, bool & bIsValidTriangle, bool bDeferChangeNotifications )


description: Using Box Projection, update the UVs in the UV Channel for an entire mesh or a subset defined by a non-empty Selection.

code: static [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * SetMeshUVsFromBoxProjection ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, int UVSetIndex, FTransform BoxTransform, [FGeometryScriptMeshSelection](API\Plugins\GeometryScriptingCore\GeometryScript\FGeometryScriptMeshSelection) Selection, int MinIslandTriCount, [UGeometryScriptDebug](API\Plugins\GeometryScriptingCore\GeometryScript\UGeometryScriptDebug) * Debug )