diff --git a/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp b/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp index 2e509a8708..f252989d2e 100644 --- a/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp +++ b/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp @@ -460,11 +460,12 @@ namespace AZ::SceneGenerationComponents } // Round the vertex position so that a float comparison can be made with entires in the positionMap - AZ::Vector3 position = meshData->GetPosition(vertexIndex); - position *= positionToleranceReciprocal; - position += AZ::Vector3(0.5f); - position = AZ::Vector3(AZ::Simd::Vec3::Floor(position.GetSimdValue())); - position *= positionTolerance; + // pos = floor( x * 10 + 0.5) * 0.1 + const AZ::Vector3 position = AZ::Vector3( + AZ::Simd::Vec3::Floor( + (meshData->GetPosition(vertexIndex) * positionToleranceReciprocal + AZ::Vector3(0.5f)).GetSimdValue() + ) + ) * positionTolerance; const auto& [iter, didInsert] = positionMap.try_emplace(position, currentOriginalVertexIndex); if (didInsert)