Main MRPT website > C++ reference for MRPT 1.5.6
List of all members | Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends
mrpt::opengl::COpenGLViewport Class Reference

Detailed Description

A viewport within a COpenGLScene, containing a set of OpenGL objects to render.

This class has protected constuctor, thus it cannot be created by users. Use COpenGLScene::createViewport instead. A viewport has these "operation modes":

In any case, the viewport can be resized to only fit a part of the entire parent viewport. There will be always at least one viewport in a COpenGLScene named "main".

This class can be observed (see mrpt::utils::CObserver) for the following events (see mrpt::utils::mrptEvent):

Two directional light sources at infinity are created by default, with directions (-1,-1,-1) and (1,2,1), respectively. All OpenGL properties of light sources are accesible via the methods: setNumberOfLights(), lightsClearAll(), addLight(), and getLight(). Please, refer to mrpt::opengl::CLight and the standard OpenGL documentation for the meaning of all light properties.

Refer to mrpt::opengl::COpenGLScene for further details.

Definition at line 56 of file COpenGLViewport.h.

#include <mrpt/opengl/COpenGLViewport.h>

Inheritance diagram for mrpt::opengl::COpenGLViewport:
Inheritance graph

Classes

struct  TLastProjectiveMatrixInfo
 

Public Member Functions

voidoperator new (size_t size)
 
voidoperator new[] (size_t size)
 
void operator delete (void *ptr) throw ()
 
void operator delete[] (void *ptr) throw ()
 
void operator delete (void *memory, void *ptr) throw ()
 
voidoperator new (size_t size, const std::nothrow_t &) throw ()
 
void operator delete (void *ptr, const std::nothrow_t &) throw ()
 
virtual ~COpenGLViewport ()
 Destructor: clears all objects. More...
 
virtual mxArraywriteToMatlab () const
 Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class. More...
 
mrpt::utils::CObjectPtr duplicateGetSmartPtr () const
 Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). More...
 
CObjectclone () const
 Cloning interface for smart pointers. More...
 
Set the viewport "modes"
void setCloneView (const std::string &clonedViewport)
 Set this viewport as a clone of some other viewport, given its name - as a side effect, current list of internal OpenGL objects is cleared. More...
 
void setImageView (const mrpt::utils::CImage &img)
 Set this viewport into "image view"-mode, where an image is efficiently drawn (fitting the viewport area) using an OpenGL textured quad. More...
 
void setImageView_fast (mrpt::utils::CImage &img)
 Just like setImageView but moves the internal image memory instead of making a copy, so it's faster but empties the input image. More...
 
void resetCloneView ()
 Reset the viewport to normal mode: rendering its own objects. More...
 
void setCloneCamera (bool enable)
 If set to true, and setCloneView() has been called, this viewport will be rendered using the camera of the cloned viewport. More...
 
void setNormalMode ()
 Resets the viewport to a normal 3D viewport. More...
 
OpenGL global settings that affect rendering all objects in the scene/viewport
void enablePolygonNicest (bool enable=true)
 Sets glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST) is enabled, or GL_FASTEST otherwise. More...
 
bool isPolygonNicestEnabled () const
 
void lightsClearAll ()
 Removes all lights (and disables the global "GL_LIGHTING") More...
 
void addLight (const CLight &l)
 Append a new light to the scene. More...
 
void setNumberOfLights (const size_t N)
 Allocates a number of lights, which must be correctly defined via getLight(i), etc. More...
 
CLightgetLight (const size_t i)
 
const CLightgetLight (const size_t i) const
 
Change or read viewport properties (except "viewport modes")
std::string getName ()
 Returns the name of the viewport. More...
 
void setViewportPosition (const double x, const double y, const double width, const double height)
 Change the viewport position and dimension on the rendering window. More...
 
void getViewportPosition (double &x, double &y, double &width, double &height)
 Get the current viewport position and dimension on the rendering window. More...
 
void setViewportClipDistances (const double clip_min, const double clip_max)
 Set the min/max clip depth distances of the rendering frustum (default: 0.1 - 10000) More...
 
void getViewportClipDistances (double &clip_min, double &clip_max) const
 Get the current min/max clip depth distances of the rendering frustum (default: 0.1 - 10000) More...
 
void setBorderSize (unsigned int lineWidth)
 Set the border size ("frame") of the viewport (default=0). More...
 
bool isTransparent ()
 Return whether the viewport will be rendered transparent over previous viewports. More...
 
void setTransparent (bool trans)
 Set the transparency, that is, whether the viewport will be rendered transparent over previous viewports (default=false). More...
 
void setCustomBackgroundColor (const mrpt::utils::TColorf &color)
 Set a background color different from that of the parent GUI window. More...
 
mrpt::utils::TColorf getCustomBackgroundColor () const
 
void get3DRayForPixelCoord (const double x_coord, const double y_coord, mrpt::math::TLine3D &out_ray, mrpt::poses::CPose3D *out_cameraPose=NULL) const
 Compute the 3D ray corresponding to a given pixel; this can be used to allow the user to pick and select 3D objects by clicking onto the 2D image. More...
 

