5#include "Containers/Array.h"
74template<
typename RealType>
132 template<
typename OtherRealType>
167 template<
typename VectorType,
typename OtherRealType>
192 int32 k = TriangleID * 3;
193 if (k >= 0 && (k+2) <
Tangents.Num())
225 template<
typename OtherVectorType>
273 if (UVOverlay && NormalOverlay)
303template<
typename RealType>
304template<
typename OtherRealType>
312 InitializeTriVertexTangents(
false);
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition DynamicMesh3.h:108
int MaxTriangleID() const
Definition DynamicMesh3.h:399
FDynamicMeshAttributeSet * Attributes()
Definition DynamicMesh3.h:1039
Definition DynamicMeshAttributeSet.h:84
FDynamicMeshNormalOverlay * PrimaryNormals()
Definition DynamicMeshAttributeSet.h:250
FDynamicMeshUVOverlay * PrimaryUV()
Definition DynamicMeshAttributeSet.h:198
GEOMETRYCORE_API void EnableTangents()
Definition DynamicMeshAttributeSet.cpp:683
Definition MeshTangents.h:25
const FDynamicMeshNormalOverlay * Bitangents
Definition MeshTangents.h:30
const FDynamicMeshNormalOverlay * Tangents
Definition MeshTangents.h:29
GEOMETRYCORE_API bool HasValidTangents(bool bCheckValues=false) const
Definition MeshTangents.cpp:26
const FDynamicMesh3 * Mesh
Definition MeshTangents.h:27
GEOMETRYCORE_API void GetTangentFrame(int32 TriangleID, int32 TriVertexIndex, FVector3f &NormalOut, FVector3f &TangentOut, FVector3f &BitangentOut) const
Definition MeshTangents.cpp:62
const FDynamicMeshNormalOverlay * Normals
Definition MeshTangents.h:28
GEOMETRYCORE_API void GetTangentVectors(int32 TriangleID, int32 TriVertexIndex, const FVector3f &Normal, FVector3f &TangentOut, FVector3f &BitangentOut) const
Definition MeshTangents.cpp:86
Definition DynamicMeshOverlay.h:714
Definition MeshTangents.h:76
GEOMETRYCORE_API void ComputeTriangleTangents(const FDynamicMeshUVOverlay *UVOverlay, bool bOrthogonalize=true)
Definition MeshTangents.cpp:238
const FDynamicMesh3 * Mesh
Definition MeshTangents.h:79
void SetMesh(const FDynamicMesh3 *MeshIn)
Definition MeshTangents.h:98
GEOMETRYCORE_API bool CopyToOverlays(FDynamicMesh3 &MeshToSet) const
Definition MeshTangents.cpp:298
void SetPerTriangleTangent(int TriangleID, int TriVertIdx, const TVector< RealType > &Tangent, const TVector< RealType > &Bitangent)
Definition MeshTangents.h:213
void InitializeTriangleTangents(bool bClearToZero)
Definition MeshTangents.h:240
void GetPerTriangleTangent(int32 TriangleID, int32 TriVertIdx, VectorType &TangentOut, VectorType &BitangentOut) const
Definition MeshTangents.h:168
void GetInterpolatedTriangleTangent(int32 TriangleID, const UE::Math::TVector< RealType > &BaryCoords, UE::Math::TVector< RealType > &TangentOut, UE::Math::TVector< RealType > &BitangentOut) const
Definition MeshTangents.h:187
void GetPerTriangleTangent(int32 TriangleID, int32 TriVertIdx, UE::Math::TVector< RealType > &TangentOut, UE::Math::TVector< RealType > &BitangentOut) const
Definition MeshTangents.h:154
void ComputeSeparatePerTriangleTangents(const FDynamicMeshNormalOverlay *NormalOverlay, const FDynamicMeshUVOverlay *UVOverlay, const FComputeTangentsOptions &Options)
Definition MeshTangents.cpp:349
void ComputeMikkTStyleTangents(const FDynamicMeshNormalOverlay *NormalOverlay, const FDynamicMeshUVOverlay *UVOverlay, const FComputeTangentsOptions &Options)
Definition MeshTangents.cpp:395
static bool ComputeDefaultOverlayTangents(FDynamicMesh3 &Mesh)
Definition MeshTangents.h:264
const TArray< TVector< RealType > > & GetTangents() const
Definition MeshTangents.h:103
GEOMETRYCORE_API void ComputeTriVertexTangents(const FDynamicMeshNormalOverlay *NormalOverlay, const FDynamicMeshUVOverlay *UVOverlay, const FComputeTangentsOptions &Options)
Definition MeshTangents.cpp:177
GEOMETRYCORE_API void SetTangentCount(int Count, bool bClearToZero)
Definition MeshTangents.cpp:119
void InitializeTriVertexTangents(bool bClearToZero)
Definition MeshTangents.h:124
const TArray< TVector< RealType > > & GetBitangents() const
Definition MeshTangents.h:105
TArray< TVector< RealType > > Bitangents
Definition MeshTangents.h:83
const FDynamicMesh3 * GetMesh() const
Definition MeshTangents.h:110
void GetTriangleVertexTangentVectors(int32 TriangleID, int32 TriVertexIndex, OtherVectorType &TangentOut, OtherVectorType &BitangentOut) const
Definition MeshTangents.h:226
TMeshTangents(const FDynamicMesh3 *Mesh)
Definition MeshTangents.h:93
TArray< int32 > AllDegenerateTris
Definition MeshTangents.h:85
const TArray< int32 > & GetDegenerateTris() const
Definition MeshTangents.h:107
TMeshTangents()
Definition MeshTangents.h:88
void CopyTriVertexTangents(const TMeshTangents< OtherRealType > &OtherTangents)
Definition MeshTangents.h:305
TArray< TVector< RealType > > Tangents
Definition MeshTangents.h:81
UE::Math::TVector< T > Blend3(const UE::Math::TVector< T > &A, const UE::Math::TVector< T > &B, const UE::Math::TVector< T > &C, const T &WeightA, const T &WeightB, const T &WeightC)
Definition VectorTypes.h:365
TMeshTangents< float > FMeshTangentsf
Definition MeshTangents.h:297
T Normalize(UE::Math::TVector2< T > &Vector, const T Epsilon=0)
Definition VectorTypes.h:46
TMeshTangents< double > FMeshTangentsd
Definition MeshTangents.h:298
Definition AdvancedWidgetsModule.cpp:13
Definition MeshTangents.h:62
bool bAveraged
Definition MeshTangents.h:64
bool bAngleWeighted
Definition MeshTangents.h:66
static TVector< T > UnitX()
Definition Vector.h:118
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
static TVector< T > UnitY()
Definition Vector.h:121
T X
Definition Vector.h:62