UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GeomTools.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
7class UStaticMesh;
8
17
26
29{
34
36
38 : Pos(InPos), Color(255,255,255,255), UV(0.f, 0.f), bInteriorEdge(false)
39 {}
40
41 FUtilVertex2D(const FVector2D& InPos, const FColor& InColor)
42 : Pos(InPos), Color(InColor), UV(0.f, 0.f), bInteriorEdge(false)
43 {}
44};
45
52
59
62{
64};
65
76
98
112
123
124namespace FGeomTools
125{
128
131
134
137
142
145
148
151
154
157
159 ENGINE_API bool VectorsOnSameSide(const FVector3f& Vec, const FVector3f& A, const FVector3f& B, const float SameSideDotProductEpsilon = 0.0f );
160
162 ENGINE_API bool PointInTriangle(const FVector3f& A, const FVector3f& B, const FVector3f& C, const FVector3f& P, const float InsideTriangleDotProductEpsilon = 0.0f);
163
164};
165
166
168{
169public:
170 // Corrects the polygon winding to match bNegativeWinding
171 // Ie. If the vertex order doesn't match the winding, it is reversed
172 // Returns empty array of points if num points < 3
174
175 // Returns true if the points forming a polygon have CCW winding
176 // Returns true if the polygon isn't valid
177 static ENGINE_API bool IsPolygonWindingCCW(const TArray<FVector2D>& Points);
178 static ENGINE_API bool IsPolygonWindingCCW(const TArray<FIntPoint>& Points);
179
180 // Checks that these polygons can be successfully triangulated
181 static ENGINE_API bool ArePolygonsValid(const TArray<TArray<FVector2D>>& Polygons);
182
183 // Merge additive and subtractive polygons, split them up into additive polygons
184 // Assumes all polygons and overlapping polygons are valid, and the windings match the setting on the polygon
186
187 // Triangulate a polygon. Check notes in implementation
188 static ENGINE_API bool TriangulatePoly(TArray<FVector2D>& OutTris, const TArray<FVector2D>& PolygonVertices, bool bKeepColinearVertices = false);
189
190 // 2D version of RemoveRedundantTriangles from GeomTools
192
193 // Generate convex shapes
195
196 // Generate convex hull from points
198
199 // Returns true if TestPoint is inside the polygon defined by PolygonPoints
201};
202
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GeomTools.h:168
static ENGINE_API void GenerateConvexPolygonsFromTriangles(TArray< TArray< FVector2D > > &OutPolygons, const TArray< FVector2D > &InTriangles)
Definition GeomTools.cpp:1570
static ENGINE_API bool IsPointInPolygon(const FVector2D &TestPoint, const TArray< FVector2D > &PolygonPoints)
Definition GeomTools.cpp:1633
static ENGINE_API bool IsPolygonWindingCCW(const TArray< FVector2D > &Points)
Definition GeomTools.cpp:892
static ENGINE_API void RemoveRedundantTriangles(TArray< FVector2D > &OutTriangles, const TArray< FVector2D > &InTriangles)
Definition GeomTools.cpp:1522
static ENGINE_API void CorrectPolygonWinding(TArray< FVector2D > &OutVertices, const TArray< FVector2D > &Vertices, const bool bNegativeWinding)
Definition GeomTools.cpp:1279
static ENGINE_API bool TriangulatePoly(TArray< FVector2D > &OutTris, const TArray< FVector2D > &PolygonVertices, bool bKeepColinearVertices=false)
Definition GeomTools.cpp:1418
static ENGINE_API void GenerateConvexHullFromPoints(TArray< FVector2D > &OutConvexHull, TArray< FVector2D > &Points)
Definition GeomTools.cpp:1615
static ENGINE_API TArray< TArray< FVector2D > > ReducePolygons(const TArray< TArray< FVector2D > > &Polygons, const TArray< bool > &PolygonNegativeWinding)
Definition GeomTools.cpp:1184
static ENGINE_API bool ArePolygonsValid(const TArray< TArray< FVector2D > > &Polygons)
Definition GeomTools.cpp:1306
Definition Array.h:670
Definition StaticMesh.h:593
Definition GeomTools.h:125
ENGINE_API void Buid2DPolysFromEdges(TArray< FUtilPoly2D > &OutPolys, const TArray< FUtilEdge2D > &InEdges, const FColor &VertColor)
Definition GeomTools.cpp:287
ENGINE_API void Split2DPolysWithPlane(FUtilPoly2DSet &PolySet, const FPlane &Plane, const FColor &ExteriorVertColor, const FColor &InteriorVertColor)
Definition GeomTools.cpp:785
ENGINE_API void ProjectEdges(TArray< FUtilEdge2D > &Out2DEdges, FMatrix &ToWorld, const TArray< FUtilEdge3D > &In3DEdges, const FPlane &InPlane)
Definition GeomTools.cpp:177
ENGINE_API void GeneratePlanarTilingPolyUVs(FUtilPoly2D &Polygon, float TileSize)
Definition GeomTools.cpp:565
ENGINE_API void GetClippableStaticMeshTriangles(TArray< FClipSMTriangle > &OutClippableTriangles, const UStaticMesh *StaticMesh)
Definition GeomTools.cpp:69
ENGINE_API FClipSMPolygon Transform2DPolygonToSMPolygon(const FUtilPoly2D &InTri, const FMatrix &InMatrix)
Definition GeomTools.cpp:518
ENGINE_API void GeneratePlanarFitPolyUVs(FUtilPoly2D &Polygon)
Definition GeomTools.cpp:540
ENGINE_API bool VectorsOnSameSide(const FVector3f &Vec, const FVector3f &A, const FVector3f &B, const float SameSideDotProductEpsilon=0.0f)
Definition GeomTools.cpp:327
ENGINE_API void RemoveRedundantTriangles(TArray< FClipSMTriangle > &Tris)
Definition GeomTools.cpp:718
ENGINE_API void ClipMeshWithPlane(TArray< FClipSMTriangle > &OutTris, TArray< FUtilEdge3D > &OutClipEdges, const TArray< FClipSMTriangle > &InTriangles, const FPlane &Plane)
Definition GeomTools.cpp:104
ENGINE_API bool TriangulatePoly(TArray< FClipSMTriangle > &OutTris, const FClipSMPolygon &InPoly, bool bKeepColinearVertices=false)
Definition GeomTools.cpp:417
ENGINE_API bool PointInTriangle(const FVector3f &A, const FVector3f &B, const FVector3f &C, const FVector3f &P, const float InsideTriangleDotProductEpsilon=0.0f)
Definition GeomTools.cpp:336
@ false
Definition radaudio_common.h:23
Definition GeomTools.h:79
FMatrix UVGradient[8]
Definition GeomTools.h:90
FMatrix TangentZGradient
Definition GeomTools.h:89
FMatrix TangentYGradient
Definition GeomTools.h:88
int32 NumUVs
Definition GeomTools.h:82
FMatrix ColorGradient
Definition GeomTools.h:91
int32 MaterialIndex
Definition GeomTools.h:80
void CopyFace(const FClipSMFace &OtherFace)
Definition GeomTools.h:93
FVector FaceNormal
Definition GeomTools.h:85
bool bOverrideTangentBasis
Definition GeomTools.h:83
FMatrix TangentXGradient
Definition GeomTools.h:87
uint32 SmoothingMask
Definition GeomTools.h:81
Definition GeomTools.h:115
FClipSMPolygon(int32 Init)
Definition GeomTools.h:118
TArray< FClipSMVertex > Vertices
Definition GeomTools.h:116
Definition GeomTools.h:101
ENGINE_API void ComputeGradientsAndNormal()
Definition GeomTools.cpp:600
FClipSMTriangle(int32 Init)
Definition GeomTools.h:107
FClipSMVertex Vertices[3]
Definition GeomTools.h:102
Definition GeomTools.h:68
FVector2D UVs[8]
Definition GeomTools.h:73
FVector3f TangentY
Definition GeomTools.h:71
FVector3f TangentZ
Definition GeomTools.h:72
FVector3f TangentX
Definition GeomTools.h:70
FColor Color
Definition GeomTools.h:74
FVector3f Pos
Definition GeomTools.h:69
Definition Color.h:486
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition GeomTools.h:20
FVector2D V0
Definition GeomTools.h:22
FVector2D V1
Definition GeomTools.h:24
Definition GeomTools.h:11
FVector3f V1
Definition GeomTools.h:15
FVector3f V0
Definition GeomTools.h:13
Definition GeomTools.h:55
FMatrix PolyToWorld
Definition GeomTools.h:57
TArray< FUtilPoly2D > Polys
Definition GeomTools.h:56
Definition GeomTools.h:48
TArray< FUtilVertex2D > Verts
Definition GeomTools.h:50
Definition GeomTools.h:62
FUtilVertex2D Verts[3]
Definition GeomTools.h:63
Definition GeomTools.h:29
FUtilVertex2D(const FVector2D &InPos, const FColor &InColor)
Definition GeomTools.h:41
bool bInteriorEdge
Definition GeomTools.h:33
FUtilVertex2D(const FVector2D &InPos)
Definition GeomTools.h:37
FColor Color
Definition GeomTools.h:31
FVector2D Pos
Definition GeomTools.h:30
FVector2D UV
Definition GeomTools.h:32
FUtilVertex2D()
Definition GeomTools.h:35