Static Public Member Functions

static voidoperator new (size_t size, void *ptr)
 

Static Public Attributes

static const mrpt::utils::TRuntimeClassId classCObject
 
RTTI stuff
static const mrpt::utils::TRuntimeClassId classCSerializable
 

Protected Member Functions

 COpenGLViewport (COpenGLScene *parent=NULL, const std::string &name=std::string(""))
 Constructor, invoked from COpenGLScene only. More...
 
void initializeAllTextures ()
 Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL) More...
 
void dumpListOfObjects (mrpt::utils::CStringList &lst)
 Retrieves a list of all objects in text form. More...
 
void render (const int render_width, const int render_height) const
 Render the objects in this viewport (called from COpenGLScene only) More...
 
void internal_setImageView_fast (const mrpt::utils::CImage &img, bool is_fast)
 
void publishEvent (const mrptEvent &e) const
 Called when you want this object to emit an event to all the observers currently subscribed to this object. More...
 
bool hasSubscribers () const
 Can be called by a derived class before preparing an event for publishing with publishEvent to determine if there is no one subscribed, so it can save the wasted time preparing an event that will be not read. More...
 
CSerializable virtual methods
void writeToStream (mrpt::utils::CStream &out, int *getVersion) const
 Introduces a pure virtual method responsible for writing to a CStream. More...
 
void readFromStream (mrpt::utils::CStream &in, int version)
 Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori. More...
 

Protected Attributes

opengl::CCamera m_camera
 The camera associated to the viewport. More...
 
utils::safe_ptr< COpenGLScenem_parent
 The scene that contains this viewport. More...
 
bool m_isCloned
 Set by setCloneView. More...
 
bool m_isClonedCamera
 Set by setCloneCamera. More...
 
std::string m_clonedViewport
 Only if m_isCloned=true. More...
 
std::string m_name
 The viewport's name. More...
 
bool m_isTransparent
 Whether to clear color buffer. More...
 
uint32_t m_borderWidth
 Default=0, the border around the viewport. More...
 
double m_view_x
 
double m_view_y
 
double m_view_width
 
double m_view_height
 The viewport position [0,1]. More...
 
double m_clip_min
 
double m_clip_max
 The min/max clip depth distances (default: 0.1 - 10000) More...
 
bool m_custom_backgb_color
 
mrpt::utils::TColorf m_background_color
 used only if m_custom_backgb_color More...
 
bool m_isImageView
 Set by setImageView. More...
 
mrpt::utils::CImagePtr m_imageview_img
 The image to display, after calling setImageView() More...
 
TLastProjectiveMatrixInfo m_lastProjMat
 Info updated with each "render()" and used in "get3DRayForPixelCoord". More...
 
opengl::CListOpenGLObjects m_objects
 The list of objects that comprise the 3D scene. More...
 
bool m_OpenGL_enablePolygonNicest
 
std::vector< CLightm_lights
 

Friends

class COpenGLScene
 

RTTI stuff

typedef COpenGLViewportPtr Ptr
 
typedef COpenGLViewportPtr ConstPtr
 
static mrpt::utils::CLASSINIT _init_COpenGLViewport
 
static mrpt::utils::TRuntimeClassId classCOpenGLViewport
 
static const mrpt::utils::TRuntimeClassIdclassinfo
 
static const mrpt::utils::TRuntimeClassId_GetBaseClass ()
 
virtual const mrpt::utils::TRuntimeClassIdGetRuntimeClass () const
 Returns information about the class of an object in runtime. More...
 
virtual mrpt::utils::CObjectduplicate () const
 Returns a copy of the object, indepently of its class. More...
 
static mrpt::utils::CObjectCreateObject ()
 
static COpenGLViewportPtr Create ()
 

Contained objects set/get/search

typedef CListOpenGLObjects::const_iterator const_iterator
 
typedef CListOpenGLObjects::iterator iterator
 
const_iterator begin () const
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
void clear ()
 Delete all internal obejcts. More...
 
void insert (const CRenderizablePtr &newObject)
 Insert a new object into the list. More...
 
void getCurrentCameraPose (mrpt::poses::CPose3D &out_cameraPose) const
 Compute the current 3D camera pose. More...
 
CRenderizablePtr getByName (const std::string &str)
 Returns the first object with a given name, or NULL if not found. More...
 
template<typename T >
T::Ptr getByClass (const size_t &ith=0) const
 Returns the i'th object of a given class (or of a descendant class), or NULL (an empty smart pointer) if not found. More...
 
void removeObject (const CRenderizablePtr &obj)
 Removes the given object from the scene (it also deletes the object to free its memory). More...
 
size_t size () const
 Number of objects contained. More...
 
bool empty () const
 
opengl::CCameragetCamera ()
 Get a reference to the camera associated with this viewport. More...
 
const opengl::CCameragetCamera () const
 Get a reference to the camera associated with this viewport. More...
 
