From 6e156c12ed8c89f2cc8612b67bf09e9476ebddb3 Mon Sep 17 00:00:00 2001 From: Daniel Simon Date: Wed, 12 Apr 2023 18:49:16 -0700 Subject: [PATCH] Updates to work with changes to the translation of tensor mesh materials --- cpp/open3d/t/geometry/TriangleMesh.cpp | 4 +++- cpp/tests/t/geometry/TriangleMesh.cpp | 14 +++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cpp/open3d/t/geometry/TriangleMesh.cpp b/cpp/open3d/t/geometry/TriangleMesh.cpp index 4134ee6f306..a87abf04eb5 100644 --- a/cpp/open3d/t/geometry/TriangleMesh.cpp +++ b/cpp/open3d/t/geometry/TriangleMesh.cpp @@ -409,7 +409,9 @@ open3d::geometry::TriangleMesh TriangleMesh::ToLegacy() const { // Convert material if the t geometry has a valid one auto &tmat = GetMaterial(); if (tmat.IsValid()) { - auto &legacy_mat = mesh_legacy.materials_["Mat1"]; + mesh_legacy.materials_.emplace_back(); + mesh_legacy.materials_.front().first = "Mat1"; + auto &legacy_mat = mesh_legacy.materials_.front().second; // Convert scalar properties if (tmat.HasBaseColor()) { legacy_mat.baseColor.f4[0] = tmat.GetBaseColor().x(); diff --git a/cpp/tests/t/geometry/TriangleMesh.cpp b/cpp/tests/t/geometry/TriangleMesh.cpp index 4e51b34e31d..4748cb0cd0d 100644 --- a/cpp/tests/t/geometry/TriangleMesh.cpp +++ b/cpp/tests/t/geometry/TriangleMesh.cpp @@ -394,7 +394,9 @@ TEST_P(TriangleMeshPermuteDevices, FromLegacy) { Eigen::Vector2d(0.4, 0.5), Eigen::Vector2d(0.6, 0.7), Eigen::Vector2d(0.8, 0.9), Eigen::Vector2d(1.0, 1.1)}; - auto& mat = legacy_mesh.materials_["Mat1"]; + legacy_mesh.materials_.emplace_back(); + legacy_mesh.materials_.front().first = "Mat1"; + auto& mat = legacy_mesh.materials_.front().second; mat.baseColor = mat.baseColor.CreateRGB(1, 1, 1); core::Dtype float_dtype = core::Float32; @@ -497,8 +499,14 @@ TEST_P(TriangleMeshPermuteDevices, ToLegacy) { Pointwise(FloatEq(), {0.8, 0.9}), Pointwise(FloatEq(), {1.0, 1.1})})); - EXPECT_TRUE(legacy_mesh.materials_.count("Mat1") > 0); - auto& mat = legacy_mesh.materials_["Mat1"]; + auto mat_iterator = std::find_if( + legacy_mesh.materials_.begin(), + legacy_mesh.materials_.end(), + [](const auto& pair)->bool{ + return pair.first == "Mat1"; + }); + EXPECT_TRUE(mat_iterator != legacy_mesh.materials_.end()); + auto& mat = mat_iterator->second; EXPECT_TRUE(Eigen::Vector4f(mat.baseColor.f4) == Eigen::Vector4f(1, 1, 1, 1)); EXPECT_TRUE(mat.baseMetallic == 0.0);