33template <
class TriangleMeshType>
213 float sign = FMath::Sign(f);
280 float At(
int I,
int J,
int K)
const
307 double invdx = 1.0 / DX;
314 [
this, &Origin, &DX, &
NI, &
NJ, &
NK,
317 if (TID % 100 == 0 && CancelF() == true)
349 for (
int K = k0; K <= k1; ++K)
351 for (
int J =
j0; J <=
j1; ++J)
354 if (
PointInTriangle2d(J, K,
fjp,
fkp,
fjq,
fkq,
fjr,
fkr,
A,
B,
C))
395 int32 total_count = 0;
396 for (
int I = 0; I <
NI; ++I) {
399 (InsideMode == EInsideModes::WindingCount && total_count > 0) ||
400 (InsideMode == EInsideModes::CrossingCount && total_count % 2 == 1)
403 Distances.At(I, J, K) = -Distances.At(I, J, K);
411 for (
int K = 0; K <
NK; ++K)
418 for (
int J = 0; J <
NJ; ++J)
421 for (
int I = 0; I <
NI; ++I)
425 (InsideMode == EInsideModes::WindingCount && total_count > 0) ||
426 (InsideMode == EInsideModes::CrossingCount && total_count % 2 == 1)
429 Distances.At(I, J, K) = -Distances.At(I, J, K);
448 else if (Y2 > Y1)
return 1;
449 else if (Y2 < Y1)
return -1;
450 else if (X1 > X2)
return 1;
451 else if (X1 < X2)
return -1;
459 double X1,
double Y1,
double X2,
double Y2,
double X3,
double Y3,
460 double&
A,
double&
B,
double&
C)
466 if (
signa == 0)
return false;
474 checkf(
sum != 0,
TEXT(
"TCachingMeshSDF::PointInTriangle2d: impossible config?"));
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
void ParallelFor(int32 Num, TFunctionRef< void(int32)> Body, bool bForceSingleThread, bool bPumpRenderingThread=false)
Definition ParallelFor.h:481
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
UE::Math::TVector< double > FVector3d
Definition MathFwd.h:60
const bool
Definition NetworkReplayStreaming.h:178
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
if(Failed) console_printf("Failed.\n")
Definition AndroidPlatformMisc.h:14
static RealType Sqrt(const RealType Value)
Definition MathUtil.h:342
Definition CachingMeshSDF.h:35
float GetValue(FVector3i Idx)
Definition CachingMeshSDF.h:206
bool bWantIntersectionsGrid
Definition CachingMeshSDF.h:78
bool bWantClosestTriGrid
Definition CachingMeshSDF.h:75
float UpperBoundDistance
Definition CachingMeshSDF.h:108
TTriLinearGridInterpolant< TCachingMeshSDF > MakeInterpolant()
Definition CachingMeshSDF.h:239
FDenseGrid3i ClosestTriGrid
Definition CachingMeshSDF.h:88
TCachingMeshSDF(const TriangleMeshType *MeshIn, float CellSizeIn, const TMeshAABBTree3< TriangleMeshType > *SpatialIn, bool bAutoBuild)
Definition CachingMeshSDF.h:95
FDenseGrid3f Grid
Definition CachingMeshSDF.h:87
float At(int I, int J, int K) const
Definition CachingMeshSDF.h:280
FVector3f CellCenter(int I, int J, int K)
Definition CachingMeshSDF.h:290
const FVector3f & GetGridOrigin() const
Definition CachingMeshSDF.h:262
FVector3d ExpandBounds
Definition CachingMeshSDF.h:46
const TMeshAABBTree3< TriangleMeshType > * Spatial
Definition CachingMeshSDF.h:41
static int Orientation(double X1, double Y1, double X2, double Y2, double &TwiceSignedArea)
Definition CachingMeshSDF.h:443
EInsideModes InsideMode
Definition CachingMeshSDF.h:71
TFunction< bool(void)> CancelF
Definition CachingMeshSDF.h:81
bool Validate()
Definition CachingMeshSDF.h:113
void CleanupUnwanted()
Definition CachingMeshSDF.h:197
FVector3f GridOrigin
Definition CachingMeshSDF.h:86
float CellSize
Definition CachingMeshSDF.h:42
bool bComputeSigns
Definition CachingMeshSDF.h:55
const FDenseGrid3i & GetClosestTriGrid() const
Definition CachingMeshSDF.h:268
void Initialize()
Definition CachingMeshSDF.h:132
double MaxDistQueryDist
Definition CachingMeshSDF.h:109
const FDenseGrid3f & GetGrid() const
Definition CachingMeshSDF.h:254
float MaxOffsetDistance
Definition CachingMeshSDF.h:49
const TriangleMeshType * Mesh
Definition CachingMeshSDF.h:40
FVector3i Dimensions()
Definition CachingMeshSDF.h:246
EInsideModes
Definition CachingMeshSDF.h:67
@ WindingCount
Definition CachingMeshSDF.h:69
@ CrossingCount
Definition CachingMeshSDF.h:68
FDenseGrid3i IntersectionsGrid
Definition CachingMeshSDF.h:89
bool bUseParallel
Definition CachingMeshSDF.h:52
const FDenseGrid3i & GetIntersectionsGrid() const
Definition CachingMeshSDF.h:274
int ApproxMaxCellsPerDimension
Definition CachingMeshSDF.h:58
static bool PointInTriangle2d(double X0, double Y0, double X1, double Y1, double X2, double Y2, double X3, double Y3, double &A, double &B, double &C)
Definition CachingMeshSDF.h:458
constexpr const float operator[](FVector3i Idx) const
Definition CachingMeshSDF.h:285
TCachingMeshSDF(float CellSizeIn=10)
Definition CachingMeshSDF.h:91
const FVector3i & GetDimensions() const
Definition DenseGrid3.h:56
void Assign(ElemType Value)
Definition DenseGrid3.h:73
constexpr ElemType & At(int I, int J, int K)
Definition DenseGrid3.h:115
void Resize(int DimX, int DimY, int DimZ, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition DenseGrid3.h:61
Definition MeshAABBTree3.h:61
Definition GridInterpolant.h:29
constexpr int InvalidID
Definition IndexTypes.h:13
void AtomicIncDec(FDenseGrid2i &Grid, int32 i, int32 j, bool bDecrement=false)
Definition DenseGrid2.h:207
TVector< RealType > NormalDirection(const TVector< RealType > &V0, const TVector< RealType > &V1, const TVector< RealType > &V2)
Definition VectorUtil.h:83
constexpr T MaxElement(const UE::Math::TVector< T > &Vector)
Definition VectorTypes.h:298
TDenseGrid3< int > FDenseGrid3i
Definition DenseGrid3.h:235
TDenseGrid3< float > FDenseGrid3f
Definition DenseGrid3.h:233
Definition AdvancedWidgetsModule.cpp:13
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static constexpr UE_FORCEINLINE_HINT T Min3(const T A, const T B, const T C)
Definition UnrealMathUtility.h:558
static constexpr UE_FORCEINLINE_HINT T Max3(const T A, const T B, const T C)
Definition UnrealMathUtility.h:551
Definition IntVectorTypes.h:252
TVector< RealType > Max
Definition BoxTypes.h:249
bool IsEmpty() const
Definition BoxTypes.h:613
RealType MaxDim() const
Definition BoxTypes.h:598
TVector< RealType > Min
Definition BoxTypes.h:248
static TVector< float > One()
Definition Vector.h:115
T Z
Definition Vector.h:68
static TVector< double > Zero()
Definition Vector.h:112
T Y
Definition Vector.h:65
T X
Definition Vector.h:62