void getBoundingBox (mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const
 Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent. More...
 

Member Typedef Documentation

◆ const_iterator

typedef CListOpenGLObjects::const_iterator mrpt::opengl::COpenGLViewport::const_iterator

Definition at line 208 of file COpenGLViewport.h.

◆ ConstPtr

typedef COpenGLViewportPtr mrpt::opengl::COpenGLViewport::ConstPtr

Definition at line 60 of file COpenGLViewport.h.

◆ iterator

typedef CListOpenGLObjects::iterator mrpt::opengl::COpenGLViewport::iterator

Definition at line 209 of file COpenGLViewport.h.

◆ Ptr

typedef COpenGLViewportPtr mrpt::opengl::COpenGLViewport::Ptr

A typedef for the associated smart pointer

Definition at line 60 of file COpenGLViewport.h.

Constructor & Destructor Documentation

◆ ~COpenGLViewport()

COpenGLViewport::~COpenGLViewport ( )
virtual

Destructor: clears all objects.

Definition at line 102 of file COpenGLViewport.cpp.

References clear().

◆ COpenGLViewport()

COpenGLViewport::COpenGLViewport ( COpenGLScene parent = NULL,
const std::string name = std::string("") 
)
protected

Constructor, invoked from COpenGLScene only.

Definition at line 53 of file COpenGLViewport.cpp.

References m_lights.

Member Function Documentation

◆ _GetBaseClass()

static const mrpt::utils::TRuntimeClassId* mrpt::opengl::COpenGLViewport::_GetBaseClass ( )
staticprotected

◆ addLight()

void mrpt::opengl::COpenGLViewport::addLight ( const CLight l)
inline

Append a new light to the scene.

By default there are two lights. "GL_LIGHTING" is disabled if all lights are removed

Definition at line 113 of file COpenGLViewport.h.

◆ begin() [1/2]

const_iterator mrpt::opengl::COpenGLViewport::begin ( ) const
inline

Definition at line 211 of file COpenGLViewport.h.

◆ begin() [2/2]

iterator mrpt::opengl::COpenGLViewport::begin ( )
inline

Definition at line 213 of file COpenGLViewport.h.

◆ clear()

void COpenGLViewport::clear ( )

Delete all internal obejcts.

See also
insert

Definition at line 156 of file COpenGLViewport.cpp.

References m_objects.

Referenced by readFromStream(), setCloneView(), and ~COpenGLViewport().

◆ clone()

CObject* mrpt::utils::CObject::clone ( ) const
inlineinherited

Cloning interface for smart pointers.

Definition at line 143 of file CObject.h.

◆ Create()

static COpenGLViewportPtr mrpt::opengl::COpenGLViewport::Create ( )
static

◆ CreateObject()

static mrpt::utils::CObject* mrpt::opengl::COpenGLViewport::CreateObject ( )
static

◆ dumpListOfObjects()

void COpenGLViewport::dumpListOfObjects ( mrpt::utils::CStringList lst)
protected

Retrieves a list of all objects in text form.

Definition at line 675 of file COpenGLViewport.cpp.

References mrpt::utils::CStringList::add(), CLASS_ID_NAMESPACE, m_objects, and mrpt::utils::CStringList::size().

◆ duplicate()

virtual mrpt::utils::CObject* mrpt::opengl::COpenGLViewport::duplicate ( ) const
virtual

Returns a copy of the object, indepently of its class.

Implements mrpt::utils::CObject.

◆ duplicateGetSmartPtr()

mrpt::utils::CObjectPtr mrpt::utils::CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).

Definition at line 140 of file CObject.h.

Referenced by mrpt::obs::CRawlog::addActions(), mrpt::slam::CIncrementalMapPartitioner::addMapFrame(), and mrpt::obs::CRawlog::addObservations().

◆ empty()

bool mrpt::opengl::COpenGLViewport::empty ( ) const
inline

Definition at line 272 of file COpenGLViewport.h.

◆ enablePolygonNicest()

void mrpt::opengl::COpenGLViewport::enablePolygonNicest ( bool  enable = true)
inline

Sets glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST) is enabled, or GL_FASTEST otherwise.

Definition at line 106 of file COpenGLViewport.h.

◆ end() [1/2]

const_iterator mrpt::opengl::COpenGLViewport::end ( ) const
inline

Definition at line 212 of file COpenGLViewport.h.

◆ end() [2/2]

iterator mrpt::opengl::COpenGLViewport::end ( )
inline

Definition at line 214 of file COpenGLViewport.h.

◆ get3DRayForPixelCoord()

void COpenGLViewport::get3DRayForPixelCoord ( const double  x_coord,
const double  y_coord,
mrpt::math::TLine3D out_ray,
mrpt::poses::CPose3D out_cameraPose = NULL 
) const

Compute the 3D ray corresponding to a given pixel; this can be used to allow the user to pick and select 3D objects by clicking onto the 2D image.

