ModelsCache.cpp
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2023 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 
10 #include "ModelsCache.h"
11 
12 #include <mrpt/core/get_env.h>
13 #include <mrpt/system/filesystem.h>
14 #include <mrpt/version.h>
15 
16 #include <cstdlib>
17 #include <cstring>
18 
19 using namespace mvsim;
20 
22 {
23  static ModelsCache o;
24  return o;
25 }
26 
27 mrpt::opengl::CAssimpModel::Ptr ModelsCache::get(
28  const std::string& localFileName, const Options& options)
29 {
30  // already cached?
31  if (auto it = cache.find(localFileName); it != cache.end())
32  return it->second;
33 
34  // No, it's a new model path, create its placeholder:
35  auto m = cache[localFileName] = mrpt::opengl::CAssimpModel::Create();
36 
37  ASSERT_FILE_EXISTS_(localFileName);
38 
39  // En/Dis-able the extra verbosity while loading the 3D model:
40  int loadFlags = mrpt::opengl::CAssimpModel::LoadFlags::RealTimeMaxQuality |
41  mrpt::opengl::CAssimpModel::LoadFlags::FlipUVs;
42 
43  if (options.modelColor != mrpt::img::TColor::white())
44  loadFlags |= mrpt::opengl::CAssimpModel::LoadFlags::IgnoreMaterialColor;
45 
46  m->setColor_u8(options.modelColor);
47 
48  if (mrpt::get_env<bool>("MVSIM_LOAD_MODELS_VERBOSE", false))
49  loadFlags |= mrpt::opengl::CAssimpModel::LoadFlags::Verbose;
50 
51  m->loadScene(localFileName, loadFlags);
52 
53  m->cullFaces(mrpt::typemeta::TEnumType<mrpt::opengl::TCullFace>::name2value(
54  options.modelCull));
55 
56  return m;
57 }
static ModelsCache & Instance()
Definition: ModelsCache.cpp:21
mrpt::img::TColor modelColor
Definition: ModelsCache.h:23
std::map< std::string, mrpt::opengl::CAssimpModel::Ptr > cache
Definition: ModelsCache.h:36
mrpt::opengl::CAssimpModel::Ptr get(const std::string &url, const Options &options)
Definition: ModelsCache.cpp:27


mvsim
Author(s):
autogenerated on Tue Jul 4 2023 03:08:21