9 #ifndef opengl_COpenGLScene_H
10 #define opengl_COpenGLScene_H
89 insert(objs.begin(), objs.end(), vpn);
107 template <
class T_it>
138 void clear(
bool createMainViewport =
true);
165 template <
typename T>
172 typename T::Ptr o = (*it)->getByClass<T>(ith);
175 return typename T::Ptr();
224 template <
typename FUNCTOR>
231 itO != (*it)->end(); ++itO)
242 template <
typename FUNCTOR,
typename EXTRA_PARAM>
244 FUNCTOR functor,
const EXTRA_PARAM& userParam)
const
257 template <
typename FUNCTOR>
265 std::dynamic_pointer_cast<CSetOfObjects>(o);
267 it !=
obj->end(); ++it)
287 s->insert(
v.begin(),
v.end());
#define IS_CLASS(ptrObj, class_name)
Evaluates to true if the given pointer to an object (derived from mrpt::utils::CSerializable) is of t...
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
bool followCamera() const
Return the value of "followCamera".
bool saveToFile(const std::string &fil) const
Saves the scene to a 3Dscene file, loadable by the application SceneViewer3D.
bool loadFromFile(const std::string &fil)
Loads the scene from a 3Dscene file, the format used by the application SceneViewer3D.
T::Ptr getByClass(const size_t &ith=0) const
Returns the i'th object of a given class (or of a descendant class), or nullptr (an empty smart point...
void clear(bool createMainViewport=true)
Clear the list of objects and viewports in the scene, deleting objects' memory, and leaving just the ...
bool traceRay(const mrpt::poses::CPose3D &o, double &dist) const
Traces a ray.
void getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max, const std::string &vpn=std::string("main")) const
Evaluates the bounding box of the scene in the given viewport (default: "main").
COpenGLViewport::Ptr createViewport(const std::string &viewportName)
Creates a new viewport, adding it to the scene and returning a pointer to the new object.
void visitAllObjects(FUNCTOR functor, const EXTRA_PARAM &userParam) const
Recursive depth-first visit all objects in all viewports of the scene, calling the user-supplied func...
COpenGLViewport::Ptr getViewport(const std::string &viewportName=std::string("main")) const
Returns the viewport with the given name, or nullptr if it does not exist; note that the default view...
CRenderizable::Ptr getByName(const std::string &str, const std::string &viewportName=std::string("main"))
Returns the first object with a given name, or nullptr (an empty smart pointer) if not found.
void insert(const T_it &begin, const T_it &end, const std::string &vpn=std::string("main"))
Inserts a set of objects into the scene, in the given viewport ("main" by default).
void render() const
Render this scene.
void insertCollection(const T &objs, const std::string &vpn=std::string("main"))
Inserts a set of objects into the scene, in the given viewport ("main" by default).
void removeObject(const CRenderizable::Ptr &obj, const std::string &viewportName=std::string("main"))
Removes the given object from the scene (it also deletes the object to free its memory).
void dumpListOfObjects(mrpt::utils::CStringList &lst)
Retrieves a list of all objects in text form.
COpenGLScene()
Constructor.
void visitAllObjects(FUNCTOR functor) const
Recursive depth-first visit all objects in all viewports of the scene, calling the user-supplied func...
std::vector< COpenGLViewport::Ptr > TListViewports
static void internal_visitAllObjects(FUNCTOR functor, const CRenderizable::Ptr &o)
size_t viewportsCount() const
virtual ~COpenGLScene()
Destructor:
std::shared_ptr< COpenGLScene > Ptr
COpenGLScene & operator=(const COpenGLScene &obj)
Copy operator:
void insert(const CRenderizable::Ptr &newObject, const std::string &viewportName=std::string("main"))
Insert a new object into the scene, in the given viewport (by default, into the "main" viewport).
void initializeAllTextures()
Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL)
void enableFollowCamera(bool enabled)
If disabled (default), the SceneViewer application will ignore the camera of the "main" viewport and ...
TListViewports m_viewports
The list of viewports, indexed by name.
std::shared_ptr< COpenGLViewport > Ptr
CListOpenGLObjects::const_iterator const_iterator
std::shared_ptr< CRenderizable > Ptr
A set of object, which are referenced to the coordinates framework established in this object.
CListOpenGLObjects::const_iterator const_iterator
std::shared_ptr< CSetOfObjects > Ptr
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
The virtual base class which provides a unified interface for all persistent objects in MRPT.
A class for storing a list of text lines.
const Scalar * const_iterator
EIGEN_STRONG_INLINE iterator begin()
GLsizei GLsizei GLuint * obj
GLdouble GLdouble GLdouble r
GLsizei const GLchar ** string
mrpt::utils::CStream & operator<<(mrpt::utils::CStream &out, const mrpt::opengl::CLight &o)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.