Parameters
x_coordHorizontal coordinate with the usual meaning (0:left of the viewport, W-1: right border).
y_coordHorizontal coordinate with the usual meaning (0:top of the viewport, H-1: right border).
out_cameraPoseIf not NULL, will have the camera 3D pose as a mrpt::poses::CPose3D. See also
Note
(x,y) refer to VIEWPORT coordinates. Take into account this when viewports do not extend to the whole window size.
x and y are double instead of integers to allow sub-pixel precision.
See also
getCurrentCameraPose

Definition at line 735 of file COpenGLViewport.cpp.

References ASSERTDEB_, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::azimuth, mrpt::math::crossProduct3D(), DEG2RAD, mrpt::math::TLine3D::director, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::elev, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::eye, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::FOV, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::is_projective, m_lastProjMat, mrpt::math::TLine3D::pBase, mrpt::math::UNINITIALIZED_MATRIX, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::viewport_height, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::viewport_width, mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, mrpt::math::TPoint3D::z, and mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::zoom.

◆ getBoundingBox()

void COpenGLViewport::getBoundingBox ( mrpt::math::TPoint3D bb_min,
mrpt::math::TPoint3D bb_max 
) const

Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent.

Definition at line 897 of file COpenGLViewport.cpp.

References mrpt::utils::keep_max(), mrpt::utils::keep_min(), m_objects, mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

◆ getByClass()

template<typename T >
T::Ptr mrpt::opengl::COpenGLViewport::getByClass ( const size_t &  ith = 0) const
inline

Returns the i'th object of a given class (or of a descendant class), or NULL (an empty smart pointer) if not found.

Example:

CSpherePtr obs = view.getByClass<CSphere>();

By default (ith=0), the first observation is returned.

Definition at line 242 of file COpenGLViewport.h.

References CLASS_ID_NAMESPACE, MRPT_END, and MRPT_START.

Referenced by render().

◆ getByName()

CRenderizablePtr COpenGLViewport::getByName ( const std::string str)

Returns the first object with a given name, or NULL if not found.

Definition at line 640 of file COpenGLViewport.cpp.

References CLASS_ID_NAMESPACE, and m_objects.

◆ getCamera() [1/2]

opengl::CCamera& mrpt::opengl::COpenGLViewport::getCamera ( )
inline

Get a reference to the camera associated with this viewport.

Definition at line 274 of file COpenGLViewport.h.

◆ getCamera() [2/2]

const opengl::CCamera& mrpt::opengl::COpenGLViewport::getCamera ( ) const
inline

Get a reference to the camera associated with this viewport.

Definition at line 276 of file COpenGLViewport.h.

◆ getCurrentCameraPose()

void COpenGLViewport::getCurrentCameraPose ( mrpt::poses::CPose3D out_cameraPose) const

Compute the current 3D camera pose.

See also
get3DRayForPixelCoord

Definition at line 852 of file COpenGLViewport.cpp.

◆ getCustomBackgroundColor()

mrpt::utils::TColorf mrpt::opengl::COpenGLViewport::getCustomBackgroundColor ( ) const
inline

Definition at line 188 of file COpenGLViewport.h.

◆ getLight() [1/2]

CLight& mrpt::opengl::COpenGLViewport::getLight ( const size_t  i)
inline

Definition at line 118 of file COpenGLViewport.h.

References ASSERT_BELOW_.

◆ getLight() [2/2]

const CLight& mrpt::opengl::COpenGLViewport::getLight ( const size_t  i) const
inline

Definition at line 119 of file COpenGLViewport.h.

References ASSERT_BELOW_.

◆ getName()

std::string mrpt::opengl::COpenGLViewport::getName ( )
inline

Returns the name of the viewport.

Definition at line 128 of file COpenGLViewport.h.

◆ GetRuntimeClass()

virtual const mrpt::utils::TRuntimeClassId* mrpt::opengl::COpenGLViewport::GetRuntimeClass ( ) const
virtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::utils::CSerializable.

◆ getViewportClipDistances()

void COpenGLViewport::getViewportClipDistances ( double &  clip_min,
double &  clip_max 
) const

Get the current min/max clip depth distances of the rendering frustum (default: 0.1 - 10000)

See also
setViewportClipDistances

Definition at line 726 of file COpenGLViewport.cpp.

References m_clip_max, and m_clip_min.

◆ getViewportPosition()

void COpenGLViewport::getViewportPosition ( double &  x,
double &  y,
double &  width,
double &  height 
)

Get the current viewport position and dimension on the rendering window.

X & Y coordinates here can have two interpretations:

  • If in the range [0,1], they are factors with respect to the actual window sizes (i.e. width=1 means the entire width of the rendering window).
  • If >1, they are interpreted as pixels.
    Note
    (x,y) specify the lower left corner of the viewport rectangle.
    See also
    setViewportPosition

Definition at line 141 of file COpenGLViewport.cpp.

References m_view_height, m_view_width, m_view_x, and m_view_y.

◆ hasSubscribers()

bool mrpt::utils::CObservable::hasSubscribers ( ) const
inlineprotectedinherited

