| 
    MRPT
    2.0.0
    
   | 
 
Visualization helpers for 3D rendering of all kind of primitives.
 Back to list of all libraries | See all modules  
This library is part of MRPT and can be installed in Debian-based systems with:
sudo apt install libmrpt-opengl-dev
See: Using MRPT from your CMake project
This library includes several data classes that represent objects that can be inserted into a 3D scene, which can be then rendered or streamed to disk or whatever.
A good starting point to explore this library is the base class for all the 3D objects: mrpt::opengl::CRenderizable
A 3D scene is represented by an object of the type mrpt::opengl::COpenGLScene, which in turn can contain one or several "viewports" in such a way that the rendering area is divided into several spaces, each displaying the same or different objects. See the tutorial online: https://www.mrpt.org/Tutorial_3D_Scenes
See the full list of classes in mrpt::opengl.
Below follows a table with the preview of most rendering primitive classes:
Also, pose PDF classes can be converted into OpenGL objects with CSetOfObjects::posePDF2opengl():
Note: The following extra OpenGL classes are provided by other libraries:
| mrpt::opengl::CAngularObservationMesh  (In mrpt-maps)  |  
 | 
| mrpt::opengl::CPlanarLaserScan  (In mrpt-maps)  |  
 | 
Classes | |
| class | mrpt::opengl::CArrow | 
| A 3D arrow.  More... | |
| class | mrpt::opengl::CAssimpModel | 
| This class can load & render 3D models in a number of different formats (requires the library assimp).  More... | |
| class | mrpt::opengl::CAxis | 
| Draw a 3D world axis, with coordinate marks at some regular interval.  More... | |
| class | mrpt::opengl::CBox | 
| A solid or wireframe box in 3D, defined by 6 rectangular faces parallel to the planes X, Y and Z (note that the object can be translated and rotated afterwards as any other CRenderizable object using the "object pose" in the base class).  More... | |
| class | mrpt::opengl::CCamera | 
| A camera: if added to a scene, the viewpoint defined by this camera will be used instead of the camera parameters set in COpenGLViewport::m_camera.  More... | |
| class | mrpt::opengl::CColorBar | 
| A colorbar indicator.  More... | |
| class | mrpt::opengl::CCylinder | 
| A cylinder or cone whose base lies in the XY plane.  More... | |
| class | mrpt::opengl::CDisk | 
| A planar disk in the XY plane.  More... | |
| class | mrpt::opengl::CEllipsoid2D | 
| A 2D ellipse on the XY plane, centered at the origin of this object pose.  More... | |
| class | mrpt::opengl::CEllipsoid3D | 
| A 3D ellipsoid, centered at zero with respect to this object pose.  More... | |
| class | mrpt::opengl::CEllipsoidInverseDepth2D | 
| An especial "ellipsoid" in 3D computed as the uncertainty iso-surfaces of a (inv_range,yaw) variable.  More... | |
| class | mrpt::opengl::CEllipsoidInverseDepth3D | 
| An especial "ellipsoid" in 3D computed as the uncertainty iso-surfaces of a (inv_range,yaw,pitch) variable.  More... | |
| class | mrpt::opengl::CEllipsoidRangeBearing2D | 
| An especial "ellipsoid" in 2D computed as the uncertainty iso-surfaces of a (range,bearing) variable.  More... | |
| class | mrpt::opengl::CFBORender | 
| A class for rendering 3D scenes off-screen directly into an image using OpenGL extensions (glext).  More... | |
| class | mrpt::opengl::CFrustum | 
| A solid or wireframe frustum in 3D (a rectangular truncated pyramid), with arbitrary (possibly assymetric) field-of-view angles.  More... | |
| class | mrpt::opengl::CGeneralizedEllipsoidTemplate< DIM > | 
| A class that generalizes the concept of an ellipsoid to arbitrary parameterizations of uncertainty shapes in either 2D or 3D.  More... | |
| class | mrpt::opengl::CGridPlaneXY | 
| A grid of lines over the XY plane.  More... | |
| class | mrpt::opengl::CGridPlaneXZ | 
| A grid of lines over the XZ plane.  More... | |
| class | mrpt::opengl::CMesh | 
| A planar (XY) grid where each cell has an associated height and, optionally, a texture map.  More... | |
| class | mrpt::opengl::CMesh3D | 
| A 3D mesh composed of Triangles and/or Quads.  More... | |
| class | mrpt::opengl::CMeshFast | 
| A planar (XY) grid where each cell has an associated height and, optionally, a texture map.  More... | |
| class | mrpt::opengl::COctoMapVoxels | 
| A flexible renderer of voxels, typically from a 3D octo map (see mrpt::maps::COctoMap).  More... | |
| class | mrpt::opengl::COctreePointRenderer< Derived > | 
| Template class that implements the data structure and algorithms for Octree-based efficient rendering.  More... | |
| class | mrpt::opengl::COpenGLBuffer | 
| A wrapper for an OpenGL buffer object.  More... | |
| class | mrpt::opengl::COpenGLScene | 
| This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.  More... | |
| class | mrpt::opengl::COpenGLVertexArrayObject | 
| A wrapper for an OpenGL vertex array object (VAO).  More... | |
| class | mrpt::opengl::COpenGLViewport | 
| A viewport within a COpenGLScene, containing a set of OpenGL objects to render.  More... | |
| class | mrpt::opengl::CPointCloud | 
| A cloud of points, all with the same color or each depending on its value along a particular coordinate axis.  More... | |
| class | mrpt::opengl::CPointCloudColoured | 
| A cloud of points, each one with an individual colour (R,G,B).  More... | |
| class | mrpt::opengl::CPolyhedron | 
| This class represents arbitrary polyhedra.  More... | |
| class | mrpt::opengl::CRenderizable | 
| The base class of 3D objects that can be directly rendered through OpenGL.  More... | |
| class | mrpt::opengl::CRenderizableShaderPoints | 
| Renderizable generic renderer for objects using the points shader.  More... | |
| class | mrpt::opengl::CRenderizableShaderText | 
| Renderizable generic renderer for objects using the "text shader".  More... | |
| class | mrpt::opengl::CRenderizableShaderTexturedTriangles | 
| Renderizable generic renderer for objects using the triangles-with-a-texture shader.  More... | |
| class | mrpt::opengl::CRenderizableShaderTriangles | 
| Renderizable generic renderer for objects using the triangles shader.  More... | |
| class | mrpt::opengl::CRenderizableShaderWireFrame | 
| Renderizable generic renderer for objects using the wireframe shader.  More... | |
| class | mrpt::opengl::CSetOfLines | 
| A set of independent lines (or segments), one line with its own start and end positions (X,Y,Z).  More... | |
| class | mrpt::opengl::CSetOfObjects | 
| A set of object, which are referenced to the coordinates framework established in this object.  More... | |
| class | mrpt::opengl::CSetOfTexturedTriangles | 
| A set of textured triangles.  More... | |
| class | mrpt::opengl::CSetOfTriangles | 
| A set of colored triangles, able to draw any solid, arbitrarily complex object without textures.  More... | |
| class | mrpt::opengl::CSimpleLine | 
| A line segment.  More... | |
| class | mrpt::opengl::CSphere | 
| A solid or wire-frame sphere.  More... | |
| class | mrpt::opengl::CText | 
| A 2D text (bitmap rendering): it always "faces the observer" despite it's at some 3D location.  More... | |
| class | mrpt::opengl::CText3D | 
| A 3D text (rendered with OpenGL primitives), with selectable font face and drawing style.  More... | |
| class | mrpt::opengl::CTextMessageCapable | 
| Keeps a list of text messages which can be rendered to OpenGL contexts by graphic classes.  More... | |
| class | mrpt::opengl::CTexturedPlane | 
| A 2D plane in the XY plane with a texture image.  More... | |
| class | mrpt::opengl::CVectorField2D | 
| A 2D vector field representation, consisting of points and arrows drawn on a plane (invisible grid).  More... | |
| class | mrpt::opengl::CVectorField3D | 
| A 3D vector field representation, consisting of points and arrows drawn at any spatial position.  More... | |
| struct | mrpt::opengl::T2DTextData | 
| An auxiliary struct for holding a list of text messages in some mrpt::opengl & mrpt::gui classes The font can be either a bitmapped or a vectorized font.  More... | |
| struct | mrpt::opengl::RenderQueueElement | 
| Each element in the queue to be rendered for each keyframe.  More... | |
| class | mrpt::opengl::Shader | 
| A resource handling helper for OpenGL "Shader" compiled code fragment.  More... | |
| class | mrpt::opengl::Program | 
| A resource handling helper for OpenGL Shader "programs".  More... | |
| struct | mrpt::opengl::TRenderMatrices | 
| Rendering state related to the projection and model-view matrices.  More... | |
| struct | mrpt::opengl::TTriangle | 
| A triangle (float coordinates) with RGBA colors (u8) and UV (texture coordinates) for each vertex.  More... | |
Namespaces | |
| mrpt::opengl | |
| The namespace for 3D scene representation and rendering.  | |
| mrpt::opengl::graph_tools | |
| Tool functions for graphs of pose constraints.  | |
| mrpt::opengl::stock_objects | |
| A collection of pre-built 3D objects for quick insertion in opengl::COpenGLScene objects.  | |
Typedefs | |
| using | mrpt::opengl::RenderQueue = std::map< shader_id_t, std::multimap< float, RenderQueueElement > > | 
| A queue for rendering, sorted by shader program to minimize changes of OpenGL shader programs while rendering a scene.  More... | |
| using | mrpt::opengl::shader_id_t = uint8_t | 
| Type for IDs of shaders.  More... | |
Functions | |
| void | mrpt::global_settings::OCTREE_RENDER_MAX_DENSITY_POINTS_PER_SQPIXEL (float value) | 
| Default value = 0.01 points/px^2.  More... | |
| size_t | mrpt::global_settings::OCTREE_RENDER_MAX_POINTS_PER_NODE () | 
| Default value = 1e5.  More... | |
| Program::Ptr | mrpt::opengl::LoadDefaultShader (const shader_id_t id) | 
| Loads a set of OpenGL Vertex+Fragment shaders from the default library available in mrpt::opengl.  More... | |
Tool functions for graphs of pose constraints | |
| template<class GRAPH_T > | |
| CSetOfObjects::Ptr | mrpt::opengl::graph_tools::graph_visualize (const GRAPH_T &g, const mrpt::system::TParametersDouble &extra_params=mrpt::system::TParametersDouble()) | 
| Returns an opengl objects representation of an arbitrary graph, as a network of 3D pose frames.  More... | |
| using mrpt::opengl::RenderQueue = typedef std::map<shader_id_t, std::multimap<float, RenderQueueElement> > | 
A queue for rendering, sorted by shader program to minimize changes of OpenGL shader programs while rendering a scene.
Within each shader, objects are sorted by eye-to-object distance, so we can later render them from back to front to render transparencies properly Filled by sortRenderObjectsByShader()
Definition at line 46 of file RenderQueue.h.
| using mrpt::opengl::shader_id_t = typedef uint8_t | 
Type for IDs of shaders.
| CSetOfObjects::Ptr mrpt::opengl::graph_tools::graph_visualize | ( | const GRAPH_T & | g, | 
| const mrpt::system::TParametersDouble & | extra_params = mrpt::system::TParametersDouble()  | 
        ||
| ) | 
Returns an opengl objects representation of an arbitrary graph, as a network of 3D pose frames.
Note that the "global" coordinates of each node are taken from mrpt::graphs::CNetworkOfPoses::nodes, so if a node appears in "edges" but not in "nodes" it will be not displayed.
| g | The graph | 
| extra_params | An extra set of optional parameters (see below). List of accepted extra parameters (note that all are double values, booleans are emulated with 0 & !=0 values): | 
| Parameter name | Description | Default value | 
 show_ID_labels   | If set to !=0, show poses ID labels | 0 (don't show) | 
 show_ground_grid   | If set to !=0, create a gray grid on the ground level (mrpt::opengl::CGridPlaneXY). The extension of the grid is computed to cover the entire graph extension | 1 (do show) | 
 show_edges   | If set to !=0, draw lines between nodes with at least one edge between them. | 1 (do show) | 
 show_node_corners   | If set to !=0, draw a small 3D corner frame at each node (see mrpt::opengl::stock_objects::CornerXYZSimple). | 1 (do show) | 
 show_edge_rel_poses   | If set to !=0, draw the relative poses stored in each edge as a small extra 3D corner frame at each node pose (+) the edge pose (see mrpt::opengl::stock_objects::CornerXYZSimple). | 1 (do show) | 
 nodes_point_size   | If set to !=0, draw a point of the given size (glPointSize) at each node. | 0 (no points)  | 
 nodes_corner_scale   | If show_node_corners!=0, the size (length) of te corner lines. | 0.7 | 
 nodes_edges_corner_scale   | If show_edge_rel_poses is !=0, the size of the corners at the end of each drawn edge. | 0.4 | 
 nodes_point_color   | If nodes_point_size!=0, set this value to a hexadecimal int value 0xRRGGBB with the desired RGB color of points. | 0xA0A0A0 (light gray) | 
 edge_color   | If show_edges is !=0, the color of those edges as a hexadecimal int value 0xAARRGGBB with Alpha+RGB color (Alpha=0xFF:opaque,0x00:transparent). | 0x400000FF  | 
 edge_rel_poses_color   | If show_edge_rel_poses is !=0, the color of those edges as a hexadecimal int value 0xAARRGGBB with Alpha+RGB color (Alpha=0xFF:opaque,0x00:transparent). | 0x40FF8000 | 
 edge_width   | If show_edges is !=0, the width of edge lines. | 2.0  | 
Definition at line 23 of file graph_tools_impl.h.
References mrpt::opengl::stock_objects::CornerXYSimple(), mrpt::opengl::stock_objects::CornerXYZSimple(), mrpt::opengl::CSimpleLine::Create(), mrpt::opengl::CSetOfObjects::Create(), mrpt::opengl::CGridPlaneXY::Create(), mrpt::format(), mrpt::system::TParameters< T >::getWithDefaultVal(), mrpt::keep_max(), mrpt::keep_min(), MRPT_TRY_END, MRPT_TRY_START, mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.
| Program::Ptr mrpt::opengl::LoadDefaultShader | ( | const shader_id_t | id | ) | 
Loads a set of OpenGL Vertex+Fragment shaders from the default library available in mrpt::opengl.
Definition at line 19 of file DefaultShaders.cpp.
References mrpt::opengl::DefaultShaderID::POINTS, mrpt::opengl::DefaultShaderID::TEXT, mrpt::opengl::DefaultShaderID::TEXTURED_TRIANGLES, THROW_EXCEPTION, THROW_EXCEPTION_FMT, mrpt::opengl::DefaultShaderID::TRIANGLES, and mrpt::opengl::DefaultShaderID::WIREFRAME.
Referenced by mrpt::opengl::COpenGLViewport::loadDefaultShaders().
| void mrpt::global_settings::OCTREE_RENDER_MAX_DENSITY_POINTS_PER_SQPIXEL | ( | float | value | ) | 
Default value = 0.01 points/px^2.
Affects to these classes (read their docs for further details):
Definition at line 33 of file CPointCloud.cpp.
References OCTREE_RENDER_MAX_DENSITY_POINTS_PER_SQPIXEL_value.
Referenced by mrpt::opengl::CPointCloudColoured::render_subset().
| size_t mrpt::global_settings::OCTREE_RENDER_MAX_POINTS_PER_NODE | ( | ) | 
Default value = 1e5.
Maximum number of elements in each octree node before spliting. Affects to these classes (read their docs for further details):
Definition at line 39 of file CPointCloud.cpp.
References OCTREE_RENDER_MAX_POINTS_PER_NODE_value.
Referenced by mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::internal_recursive_split().
| Page generated by Doxygen 1.8.14 for MRPT 2.0.0 Git: b38439d21 Tue Mar 31 19:58:06 2020 +0200 at miƩ abr 1 00:50:30 CEST 2020 |