47template<
typename SrcMeshType>
74 MeshOut.EnableTriangleGroups(0);
139 for (
int i = 0; i < 3; ++i)
141 int ii = (i + 1) % 3;
149 for (
int i = 0; i < 3; ++i)
181template <
typename AttrType>
192template <
typename AttrType>
205template <
typename AttrType>
228 if (FoundIndex !=
nullptr)
328template <
typename SrcMeshType>
395 MeshOut.Attributes()->GetNormalLayer(i)->InitializeTriangles(
MeshOut.MaxTriangleID());
398 NormalOverlay =
MeshOut.Attributes()->PrimaryNormals();
406 MeshOut.Attributes()->SetNumUVLayers(FMath::Max(1, NumUVLayers));
408 for (
int32 i = 1; i < NumUVLayers; ++i)
416 MeshOut.Attributes()->EnablePrimaryColors();
417 ColorOverlay =
MeshOut.Attributes()->PrimaryColors();
422 MeshOut.Attributes()->EnableMaterialID();
423 MaterialIDAttrib =
MeshOut.Attributes()->GetMaterialID();
432 for (
int UVLayerIndex = 0; UVLayerIndex < NumUVLayers; UVLayerIndex++)
440 MeshIn.GetUVIDs(UVLayerIndex),
441 [&
MeshIn, UVLayerIndex](
const SrcUVIDType&
UVID)->FVector2f { return MeshIn.GetUV(UVLayerIndex, UVID); },
450 if (NormalOverlay !=
nullptr)
498 if (ColorOverlay !=
nullptr)
516 if (MaterialIDAttrib !=
nullptr)
587 const int NumBones =
MeshIn.GetNumBones();
590 MeshOut.Attributes()->EnableBones(NumBones);
620 template<
typename AttrType>
634 if (
Overlay->IsSetTriangle(TriangleID))
646 for (
int j = 0; j < 3; ++j)
663 template <
typename AttrType,
typename SrcAttrIDType>
689 const int32 NewIndex =
Overlay->AppendElement(AttrValue);
717 for (
int i = 0; i < 3; ++i)
768 template <
typename AttrType,
typename SrcAttrIDType>
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Init(const ElementType &Element, SizeType Number)
Definition Array.h:3043
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
A simple container for per-vertex influence of bones and their weights.
Definition BoneWeights.h:526
Definition DynamicMesh3.h:108
static constexpr int NonManifoldID
Definition DynamicMesh3.h:160
static constexpr int DuplicateTriangleID
Definition DynamicMesh3.h:162
static constexpr int InvalidID
Definition DynamicMesh3.h:158
Definition ToDynamicMesh.h:207
typename TOverlayTraits< AttrType >::OverlayType OverlayType
Definition ToDynamicMesh.h:209
OverlayType * Overlay
Definition ToDynamicMesh.h:213
TAttrWelder()
Definition ToDynamicMesh.h:215
TMap< FVertexAttr, int > UniqueVertexAttrs
Definition ToDynamicMesh.h:212
int FindOrAddUnique(const AttrType &AttrValue, int VertexID)
Definition ToDynamicMesh.h:223
TAttrWelder(OverlayType *OverlayIn)
Definition ToDynamicMesh.h:217
Definition DynamicBoneAttribute.h:25
void SetValue(const int32 InBoneID, const AttribValueType &InValue)
Definition DynamicBoneAttribute.h:79
void InitializeTriangles(int MaxTriangleID)
Definition DynamicMeshOverlay.cpp:506
Definition DynamicMeshTriangleAttribute.h:604
void SetValue(int TriangleID, RealType Value)
Definition DynamicMeshTriangleAttribute.h:629
Definition DynamicMeshOverlay.h:714
Definition DynamicVertexAttribute.h:49
Definition DynamicVertexSkinWeightsAttribute.h:48
Definition ToDynamicMesh.h:49
void Convert(FDynamicMesh3 &MeshOut, const SrcMeshType &MeshIn, TFunctionRef< int32(const SrcTriIDType &SrcTrID)> GroupIDFunction)
Definition ToDynamicMesh.h:69
FDateTime Time_AfterVertices
Definition ToDynamicMesh.h:65
TToDynamicMeshBase()
Definition ToDynamicMesh.h:56
TArray< SrcVertIDType > ToSrcVertIDMap
Definition ToDynamicMesh.h:62
FDateTime Time_AfterTriangles
Definition ToDynamicMesh.h:66
typename SrcMeshType::VertIDType SrcVertIDType
Definition ToDynamicMesh.h:52
TArray< SrcTriIDType > ToSrcTriIDMap
Definition ToDynamicMesh.h:63
typename SrcMeshType::TriIDType SrcTriIDType
Definition ToDynamicMesh.h:53
Definition ToDynamicMesh.h:330
typename MyBase::SrcTriIDType SrcTriIDType
Definition ToDynamicMesh.h:333
void ConvertWOAttributes(FDynamicMesh3 &MeshOut, const SrcMeshType &MeshIn, TFunctionRef< int32(const SrcTriIDType &SrcTrID)> GroupIDFunction)
Definition ToDynamicMesh.h:345
void PopulateOverlay(typename TOverlayTraits< AttrType >::OverlayType *Overlay, const TArray< SrcAttrIDType > &SrcAttrIDs, TFunctionRef< AttrType(const SrcAttrIDType &AttrID)> SharedAttrValues, TFunctionRef< bool(const SrcTriIDType &SrcTriID, SrcAttrIDType &AttrID0, SrcAttrIDType &AttrID1, SrcAttrIDType &AttrID2)> AttrTriIndices, TFunctionRef< AttrType(const SrcWedgeIDType &WegdeID)> WedgeAttrs, TFunctionRef< void(const SrcTriIDType &SrcTriID, SrcWedgeIDType &WID0, SrcWedgeIDType &WID1, SrcWedgeIDType &WID2)> TriToWedges)
Definition ToDynamicMesh.h:769
void PopulateOverlays(FDynamicMesh3 &MeshOut, const SrcMeshType &MeshIn, TFunctionRef< int32(const SrcTriIDType &SrcTrID)> MaterialIDFunction, bool bCopyTangents)
Definition ToDynamicMesh.h:370
void PopulateOverlayFromWedgeAttr(typename TOverlayTraits< AttrType >::OverlayType *Overlay, TFunctionRef< AttrType(const SrcWedgeIDType &WedgeID)> WedgeAttrs, TFunctionRef< void(const SrcTriIDType &SrcTriID, SrcWedgeIDType &WID0, SrcWedgeIDType &WID1, SrcWedgeIDType &WID2)> TriToWedges, bool bWeldIdenticalAttrs=true)
Definition ToDynamicMesh.h:621
TToDynamicMesh()
Definition ToDynamicMesh.h:340
typename SrcMeshType::NormalIDType SrcNormalIDType
Definition ToDynamicMesh.h:336
typename MyBase::SrcVertIDType SrcVertIDType
Definition ToDynamicMesh.h:334
typename SrcMeshType::UVIDType SrcUVIDType
Definition ToDynamicMesh.h:335
typename SrcMeshType::ColorIDType SrcColorIDType
Definition ToDynamicMesh.h:337
typename SrcMeshType::WedgeIDType SrcWedgeIDType
Definition ToDynamicMesh.h:338
void Convert(FDynamicMesh3 &MeshOut, const SrcMeshType &MeshIn, TFunctionRef< int32(const SrcTriIDType &SrcTrID)> GroupIDFunction, TFunctionRef< int32(const SrcTriIDType &SrcTrID)> MaterialIDFunction, bool bCopyTangents)
Definition ToDynamicMesh.h:354
TToDynamicMeshBase< SrcMeshType > MyBase
Definition ToDynamicMesh.h:332
void PopulateOverlayFromSharedAttr(typename TOverlayTraits< AttrType >::OverlayType *Overlay, const TArray< SrcAttrIDType > &SrcAttrIDs, TFunctionRef< AttrType(const SrcAttrIDType &AttrID)> SharedAttrValues, TFunctionRef< bool(const SrcTriIDType &SrcTriID, SrcAttrIDType &AttrID0, SrcAttrIDType &AttrID1, SrcAttrIDType &AttrID2)> AttrTriIndices)
Definition ToDynamicMesh.h:664
TDynamicVertexSkinWeightsAttribute< FDynamicMesh3 > FDynamicMeshVertexSkinWeightsAttribute
Definition DynamicMeshAttributeSet.h:62
uint32 GetTypeHash(const TBox< T > &Box)
Definition Box.h:1008
Definition AdvancedWidgetsModule.cpp:13
static UE_FORCEINLINE_HINT uint32 MemCrc32(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.h:31
static CORE_API FDateTime Now()
Definition DateTime.cpp:377
Definition IndexTypes.h:158
FDynamicMeshUVOverlay OverlayType
Definition ToDynamicMesh.h:201
FDynamicMeshNormalOverlay OverlayType
Definition ToDynamicMesh.h:200
FDynamicMeshColorOverlay OverlayType
Definition ToDynamicMesh.h:202
Definition ToDynamicMesh.h:199
Definition ToDynamicMesh.h:183
AttrType AttrValue
Definition ToDynamicMesh.h:185
bool operator==(const TVertexAttr &o) const
Definition ToDynamicMesh.h:186
int VID
Definition ToDynamicMesh.h:184