Can be called by a derived class before preparing an event for publishing with publishEvent to determine if there is no one subscribed, so it can save the wasted time preparing an event that will be not read.

Definition at line 52 of file CObservable.h.

Referenced by mrpt::gui::CWindowDialog::OnMouseDown(), mrpt::gui::CWindowDialog::OnMouseMove(), mrpt::gui::CWindowDialog::OnResize(), and render().

◆ initializeAllTextures()

void COpenGLViewport::initializeAllTextures ( )
protected

Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL)

Definition at line 659 of file COpenGLViewport.cpp.

References IS_CLASS, IS_DERIVED, and m_objects.

◆ insert()

void COpenGLViewport::insert ( const CRenderizablePtr &  newObject)

Insert a new object into the list.

The object MUST NOT be deleted, it will be deleted automatically by this object when not required anymore.

Definition at line 164 of file COpenGLViewport.cpp.

References m_objects.

◆ internal_setImageView_fast()

void COpenGLViewport::internal_setImageView_fast ( const mrpt::utils::CImage img,
bool  is_fast 
)
protected

◆ isPolygonNicestEnabled()

bool mrpt::opengl::COpenGLViewport::isPolygonNicestEnabled ( ) const
inline

Definition at line 107 of file COpenGLViewport.h.

◆ isTransparent()

bool mrpt::opengl::COpenGLViewport::isTransparent ( )
inline

Return whether the viewport will be rendered transparent over previous viewports.

Definition at line 179 of file COpenGLViewport.h.

◆ lightsClearAll()

void mrpt::opengl::COpenGLViewport::lightsClearAll ( )
inline

Removes all lights (and disables the global "GL_LIGHTING")

Definition at line 110 of file COpenGLViewport.h.

◆ operator delete() [1/3]

void mrpt::opengl::COpenGLViewport::operator delete ( void ptr)
throw (
)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ operator delete() [2/3]

void mrpt::opengl::COpenGLViewport::operator delete ( void memory,
void ptr 
)
throw (
)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ operator delete() [3/3]

