From 1d973de3ab71dc791134b8e7284c29baddb75320 Mon Sep 17 00:00:00 2001 From: chama1176 Date: Wed, 17 Jul 2024 19:40:46 +0900 Subject: [PATCH] Fix: issue #1220. (#1237) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chama1176 Co-authored-by: Alejandro Hernández Cordero (cherry picked from commit 85dfbef6d96956960b48115f046dbb2539aa0f36) --- .../mesh_loader_helpers/assimp_loader.cpp | 15 +++++++++++++++ .../src/rviz_rendering/ogre_logging.cpp | 3 +++ 2 files changed, 18 insertions(+) diff --git a/rviz_rendering/src/rviz_rendering/mesh_loader_helpers/assimp_loader.cpp b/rviz_rendering/src/rviz_rendering/mesh_loader_helpers/assimp_loader.cpp index 41eb2e711..b56ec5abd 100644 --- a/rviz_rendering/src/rviz_rendering/mesh_loader_helpers/assimp_loader.cpp +++ b/rviz_rendering/src/rviz_rendering/mesh_loader_helpers/assimp_loader.cpp @@ -30,6 +30,9 @@ #include "assimp_loader.hpp" +#include +#include +#include #include #include #include @@ -245,6 +248,18 @@ std::vector AssimpLoader::loadMaterials( const std::string & resource_path, const aiScene * scene) { std::vector material_table_out; + + std::string ext = std::filesystem::path(resource_path).extension().string(); + std::transform(ext.begin(), ext.end(), ext.begin(), + [](unsigned char c) {return std::tolower(c);}); + // STL meshes don't support proper + // materials: use Ogre's default material + if (ext == ".stl" || ext == ".stlb") { + material_table_out.push_back( + Ogre::MaterialManager::getSingleton().getByName("BaseWhiteNoLighting")); + return material_table_out; + } + for (uint32_t i = 0; i < scene->mNumMaterials; i++) { std::string material_name; material_name = resource_path + "Material" + std::to_string(i); diff --git a/rviz_rendering/src/rviz_rendering/ogre_logging.cpp b/rviz_rendering/src/rviz_rendering/ogre_logging.cpp index dfad591af..46b4443b7 100644 --- a/rviz_rendering/src/rviz_rendering/ogre_logging.cpp +++ b/rviz_rendering/src/rviz_rendering/ogre_logging.cpp @@ -66,6 +66,9 @@ class CustomOgreLogListener : public Ogre::LogListener case Ogre::LogMessageLevel::LML_NORMAL: RVIZ_RENDERING_LOG_INFO(message.c_str()); break; + case Ogre::LogMessageLevel::LML_WARNING: + RVIZ_RENDERING_LOG_WARNING(message.c_str()); + break; case Ogre::LogMessageLevel::LML_CRITICAL: RVIZ_RENDERING_LOG_ERROR(message.c_str()); break;