{LYN2076} Add Material data types Behavior for the scene graph (#3605)

* {LYN2076} Add Material data types Behavior for the scene graph

Adding behavior to expose GraphData MaterialData to Python scripts so that scripters can read in the material properties from a scene graph

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>

* new warning fixed in code

Signed-off-by: Jackson <23512001+jackalbe@users.noreply.github.com>
This commit is contained in:
Allen Jackson
2021-09-01 08:18:38 -05:00
committed by GitHub
parent 564925c285
commit 26241e95ac
2 changed files with 161 additions and 1 deletions
@@ -14,6 +14,7 @@
#include <AzCore/Serialization/Json/RegistrationContext.h>
#include <AzCore/std/smart_ptr/make_shared.h>
#include <AzCore/std/smart_ptr/shared_ptr.h>
#include <AzCore/std/optional.h>
#include <AzCore/UnitTest/TestTypes.h>
#include <AzTest/AzTest.h>
@@ -27,6 +28,7 @@
#include <SceneAPI/SceneData/GraphData/MeshVertexUVData.h>
#include <SceneAPI/SceneData/GraphData/AnimationData.h>
#include <SceneAPI/SceneData/GraphData/BlendShapeData.h>
#include <SceneAPI/SceneData/GraphData/MaterialData.h>
namespace AZ
{
@@ -145,6 +147,38 @@ namespace AZ
blendShapeData->SetVertexIndexToControlPointIndexMap(2, 0);
return true;
}
else if (data.get_type_info().m_id == azrtti_typeid<AZ::SceneData::GraphData::MaterialData>())
{
auto* materialDataData = AZStd::any_cast<AZ::SceneData::GraphData::MaterialData>(&data);
materialDataData->SetBaseColor(AZStd::make_optional(AZ::Vector3(0.1, 0.2, 0.3)));
materialDataData->SetDiffuseColor({ 0.3, 0.4, 0.5 });
materialDataData->SetEmissiveColor({ 0.4, 0.5, 0.6 });
materialDataData->SetEmissiveIntensity(AZStd::make_optional(0.789f));
materialDataData->SetMaterialName("TestMaterialName");
materialDataData->SetMetallicFactor(AZStd::make_optional(0.123f));
materialDataData->SetNoDraw(true);
materialDataData->SetOpacity(0.7);
materialDataData->SetRoughnessFactor(AZStd::make_optional(0.456f));
materialDataData->SetShininess(1.23);
materialDataData->SetSpecularColor({ 0.8, 0.9, 1.0 });
materialDataData->SetUseAOMap(AZStd::make_optional(true));
materialDataData->SetUseColorMap(AZStd::make_optional(true));
materialDataData->SetUseMetallicMap(AZStd::make_optional(true));
materialDataData->SetUseRoughnessMap(AZStd::make_optional(true));
materialDataData->SetUseEmissiveMap(AZStd::make_optional(true));
materialDataData->SetUniqueId(102938);
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::AmbientOcclusion, "ambientocclusion");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::BaseColor, "basecolor");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Bump, "bump");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Diffuse, "diffuse");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Emissive, "emissive");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Metallic, "metallic");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Normal, "normal");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Roughness, "roughness");
materialDataData->SetTexture(AZ::SceneAPI::DataTypes::IMaterialData::TextureMapType::Specular, "specular");
return true;
}
return false;
}
@@ -337,7 +371,7 @@ namespace AZ
ExpectExecute("TestExpectFloatEquals(tangentData.z, 0.19)");
ExpectExecute("TestExpectFloatEquals(tangentData.w, 0.29)");
ExpectExecute("TestExpectIntegerEquals(meshVertexTangentData:GetTangentSetIndex(), 2)");
ExpectExecute("TestExpectTrue(meshVertexTangentData:GetGenerationMethod(), MeshVertexTangentData.EMotionFX)");
ExpectExecute("TestExpectTrue(meshVertexTangentData:GetGenerationMethod(), MeshVertexTangentData.MikkT)");
}
TEST_F(GrapDatahBehaviorScriptTest, SceneGraph_AnimationData_AccessWorks)
@@ -449,6 +483,49 @@ namespace AZ
ExpectExecute("TestExpectFloatEquals(blendShapeData:GetBitangent(2).y, 0.3)");
ExpectExecute("TestExpectFloatEquals(blendShapeData:GetBitangent(2).z, 0.4)");
}
TEST_F(GrapDatahBehaviorScriptTest, SceneGraph_MaterialData_AccessWorks)
{
ExpectExecute("materialData = MaterialData()");
ExpectExecute("TestExpectTrue(materialData ~= nil)");
ExpectExecute("TestExpectTrue(materialData:IsNoDraw() == false)");
ExpectExecute("TestExpectTrue(materialData:GetUseColorMap() == false)");
ExpectExecute("TestExpectTrue(materialData:GetUseMetallicMap() == false)");
ExpectExecute("TestExpectTrue(materialData:GetUseRoughnessMap() == false)");
ExpectExecute("TestExpectTrue(materialData:GetUseEmissiveMap() == false)");
ExpectExecute("TestExpectTrue(materialData:GetUseAOMap() == false)");
ExpectExecute("MockGraphData.FillData(materialData)");
ExpectExecute("TestExpectTrue(materialData:IsNoDraw())");
ExpectExecute("TestExpectTrue(materialData:GetUseColorMap())");
ExpectExecute("TestExpectTrue(materialData:GetUseMetallicMap())");
ExpectExecute("TestExpectTrue(materialData:GetUseRoughnessMap())");
ExpectExecute("TestExpectTrue(materialData:GetUseEmissiveMap())");
ExpectExecute("TestExpectTrue(materialData:GetUseAOMap())");
ExpectExecute("TestExpectFloatEquals(materialData:GetMetallicFactor(), 0.123)");
ExpectExecute("TestExpectFloatEquals(materialData:GetRoughnessFactor(), 0.456)");
ExpectExecute("TestExpectFloatEquals(materialData:GetEmissiveIntensity(), 0.789)");
ExpectExecute("TestExpectFloatEquals(materialData:GetOpacity(), 0.7)");
ExpectExecute("TestExpectFloatEquals(materialData:GetShininess(), 1.23)");
ExpectExecute("TestExpectTrue(materialData:GetMaterialName() == 'TestMaterialName')");
ExpectExecute("TestExpectFloatEquals(materialData:GetBaseColor().x, 0.1)");
ExpectExecute("TestExpectFloatEquals(materialData:GetBaseColor().y, 0.2)");
ExpectExecute("TestExpectFloatEquals(materialData:GetBaseColor().z, 0.3)");
ExpectExecute("TestExpectFloatEquals(materialData:GetDiffuseColor().x, 0.3)");
ExpectExecute("TestExpectFloatEquals(materialData:GetDiffuseColor().y, 0.4)");
ExpectExecute("TestExpectFloatEquals(materialData:GetDiffuseColor().z, 0.5)");
ExpectExecute("TestExpectFloatEquals(materialData:GetEmissiveColor().x, 0.4)");
ExpectExecute("TestExpectFloatEquals(materialData:GetEmissiveColor().y, 0.5)");
ExpectExecute("TestExpectFloatEquals(materialData:GetEmissiveColor().z, 0.6)");
ExpectExecute("TestExpectIntegerEquals(materialData:GetUniqueId(), 102938)");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.AmbientOcclusion) == 'ambientocclusion')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Bump) == 'bump')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Diffuse) == 'diffuse')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Emissive) == 'emissive')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Metallic) == 'metallic')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Normal) == 'normal')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Roughness) == 'roughness')");
ExpectExecute("TestExpectTrue(materialData:GetTexture(MaterialData.Specular) == 'specular')");
}
}
}
}