void mrpt::opengl::COpenGLViewport::operator delete ( void ptr,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ operator delete[]()

void mrpt::opengl::COpenGLViewport::operator delete[] ( void ptr)
throw (
)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ operator new() [1/3]

static void* mrpt::opengl::COpenGLViewport::operator new ( size_t  size,
void ptr 
)
inlinestatic

Definition at line 60 of file COpenGLViewport.h.

◆ operator new() [2/3]

void* mrpt::opengl::COpenGLViewport::operator new ( size_t  size,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ operator new() [3/3]

void* mrpt::opengl::COpenGLViewport::operator new ( size_t  size)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ operator new[]()

void* mrpt::opengl::COpenGLViewport::operator new[] ( size_t  size)
inline

Definition at line 60 of file COpenGLViewport.h.

◆ publishEvent()

void CObservable::publishEvent ( const mrptEvent e) const
protectedinherited

◆ readFromStream()

void COpenGLViewport::readFromStream ( mrpt::utils::CStream in,
int  version 
)
protectedvirtual

Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.

Parameters
inThe input binary stream where the object data must read from.
versionThe version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions
std::exceptionOn any error, see CStream::ReadBuffer
See also
CStream

Implements mrpt::utils::CSerializable.

Definition at line 576 of file COpenGLViewport.cpp.

References mrpt::utils::TColorf::A, mrpt::utils::TColorf::B, clear(), mrpt::utils::TColorf::G, m_background_color, m_borderWidth, m_camera, m_clonedViewport, m_custom_backgb_color, m_isCloned, m_isClonedCamera, m_isTransparent, m_lights, m_name, m_objects, m_OpenGL_enablePolygonNicest, m_view_height, m_view_width, m_view_x, m_view_y, MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION, mrpt::utils::TColorf::R, and version.

◆ removeObject()

void COpenGLViewport::removeObject ( const CRenderizablePtr &  obj)

Removes the given object from the scene (it also deletes the object to free its memory).

Definition at line 700 of file COpenGLViewport.cpp.

References CLASS_ID_NAMESPACE, and m_objects.

◆ render()

void COpenGLViewport::render ( const int  render_width,
const int  render_height 
) const
protected

Render the objects in this viewport (called from COpenGLScene only)

Definition at line 173 of file COpenGLViewport.cpp.

References mrpt::utils::TColorf::A, ASSERT_, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::azimuth, mrpt::utils::TColorf::B, mrpt::opengl::CRenderizable::checkOpenGLError(), mrpt::utils::TRuntimeClassId::className, DEG2RAD, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::elev, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::eye, mrpt::format(), mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::FOV, mrpt::utils::TColorf::G, getByClass(), mrpt::poses::CPose3D::getRotationMatrix(), mrpt::opengl::CRenderizable::GetRuntimeClass(), GL_ACCUM_BUFFER_BIT, GL_AMBIENT_AND_DIFFUSE, GL_BGR, GL_COLOR_BUFFER_BIT, GL_COLOR_CLEAR_VALUE, GL_COLOR_MATERIAL, GL_DEPTH_BUFFER_BIT, GL_DEPTH_TEST, GL_FASTEST, GL_FRONT_AND_BACK, GL_LEQUAL, GL_LIGHT_MODEL_TWO_SIDE, GL_LIGHTING, GL_LINE_LOOP, GL_LUMINANCE, GL_MODELVIEW, GL_NICEST, GL_PERSPECTIVE_CORRECTION_HINT, GL_POLYGON_SMOOTH_HINT, GL_PROJECTION, GL_RGB, GL_SCISSOR_TEST, GL_SMOOTH, GL_STENCIL_BUFFER_BIT, GL_TRUE, GL_UNPACK_ROW_LENGTH, GL_UNSIGNED_BYTE, glBegin(), glClear(), glClearColor(), glColor4f(), glColorMaterial(), glDepthFunc(), glDisable(), glDrawPixels(), glEnable(), glEnd(), glGetDoublev(), glHint(), glLightModeli(), glLineWidth(), glLoadIdentity(), glMatrixMode(), glOrtho(), glPixelStorei(), glPixelZoom(), glRasterPos2f(), glScissor(), glShadeModel(), glVertex2f(), glViewport(), mrpt::utils::CObservable::hasSubscribers(), mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::is_projective, m_background_color, m_borderWidth, m_camera, m_clip_max, m_clip_min, m_clonedViewport, m_custom_backgb_color, mrpt::opengl::CCamera::m_distanceZoom, m_imageview_img, m_isCloned, m_isClonedCamera, m_isImageView, m_isTransparent, m_lastProjMat, m_lights, m_objects, m_OpenGL_enablePolygonNicest, m_parent, m_view_height, m_view_width, m_view_x, m_view_y, MRPT_UNUSED_PARAM, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::pointing, mrpt::utils::CObservable::publishEvent(), mrpt::utils::TColorf::R, mrpt::opengl::gl_utils::renderSetOfObjects(), THROW_EXCEPTION, THROW_EXCEPTION_FMT, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::up, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::viewport_height, mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::viewport_width, mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), mrpt::math::TPoint3D::x, mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y(), mrpt::math::TPoint3D::y, mrpt::math::TPoint3D::z, and mrpt::opengl::COpenGLViewport::TLastProjectiveMatrixInfo::zoom.

◆ resetCloneView()

void mrpt::opengl::COpenGLViewport::resetCloneView ( )
inline

Reset the viewport to normal mode: rendering its own objects.

See also
setCloneView, setNormalMode

Definition at line 89 of file COpenGLViewport.h.

◆ setBorderSize()

void mrpt::opengl::COpenGLViewport::setBorderSize ( unsigned int  lineWidth)
inline

Set the border size ("frame") of the viewport (default=0).

Definition at line 175 of file COpenGLViewport.h.

◆ setCloneCamera()

void mrpt::opengl::COpenGLViewport::setCloneCamera ( bool  enable)
inline

If set to true, and setCloneView() has been called, this viewport will be rendered using the camera of the cloned viewport.

Definition at line 93 of file COpenGLViewport.h.

◆ setCloneView()

void COpenGLViewport::setCloneView ( const std::string clonedViewport)

Set this viewport as a clone of some other viewport, given its name - as a side effect, current list of internal OpenGL objects is cleared.

By default, only the objects are cloned, not the camera. See

See also
resetCloneView

Definition at line 110 of file COpenGLViewport.cpp.

References clear(), m_clonedViewport, and m_isCloned.

◆ setCustomBackgroundColor()

void mrpt::opengl::COpenGLViewport::setCustomBackgroundColor ( const mrpt::utils::TColorf color)
inline

Set a background color different from that of the parent GUI window.

Definition at line 186 of file COpenGLViewport.h.

◆ setImageView()

void COpenGLViewport::setImageView ( const mrpt::utils::CImage img)

Set this viewport into "image view"-mode, where an image is efficiently drawn (fitting the viewport area) using an OpenGL textured quad.

Call this method with the new image to update the displayed image (but recall to first lock the parent openglscene's critical section, then do the update, then release the lock, and then issue a window repaint). Internally, the texture is drawn using a mrpt::opengl::CTexturedPlane The viewport can be reverted to behave like a normal viewport by calling setNormalMode()

See also
setImageView_fast

Definition at line 871 of file COpenGLViewport.cpp.

References internal_setImageView_fast().

◆ setImageView_fast()

void COpenGLViewport::setImageView_fast ( mrpt::utils::CImage img)

Just like setImageView but moves the internal image memory instead of making a copy, so it's faster but empties the input image.

See also
setImageView

Definition at line 875 of file COpenGLViewport.cpp.

References internal_setImageView_fast().

◆ setNormalMode()

void COpenGLViewport::setNormalMode ( )

Resets the viewport to a normal 3D viewport.

See also
setCloneView, setImageView

Definition at line 860 of file COpenGLViewport.cpp.

References m_imageview_img, m_isCloned, m_isClonedCamera, and m_isImageView.

◆ setNumberOfLights()

void mrpt::opengl::COpenGLViewport::setNumberOfLights ( const size_t  N)
inline

Allocates a number of lights, which must be correctly defined via getLight(i), etc.

Definition at line 116 of file COpenGLViewport.h.

◆ setTransparent()

void mrpt::opengl::COpenGLViewport::setTransparent ( bool  trans)
inline

Set the transparency, that is, whether the viewport will be rendered transparent over previous viewports (default=false).

Definition at line 183 of file COpenGLViewport.h.

◆ setViewportClipDistances()

void COpenGLViewport::setViewportClipDistances ( const double  clip_min,
const double  clip_max 
)

Set the min/max clip depth distances of the rendering frustum (default: 0.1 - 10000)

See also
getViewportClipDistances

Definition at line 715 of file COpenGLViewport.cpp.

References ASSERT_, m_clip_max, and m_clip_min.

◆ setViewportPosition()

void COpenGLViewport::setViewportPosition ( const double  x,
const double  y,
const double  width,
const double  height 
)

Change the viewport position and dimension on the rendering window.

X & Y coordinates here can have two interpretations:

  • If in the range [0,1], they are factors with respect to the actual window sizes (i.e. width=1 means the entire width of the rendering window).
  • If >1, they are interpreted as pixels.

width & height can be interpreted as:

  • If >1, they are the size of the viewport in that dimension, in pixels.
  • If in [0,1], they are the size of the viewport in that dimension, in a factor of the width/height.
  • If in [-1,0[, the size is computed such as the right/top border ends up in the given coordinate, interpreted as a factor (e.g. -1: up to the end of the viewport, -0.5: up to the middle of it).
  • If <-1 the size is computed such as the right/top border ends up in the given absolute coordinate (e.g. -200: up to the row/column 200px).
Note
(x,y) specify the lower left corner of the viewport rectangle.
See also
getViewportPosition

Definition at line 120 of file COpenGLViewport.cpp.

References ASSERT_, m_view_height, m_view_width, m_view_x, m_view_y, MRPT_END, and MRPT_START.

◆ size()

size_t mrpt::opengl::COpenGLViewport::size ( ) const
inline

Number of objects contained.

Definition at line 270 of file COpenGLViewport.h.

◆ writeToMatlab()

virtual mxArray* mrpt::utils::CSerializable::writeToMatlab ( ) const
inlinevirtualinherited

Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class.

Returns
A new mxArray (caller is responsible of memory freeing) or NULL is class does not support conversion to MATLAB.

Definition at line 79 of file CSerializable.h.

◆ writeToStream()

void COpenGLViewport::writeToStream ( mrpt::utils::CStream out,
int *  getVersion 
) const
protectedvirtual

Introduces a pure virtual method responsible for writing to a CStream.

This can not be used directly be users, instead use "stream << object;" for writing it to a stream.

Parameters
outThe output binary stream where object must be dumped.
getVersionIf NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data.
Exceptions
std::exceptionOn any error, see CStream::WriteBuffer
See also
CStream

Implements mrpt::utils::CSerializable.

Definition at line 539 of file COpenGLViewport.cpp.

References mrpt::utils::TColorf::A, mrpt::utils::TColorf::B, mrpt::utils::TColorf::G, m_background_color, m_borderWidth, m_camera, m_clonedViewport, m_custom_backgb_color, m_isCloned, m_isClonedCamera, m_isTransparent, m_lights, m_name, m_objects, m_OpenGL_enablePolygonNicest, m_view_height, m_view_width, m_view_x, m_view_y, mrpt::utils::TColorf::R, and version.

Friends And Related Function Documentation

◆ COpenGLScene

friend class COpenGLScene
friend

Definition at line 61 of file COpenGLViewport.h.

Member Data Documentation

◆ _init_COpenGLViewport

mrpt::utils::CLASSINIT mrpt::opengl::COpenGLViewport::_init_COpenGLViewport
staticprotected

Definition at line 60 of file COpenGLViewport.h.

◆ classCObject

const mrpt::utils::TRuntimeClassId mrpt::utils::CObject::classCObject
staticinherited

Definition at line 128 of file CObject.h.

◆ classCOpenGLViewport

mrpt::utils::TRuntimeClassId mrpt::opengl::COpenGLViewport::classCOpenGLViewport
static

Definition at line 60 of file COpenGLViewport.h.

◆ classCSerializable

const mrpt::utils::TRuntimeClassId mrpt::utils::CSerializable::classCSerializable
staticinherited

Definition at line 42 of file CSerializable.h.

◆ classinfo

const mrpt::utils::TRuntimeClassId* mrpt::opengl::COpenGLViewport::classinfo
static

Definition at line 60 of file COpenGLViewport.h.

◆ m_background_color

mrpt::utils::TColorf mrpt::opengl::COpenGLViewport::m_background_color
protected

used only if m_custom_backgb_color

Definition at line 316 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), and writeToStream().

◆ m_borderWidth

uint32_t mrpt::opengl::COpenGLViewport::m_borderWidth
protected

Default=0, the border around the viewport.

Definition at line 312 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), and writeToStream().

◆ m_camera

opengl::CCamera mrpt::opengl::COpenGLViewport::m_camera
protected

The camera associated to the viewport.

Definition at line 305 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), and writeToStream().

◆ m_clip_max

double mrpt::opengl::COpenGLViewport::m_clip_max
protected

The min/max clip depth distances (default: 0.1 - 10000)

Definition at line 314 of file COpenGLViewport.h.

Referenced by getViewportClipDistances(), render(), and setViewportClipDistances().

◆ m_clip_min

double mrpt::opengl::COpenGLViewport::m_clip_min
protected

Definition at line 314 of file COpenGLViewport.h.

Referenced by getViewportClipDistances(), render(), and setViewportClipDistances().

◆ m_clonedViewport

std::string mrpt::opengl::COpenGLViewport::m_clonedViewport
protected

Only if m_isCloned=true.

Definition at line 309 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), setCloneView(), and writeToStream().

