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:
Benjamin Jillich
2021-07-27 00:15:26 -07:00
committed by GitHub
parent c9b3ed8bc7
commit a3712b5564
17 changed files with 385 additions and 371 deletions
@@ -10,6 +10,7 @@
#include <SceneAPI/SceneCore/Components/GenerationComponent.h>
#include <SceneAPI/SceneCore/Containers/Scene.h>
#include <SceneAPI/SceneData/Rules/TangentsRule.h>
#include <AzCore/RTTI/RTTI.h>
namespace AZ::SceneAPI::DataTypes { class IMeshData; }
@@ -59,7 +60,7 @@ namespace AZ::SceneGenerationComponents
AZStd::vector<AZ::SceneData::GraphData::BlendShapeData*>& outBlendShapes) const;
bool GenerateTangentsForMesh(AZ::SceneAPI::Containers::Scene& scene, const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex, AZ::SceneAPI::DataTypes::IMeshData* meshData);
void UpdateFbxTangentWValues(AZ::SceneAPI::Containers::SceneGraph& graph, const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex, const AZ::SceneAPI::DataTypes::IMeshData* meshData);
AZ::SceneAPI::DataTypes::TangentSpace GetTangentSpaceFromRule(const AZ::SceneAPI::Containers::Scene& scene) const;
const AZ::SceneAPI::SceneData::TangentsRule* GetTangentRule(const AZ::SceneAPI::Containers::Scene& scene) const;
size_t CalcUvSetCount(AZ::SceneAPI::Containers::SceneGraph& graph, const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex) const;
AZ::SceneAPI::DataTypes::IMeshVertexUVData* FindUvData(AZ::SceneAPI::Containers::SceneGraph& graph, const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex, AZ::u64 uvSet) const;
@@ -69,7 +70,7 @@ namespace AZ::SceneGenerationComponents
const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex,
size_t numVerts,
size_t uvSetIndex,
AZ::SceneAPI::DataTypes::TangentSpace tangentSpace,
AZ::SceneAPI::DataTypes::TangentGenerationMethod generationMethod,
AZ::SceneAPI::Containers::SceneGraph& graph,
AZ::SceneAPI::DataTypes::IMeshVertexTangentData** outTangentData);
@@ -78,7 +79,7 @@ namespace AZ::SceneGenerationComponents
const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex,
size_t numVerts,
size_t uvSetIndex,
AZ::SceneAPI::DataTypes::TangentSpace tangentSpace,
AZ::SceneAPI::DataTypes::TangentGenerationMethod generationMethod,
AZ::SceneAPI::Containers::SceneGraph& graph,
AZ::SceneAPI::DataTypes::IMeshVertexBitangentData** outBitangentData);
};