14 #include <mrpt/version.h>
15 #if MRPT_VERSION >= 0x270
16 #include <mrpt/opengl/CSkyBox.h>
25 using namespace mvsim;
41 std::string texturesPattern;
44 params[
"textures"] =
TParamEntry(
"%s", &texturesPattern);
49 !texturesPattern.empty(),
"Textures must be defined in a <textures>...</textures> tag.");
52 texturesPattern.find(
"%s") != std::string::npos,
53 "Texture pattern URI in <textures>...</textures> must contain one '%s' "
56 #if MRPT_VERSION >= 0x270
57 using mrpt::opengl::CUBE_TEXTURE_FACE;
59 const std::vector<std::pair<CUBE_TEXTURE_FACE, const char*>> faceImages = {
60 {CUBE_TEXTURE_FACE::FRONT,
"Front"}, {CUBE_TEXTURE_FACE::BACK,
"Back"},
61 {CUBE_TEXTURE_FACE::BOTTOM,
"Down"}, {CUBE_TEXTURE_FACE::TOP,
"Up"},
62 {CUBE_TEXTURE_FACE::LEFT,
"Left"}, {CUBE_TEXTURE_FACE::RIGHT,
"Right"},
65 auto sb = mrpt::opengl::CSkyBox::Create();
67 for (
const auto& p : faceImages)
69 std::string fil = mrpt::format(texturesPattern.c_str(), p.second);
74 sb->assignImage(p.first, mrpt::img::CImage::LoadFromFile(fil));
79 std::cerr <<
"[mvsim::SkyBox] Ignoring SkyBox since MRPT>=2.7.0 is not available." << std::endl;
84 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
85 const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical,
86 [[maybe_unused]]
bool childrenOnly)