41template<
class Po
intSetType>
98 for (
int32 j = 0; j < 3; ++j)
176 return (Node !=
nullptr && Node->
bFrozen);
189 Points.
Add(Node.PointID);
267 return PointSet->GetVertex(PointID);
277 else if constexpr (std::is_same_v<PointSetType, FDynamicMesh3>)
283 ensureMsgf(
false,
TEXT(
"Local parameterization requires vertex normals!"));
333 check(Node !=
nullptr);
413 check(ParentNode !=
nullptr);
425 check(ParentNode !=
nullptr);
465 if (bCreateIfMissing)
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
D3D12_DESCRIPTOR_HEAP_TYPE Translate(ERHIDescriptorHeapType InHeapType)
Definition D3D12Descriptors.h:19
UE::Math::TVector2< double > FVector2d
Definition MathFwd.h:61
UE::Math::TVector< double > FVector3d
Definition MathFwd.h:60
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition MathUtil.h:150
static RealType Max(const RealType A, const RealType B)
Definition MathUtil.h:246
static RealType Sqrt(const RealType Value)
Definition MathUtil.h:342
Definition IndexPriorityQueue.h:22
bool Contains(int NodeID) const
Definition IndexPriorityQueue.h:106
void Clear(bool bFreeMemory=true)
Definition IndexPriorityQueue.h:79
int GetCount() const
Definition IndexPriorityQueue.h:88
void Insert(int NodeID, float priority)
Definition IndexPriorityQueue.h:121
void Update(int NodeID, float Priority)
Definition IndexPriorityQueue.h:172
void Initialize(int MaxNodeID)
Definition IndexPriorityQueue.h:67
int Dequeue()
Definition IndexPriorityQueue.h:142
static GEOMETRYCORE_API FVector3d ComputeVertexNormal(const FDynamicMesh3 &Mesh, int VertIdx, bool bWeightByArea=true, bool bWeightByAngle=true)
Definition MeshNormals.cpp:532
Definition DynamicVector.h:27
void Add(const Type &Data)
Definition DynamicVector.h:662
size_t Num() const
Definition DynamicVector.h:147
void Clear()
Definition DynamicVector.h:578
Definition MeshLocalParam.h:43
void ApplyUVs(TFunctionRef< void(int32 PointID, const FVector2d &UV)> ApplyFunc) const
Definition MeshLocalParam.h:232
void UpdateNeighboursSparse(FGraphNode *Parent)
Definition MeshLocalParam.h:505
void UpdateUVExpmap(FGraphNode &Node)
Definition MeshLocalParam.h:410
FIndexPriorityQueue Queue
Definition MeshLocalParam.h:315
static FVector2d InvalidUV()
Definition MeshLocalParam.h:317
bool HasUV(int32 PointID) const
Definition MeshLocalParam.h:173
void GetPointsWithUV(TArray< int32 > &Points) const
Definition MeshLocalParam.h:182
FFrame3d GetFrame(const FGraphNode &Node) const
Definition MeshLocalParam.h:303
FVector3d GetPosition(const int32 PointID) const
Definition MeshLocalParam.h:265
double MaxUVDistance
Definition MeshLocalParam.h:324
void UpdateUVPlanar(FGraphNode &Node)
Definition MeshLocalParam.h:452
void ProcessQueueUntilTermination(double MaxDistance)
Definition MeshLocalParam.h:327
FGraphNode * GetNodeForPointSetID(int32 PointSetID, bool bCreateIfMissing)
Definition MeshLocalParam.h:460
FAxisAlignedBox2d GetUVBounds() const
Definition MeshLocalParam.h:247
FVector2d GetUV(int32 PointID) const
Definition MeshLocalParam.h:197
void Reset()
Definition MeshLocalParam.h:75
TMap< int32, int32 > IDToNodeIndexMap
Definition MeshLocalParam.h:311
const PointSetType * PointSet
Definition MeshLocalParam.h:45
FFrame3d SeedFrame
Definition MeshLocalParam.h:320
bool bEnableExternalNormals
Definition MeshLocalParam.h:55
void TransformUV(double Scale, FVector2d Translate)
Definition MeshLocalParam.h:141
const FGraphNode * GetNodeForPointSetID(int32 PointSetID) const
Definition MeshLocalParam.h:495
void GetAllComputedUVs(TArray< int32 > &PointIDsOut, TArray< FVector2d > &PointUVsOut, double MaxUVMagnitude=TNumericLimits< float >::Max(), double MaxGraphDist=TNumericLimits< float >::Max()) const
Definition MeshLocalParam.h:210
FVector2d PropagateUV(const FVector3d &Position, const FVector2d &NbrUV, const FFrame3d &NbrFrame, const FFrame3d &SeedFrameIn) const
Definition MeshLocalParam.h:380
void ComputeToMaxDistance(int32 CenterPointVtxID, const FFrame3d &CenterPointFrame, double ComputeToMaxDistanceIn)
Definition MeshLocalParam.h:119
TMeshLocalParam(const PointSetType *PointSetIn)
Definition MeshLocalParam.h:61
FVector2d ComputeLocalUV(const FFrame3d &Frame, FVector3d Position) const
Definition MeshLocalParam.h:372
ELocalParamTypes ParamMode
Definition MeshLocalParam.h:48
void ComputeToMaxDistance(const FFrame3d &SeedFrameIn, const FIndex3i &SeedNbrs, double ComputeToMaxDistanceIn)
Definition MeshLocalParam.h:92
double MaxGraphDistance
Definition MeshLocalParam.h:323
FVector3d GetNormal(const int32 PointID) const
Definition MeshLocalParam.h:270
TFunction< FVector3d(int32)> ExternalNormalFunc
Definition MeshLocalParam.h:58
void UpdateUVExpmapUpwind(FGraphNode &Node)
Definition MeshLocalParam.h:422
double GetMaxUVDistance() const
Definition MeshLocalParam.h:165
double GetMaxGraphDistance() const
Definition MeshLocalParam.h:157
TDynamicVector< FGraphNode > AllocatedNodes
Definition MeshLocalParam.h:312
ELocalParamTypes
Definition MeshLocalParam.h:22
@ ExponentialMapUpwindAvg
T DistanceSquared(const UE::Math::TVector2< T > &V1, const UE::Math::TVector2< T > &V2)
Definition VectorTypes.h:82
TFrame3< double > FFrame3d
Definition FrameTypes.h:478
Definition AdvancedWidgetsModule.cpp:13
Definition NumericLimits.h:41
Definition IndexTypes.h:158
Definition BoxTypes.h:637
void Contain(const TVector2< RealType > &V)
Definition BoxTypes.h:738
static TAxisAlignedBox2< RealType > Empty()
Definition BoxTypes.h:706
Definition MeshLocalParam.h:292
double GraphDistance
Definition MeshLocalParam.h:295
FVector2d UV
Definition MeshLocalParam.h:296
FVector3d CachedNormal
Definition MeshLocalParam.h:299
int32 PointID
Definition MeshLocalParam.h:293
bool bFrozen
Definition MeshLocalParam.h:297
int32 ParentPointID
Definition MeshLocalParam.h:294
UE_FORCEINLINE_HINT T Length() const
Definition Vector2D.h:497
UE_FORCEINLINE_HINT T SquaredLength() const
Definition Vector2D.h:516
static TVector2< double > Zero()
Definition Vector2D.h:79
static TVector< double > UnitY()
Definition Vector.h:121
static TVector< double > UnitZ()
Definition Vector.h:124
UE_FORCEINLINE_HINT TVector< T > Cross(const TVector< T > &V2) const
Definition Vector.h:1535
T X
Definition Vector.h:62