MRPT
2.0.4
|
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... | |
class | mrpt::opengl::PLY_Importer |
A virtual base class that implements the capability of importing 3D point clouds and faces from a file in the Stanford PLY format. 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 20 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.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020 |