◆ m_custom_backgb_color

bool mrpt::opengl::COpenGLViewport::m_custom_backgb_color
protected

Definition at line 315 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), and writeToStream().

◆ m_imageview_img

mrpt::utils::CImagePtr mrpt::opengl::COpenGLViewport::m_imageview_img
protected

The image to display, after calling setImageView()

Definition at line 319 of file COpenGLViewport.h.

Referenced by internal_setImageView_fast(), render(), and setNormalMode().

◆ m_isCloned

bool mrpt::opengl::COpenGLViewport::m_isCloned
protected

Set by setCloneView.

Definition at line 307 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), setCloneView(), setNormalMode(), and writeToStream().

◆ m_isClonedCamera

bool mrpt::opengl::COpenGLViewport::m_isClonedCamera
protected

Set by setCloneCamera.

Definition at line 308 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), setNormalMode(), and writeToStream().

◆ m_isImageView

bool mrpt::opengl::COpenGLViewport::m_isImageView
protected

Set by setImageView.

Definition at line 317 of file COpenGLViewport.h.

Referenced by internal_setImageView_fast(), render(), and setNormalMode().

◆ m_isTransparent

bool mrpt::opengl::COpenGLViewport::m_isTransparent
protected

Whether to clear color buffer.

Definition at line 311 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), and writeToStream().

