GHI-7125 : Tangent generation updates (#7252)

* Add a settings registry setting for choosing the default tangent generation method. Add another setting that will force scenes to fail to process if they are impacted by GHI-7125. Fix a bug where assets that return a Failure state from the TangentGenerateComponent will still successfully process.

Signed-off-by: Tommy Walton <waltont@amazon.com>

* Update with minor pr feedback

Signed-off-by: Tommy Walton <waltont@amazon.com>

* Update Gems/SceneProcessing/Code/Source/Generation/Components/TangentGenerator/TangentGenerateComponent.cpp

Use the AZ_STRING_FORMAT and AZ_STRING_ARG macros for printing a string_view

Co-authored-by: Chris Burel <burelc@amazon.com>
Signed-off-by: Tommy Walton <waltont@amazon.com>

Co-authored-by: Chris Burel <burelc@amazon.com>
Signed-off-by: Tommy Walton <waltont@amazon.com>
This commit is contained in:
Tommy Walton
2022-02-03 11:00:23 -08:00
committed by GitHub
parent d88fc40157
commit 122eef2680
4 changed files with 104 additions and 9 deletions
@@ -58,9 +58,19 @@ namespace AZ::SceneGenerationComponents
void FindBlendShapes(
AZ::SceneAPI::Containers::SceneGraph& graph, const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex,
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);
bool GenerateTangentsForMesh(
AZ::SceneAPI::Containers::Scene& scene,
const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex,
AZ::SceneAPI::DataTypes::IMeshData* meshData,
AZ::SceneAPI::DataTypes::TangentGenerationMethod defaultGenerationMethod);
bool UpdateFbxTangentWValues(
AZ::SceneAPI::Containers::SceneGraph& graph,
const AZ::SceneAPI::Containers::SceneGraph::NodeIndex& nodeIndex,
const AZ::SceneAPI::DataTypes::IMeshData* meshData,
bool deubgBitangentFlip);
const AZ::SceneAPI::SceneData::TangentsRule* GetTangentRule(const AZ::SceneAPI::Containers::Scene& scene) const;
void GetRegistrySettings(
AZ::SceneAPI::DataTypes::TangentGenerationMethod& defaultTangentGenrationMethod, bool& debugBitangentFlip) 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;