From 85dfbef6d96956960b48115f046dbb2539aa0f36 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 --- .../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 3fda2e844..ae74a5d41 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 @@ -31,6 +31,9 @@ #include "assimp_loader.hpp" +#include +#include +#include #include #include #include @@ -246,6 +249,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 8be482b86..f291a1af8 100644 --- a/rviz_rendering/src/rviz_rendering/ogre_logging.cpp +++ b/rviz_rendering/src/rviz_rendering/ogre_logging.cpp @@ -67,6 +67,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;