瀏覽代碼

fixed mesh color/material issue due to wrong normal computation.

Signed-off-by: Jason Dela Cruz <[email protected]>
Jason Dela Cruz 2 年之前
父節點
當前提交
0398482ac9

+ 3 - 1
Gems/O3DE/GeomNodes/Code/Source/Editor/Rendering/GNMeshData.cpp

@@ -332,9 +332,11 @@ namespace GeomNodes
             m_positions.insert(m_positions.end(), rhsPositions.begin(), rhsPositions.end());
 
             Vert3Vector rhsNormals = rhs.m_normals;
+            auto normalMatrix = instance.GetInverseFull();
+            normalMatrix.Transpose();
             for (auto& normal : rhsNormals)
             {
-                auto vec3 = instance * MathHelper::Vec3fToVec3(normal);
+                auto vec3 = normalMatrix * MathHelper::Vec3fToVec3(normal);
                 vec3.Normalize();
                 normal = MathHelper::Vec3ToVec3f(vec3);
             }

+ 3 - 3
Gems/O3DE/GeomNodes/Code/Source/Editor/Rendering/GNModelData.cpp

@@ -97,13 +97,13 @@ namespace GeomNodes
 			{
 				AZ::s64 hash = Read<AZ::s64>(mapId);
 
-				[[maybe_unused]] AZ::Matrix4x4 LocalMatrix = Read<AZ::Matrix4x4>(mapId);
-				[[maybe_unused]] AZ::Matrix4x4 WorldMatrix = Read<AZ::Matrix4x4>(mapId);
+				[[maybe_unused]] AZ::Matrix4x4 localMatrix = Read<AZ::Matrix4x4>(mapId);
+				[[maybe_unused]] AZ::Matrix4x4 worldMatrix = Read<AZ::Matrix4x4>(mapId);
 				
 				AZ::Matrix3x3 rotateZ = AZ::Matrix3x3::CreateRotationZ(AZ::DegToRad(180.0f));
 				
 				auto rotate4x4 = AZ::Matrix4x4::CreateFromMatrix3x4(AZ::Matrix3x4::CreateFromMatrix3x3(rotateZ));
-				AZ::Matrix4x4 instanceMatrix = rotate4x4 * LocalMatrix;
+				AZ::Matrix4x4 instanceMatrix = rotate4x4 * localMatrix;
 
 				for (auto& meshGroup : meshMap)
 				{