TSpace setting for MikkT tangent generation (#2386)
* Added TSpace method setting which is only visible for MikkT generation. * Fixed a bug with generating tangents for blend shapes. * Renamed tangent space into generation method. * Some code cleaning Signed-off-by: Benjamin Jillich <jillich@amazon.com>
This commit is contained in:
@@ -17,32 +17,24 @@ namespace AZ
|
||||
class Vector3;
|
||||
}
|
||||
|
||||
namespace AZ
|
||||
namespace AZ::SceneAPI::DataTypes
|
||||
{
|
||||
namespace SceneAPI
|
||||
class IMeshVertexBitangentData
|
||||
: public IGraphObject
|
||||
{
|
||||
namespace DataTypes
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(IMeshVertexBitangentData, "{6C8F6109-B0BD-49D1-A998-4A4946557DF9}", IGraphObject);
|
||||
|
||||
class IMeshVertexBitangentData
|
||||
: public IGraphObject
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(IMeshVertexBitangentData, "{6C8F6109-B0BD-49D1-A998-4A4946557DF9}", IGraphObject);
|
||||
virtual ~IMeshVertexBitangentData() override = default;
|
||||
|
||||
virtual ~IMeshVertexBitangentData() override = default;
|
||||
void CloneAttributesFrom([[maybe_unused]] const IGraphObject* sourceObject) override {}
|
||||
|
||||
void CloneAttributesFrom([[maybe_unused]] const IGraphObject* sourceObject) override {}
|
||||
|
||||
virtual size_t GetCount() const = 0;
|
||||
virtual const AZ::Vector3& GetBitangent(size_t index) const = 0;
|
||||
virtual void SetBitangent(size_t vertexIndex, const AZ::Vector3& bitangent) = 0;
|
||||
virtual void SetBitangentSetIndex(size_t setIndex) = 0;
|
||||
virtual size_t GetBitangentSetIndex() const = 0;
|
||||
virtual TangentSpace GetTangentSpace() const = 0;
|
||||
virtual void SetTangentSpace(TangentSpace space) = 0;
|
||||
};
|
||||
|
||||
} // DataTypes
|
||||
} // SceneAPI
|
||||
} // AZ
|
||||
virtual size_t GetCount() const = 0;
|
||||
virtual const AZ::Vector3& GetBitangent(size_t index) const = 0;
|
||||
virtual void SetBitangent(size_t vertexIndex, const AZ::Vector3& bitangent) = 0;
|
||||
virtual void SetBitangentSetIndex(size_t setIndex) = 0;
|
||||
virtual size_t GetBitangentSetIndex() const = 0;
|
||||
virtual TangentGenerationMethod GetGenerationMethod() const = 0;
|
||||
virtual void SetGenerationMethod(TangentGenerationMethod method) = 0;
|
||||
};
|
||||
} // AZ::SceneAPI::DataTypes
|
||||
|
||||
@@ -16,42 +16,36 @@ namespace AZ
|
||||
class Vector4;
|
||||
}
|
||||
|
||||
namespace AZ
|
||||
namespace AZ::SceneAPI::DataTypes
|
||||
{
|
||||
namespace SceneAPI
|
||||
enum class TangentGenerationMethod
|
||||
{
|
||||
namespace DataTypes
|
||||
{
|
||||
enum class TangentSpace
|
||||
{
|
||||
FromSourceScene = 0,
|
||||
MikkT = 1
|
||||
};
|
||||
FromSourceScene = 0,
|
||||
MikkT = 1
|
||||
};
|
||||
|
||||
enum class BitangentMethod
|
||||
{
|
||||
UseFromTangentSpace = 0,
|
||||
Orthogonal = 1
|
||||
};
|
||||
enum class MikkTSpaceMethod
|
||||
{
|
||||
TSpace = 0,
|
||||
TSpaceBasic = 1
|
||||
};
|
||||
|
||||
class IMeshVertexTangentData
|
||||
: public IGraphObject
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(IMeshVertexTangentData, "{B24084FF-09B1-4EE5-BA5B-2D392E92ECC1}", IGraphObject);
|
||||
class IMeshVertexTangentData
|
||||
: public IGraphObject
|
||||
{
|
||||
public:
|
||||
AZ_RTTI(IMeshVertexTangentData, "{B24084FF-09B1-4EE5-BA5B-2D392E92ECC1}", IGraphObject);
|
||||
|
||||
virtual ~IMeshVertexTangentData() override = default;
|
||||
virtual ~IMeshVertexTangentData() override = default;
|
||||
|
||||
void CloneAttributesFrom([[maybe_unused]] const IGraphObject* sourceObject) override {}
|
||||
void CloneAttributesFrom([[maybe_unused]] const IGraphObject* sourceObject) override {}
|
||||
|
||||
virtual size_t GetCount() const = 0;
|
||||
virtual const AZ::Vector4& GetTangent(size_t index) const = 0;
|
||||
virtual void SetTangent(size_t vertexIndex, const AZ::Vector4& tangent) = 0;
|
||||
virtual void SetTangentSetIndex(size_t setIndex) = 0;
|
||||
virtual size_t GetTangentSetIndex() const = 0;
|
||||
virtual TangentSpace GetTangentSpace() const = 0;
|
||||
virtual void SetTangentSpace(TangentSpace space) = 0;
|
||||
};
|
||||
} // DataTypes
|
||||
} // SceneAPI
|
||||
} // AZ
|
||||
virtual size_t GetCount() const = 0;
|
||||
virtual const AZ::Vector4& GetTangent(size_t index) const = 0;
|
||||
virtual void SetTangent(size_t vertexIndex, const AZ::Vector4& tangent) = 0;
|
||||
virtual void SetTangentSetIndex(size_t setIndex) = 0;
|
||||
virtual size_t GetTangentSetIndex() const = 0;
|
||||
virtual TangentGenerationMethod GetGenerationMethod() const = 0;
|
||||
virtual void SetGenerationMethod(TangentGenerationMethod method) = 0;
|
||||
};
|
||||
} // AZ::SceneAPI::DataTypes
|
||||
|
||||
Reference in New Issue
Block a user