33template <
class TriangleMeshType>
97 if (
ni >= 0 &&
nj >= 0 &&
nk >= 0)
122 constexpr const float&
At(
int I,
int J,
int K)
const
144 winding.Assign(FMathf::MaxReal);
175 int StartIdx =
ni * (J +
nj * K);
176 for (
int I = 0; I <
ni; ++I)
234 ParallelFor(
cur_front.Num(), [
this,
origin,
dx,
ni,
nj,
nk, &
winding, &
distances, &
bounds, &bits, &
cur_front, &queue, &
QueueSection, &
abort](
int FrontIdx)
236 if (FrontIdx % 100 == 0)
249 for (
int K = 0; K < 26; ++K) {
257 if (
val2 == FMathf::MaxReal) {
275 if (queue.Num() == 0)
286 for (
int idx : queue)
309 FastWinding->
Build(
false);
314 if (LinearIdx % 100 == 0)
330 void fill_spans(
int ni,
int nj,
int nk, FDenseGrid3f&
winding)
335 int StartIdx =
ni * (J +
nj * K);
336 float last =
winding[StartIdx];
337 if (last == FMathf::MaxReal)
341 for (
int I = 0; I <
ni; ++I) {
350 if (last < WindingIsoValue)
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::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
const bool
Definition NetworkReplayStreaming.h:178
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
if(Failed) console_printf("Failed.\n")
Definition ScopeLock.h:141
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void SetNumZeroed(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2340
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition AndroidPlatformMisc.h:14
const FVector3i & GetDimensions() const
Definition DenseGrid3.h:56
constexpr ElemType & At(int I, int J, int K)
Definition DenseGrid3.h:115
FAxisAlignedBox3i Bounds() const
Definition DenseGrid3.h:206
Definition FastWinding.h:316
double FastWindingNumber(const FVector3d &P)
Definition FastWinding.h:387
void Build(bool bForceRebuild=true)
Definition FastWinding.h:362
Definition MeshWindingNumberGrid.h:35
TFunction< bool()> CancelF
Definition MeshWindingNumberGrid.h:64
int BufferCells
Definition MeshWindingNumberGrid.h:44
FVector3f CellCenter(int I, int J, int K)
Definition MeshWindingNumberGrid.h:132
FVector3i Dimensions() const
Definition MeshWindingNumberGrid.h:117
float WindingIsoValue
Definition MeshWindingNumberGrid.h:57
EComputeModes
Definition MeshWindingNumberGrid.h:49
@ FullGrid
Definition MeshWindingNumberGrid.h:50
@ NarrowBand
Definition MeshWindingNumberGrid.h:51
bool bWantMeshSDFGrid
Definition MeshWindingNumberGrid.h:61
FDenseGrid3f WindingGrid
Definition MeshWindingNumberGrid.h:68
TSweepingMeshSDF< TriangleMeshType > MeshSDF
Definition MeshWindingNumberGrid.h:71
TFastWindingTree< TriangleMeshType > * FastWinding
Definition MeshWindingNumberGrid.h:38
EComputeModes ComputeMode
Definition MeshWindingNumberGrid.h:53
TMeshWindingNumberGrid(const TriangleMeshType *Mesh, TFastWindingTree< TriangleMeshType > *FastWinding, double CellSize)
Definition MeshWindingNumberGrid.h:74
float GetValue(const FVector3i &IJK) const
Definition MeshWindingNumberGrid.h:127
FVector3f GridOrigin
Definition MeshWindingNumberGrid.h:67
void Compute()
Definition MeshWindingNumberGrid.h:80
const TriangleMeshType * Mesh
Definition MeshWindingNumberGrid.h:37
double CellSize
Definition MeshWindingNumberGrid.h:41
constexpr const float & At(int I, int J, int K) const
Definition MeshWindingNumberGrid.h:122
Definition SweepingMeshSDF.h:46
GEOMETRYCORE_API const FVector3i GridOffsets26[26]
Definition IndexUtil.cpp:32
TDenseGrid3< float > FDenseGrid3f
Definition DenseGrid3.h:233
Definition AdvancedWidgetsModule.cpp:13
FVector3i Max
Definition IntBoxTypes.h:186
Definition IntVectorTypes.h:252
static FVector3i One()
Definition IntVectorTypes.h:330
static TVector< float > One()
Definition Vector.h:115
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
static TVector< T > Max(const TVector< T > &A, const TVector< T > &B)
Definition Vector.h:2506
static TVector< T > Min(const TVector< T > &A, const TVector< T > &B)
Definition Vector.h:2496
T X
Definition Vector.h:62