◆ m_lastProjMat

TLastProjectiveMatrixInfo mrpt::opengl::COpenGLViewport::m_lastProjMat
mutableprotected

Info updated with each "render()" and used in "get3DRayForPixelCoord".

Definition at line 334 of file COpenGLViewport.h.

Referenced by get3DRayForPixelCoord(), and render().

◆ m_lights

std::vector<CLight> mrpt::opengl::COpenGLViewport::m_lights
protected

Definition at line 346 of file COpenGLViewport.h.

Referenced by COpenGLViewport(), readFromStream(), render(), and writeToStream().

◆ m_name

std::string mrpt::opengl::COpenGLViewport::m_name
protected

The viewport's name.

Definition at line 310 of file COpenGLViewport.h.

Referenced by readFromStream(), and writeToStream().

◆ m_objects

opengl::CListOpenGLObjects mrpt::opengl::COpenGLViewport::m_objects
protected

The list of objects that comprise the 3D scene.

Objects are automatically deleted when calling "clear" or in the destructor.

Definition at line 339 of file COpenGLViewport.h.

Referenced by clear(), dumpListOfObjects(), getBoundingBox(), getByName(), initializeAllTextures(), insert(), readFromStream(), removeObject(), render(), and writeToStream().

◆ m_OpenGL_enablePolygonNicest

bool mrpt::opengl::COpenGLViewport::m_OpenGL_enablePolygonNicest
protected

Definition at line 344 of file COpenGLViewport.h.

Referenced by readFromStream(), render(), and writeToStream().

◆ m_parent

utils::safe_ptr<COpenGLScene> mrpt::opengl::COpenGLViewport::m_parent
protected

The scene that contains this viewport.

Definition at line 306 of file COpenGLViewport.h.

Referenced by render().

◆ m_view_height

double mrpt::opengl::COpenGLViewport::m_view_height
protected

The viewport position [0,1].

Definition at line 313 of file COpenGLViewport.h.

Referenced by getViewportPosition(), readFromStream(), render(), setViewportPosition(), and writeToStream().

◆ m_view_width

double mrpt::opengl::COpenGLViewport::m_view_width
protected

◆ m_view_x

double mrpt::opengl::COpenGLViewport::m_view_x
protected

◆ m_view_y

double mrpt::opengl::COpenGLViewport::m_view_y
protected



Page generated by Doxygen 1.8.14 for MRPT 1.5.6 Git: 4c65e8431 Tue Apr 24 08:18:17 2018 +0200 at lun oct 28 01:35:26 CET 2019