MRPT logo
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends

mrpt::opengl::COpenGLViewport Class Reference

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

#include <mrpt/opengl/COpenGLViewport.h>

Inheritance diagram for mrpt::opengl::COpenGLViewport:
Inheritance graph
[legend]
Collaboration diagram for mrpt::opengl::COpenGLViewport:
Collaboration graph
[legend]

List of all members.

Classes

struct  TLastProjectiveMatrixInfo

Public Member Functions

void setCloneView (const std::string &clonedViewport)
 Set this view as a clone of some other viewport, given its name - as a side effect, current list of internal OpenGL objects is cleared.
void resetCloneView ()
 Reset the viewport to normal mode: rendering its own objects.
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.
void clear ()
 Delete all internal obejcts.
void insert (const CRenderizablePtr &newObject)
 Insert a new object into the list.
std::string getName ()
 Returns the name of the viewport.
void setViewportPosition (const double &x, const double &y, const double &width, const double &height)
 Change the viewport position and dimension on the rendering window.
void getViewportPosition (double &x, double &y, double &width, double &height)
 Get the current viewport position and dimension on the rendering window.
void setViewportClipDistances (const double clip_min, const double clip_max)
 Set the min/max clip depth distances for rendering (default: 0.1 - 10000).
void getViewportClipDistances (double &clip_min, double &clip_max) const
 Get the current min/max clip depth distances for rendering (default: 0.1 - 10000).
void setBorderSize (unsigned int lineWidth)
 Set the border size ("frame") of the viewport (default=0).
bool isTransparent ()
 Return whether the viewport will be rendered transparent over previous viewports.
void setTransparent (bool trans)
 Set the transparency, that is, whether the viewport will be rendered transparent over previous viewports (default=false).
virtual ~COpenGLViewport ()
 Destructor: clears all objects.
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.
void getCurrentCameraPose (mrpt::poses::CPose3D &out_cameraPose) const
 Compute the current 3D camera pose.
CRenderizablePtr getByName (const std::string &str)
 Returns the first object with a given name, or NULL if not found.
template<typename T >
T::SmartPtr 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.
void removeObject (const CRenderizablePtr &obj)
 Removes the given object from the scene (it also deletes the object to free its memory).
size_t size () const
 Number of objects contained.
opengl::CCamera & getCamera ()
 Get a reference to the camera associated with this viewport.
const opengl::CCamera & getCamera () const
 Get a reference to the camera associated with this viewport.

Protected Member Functions

 COpenGLViewport (COpenGLScene *parent=NULL, const std::string &name=std::string(""))
 Constructor, invoked from COpenGLScene only.
void initializeAllTextures ()
 Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL).
void dumpListOfObjects (utils::CStringList &lst)
 Retrieves a list of all objects in text form.
void render (const int render_width, const int render_height) const
 Render the objects in this viewport (called from COpenGLScene only).

Protected Attributes

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

Friends

class COpenGLScene

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. Refer to opengl::COpenGLScene for further details.

Definition at line 57 of file COpenGLViewport.h.


Constructor & Destructor Documentation

virtual mrpt::opengl::COpenGLViewport::~COpenGLViewport (  )  [virtual]

Destructor: clears all objects.

mrpt::opengl::COpenGLViewport::COpenGLViewport ( COpenGLScene *  parent = NULL,
const std::string &  name = std::string("") 
) [protected]

Constructor, invoked from COpenGLScene only.


Member Function Documentation

void mrpt::opengl::COpenGLViewport::clear (  ) 

Delete all internal obejcts.

See also:
insert
void mrpt::opengl::COpenGLViewport::dumpListOfObjects ( utils::CStringList &  lst  )  [protected]

Retrieves a list of all objects in text form.

void mrpt::opengl::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_coord Horizontal coordinate with the usual meaning (0:left of the viewport, W-1: right border).
y_coord Horizontal coordinate with the usual meaning (0:top of the viewport, H-1: right border).
out_cameraPose If 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
template<typename T >
T::SmartPtr 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 167 of file COpenGLViewport.h.

References CLASS_ID_NAMESPACE.

CRenderizablePtr mrpt::opengl::COpenGLViewport::getByName ( const std::string &  str  ) 

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

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

Get a reference to the camera associated with this viewport.

Definition at line 201 of file COpenGLViewport.h.

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

Get a reference to the camera associated with this viewport.

Definition at line 199 of file COpenGLViewport.h.

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

Compute the current 3D camera pose.

See also:
get3DRayForPixelCoord
std::string mrpt::opengl::COpenGLViewport::getName (  )  [inline]

Returns the name of the viewport.

Definition at line 90 of file COpenGLViewport.h.

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

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

See also:
setViewportClipDistances
void mrpt::opengl::COpenGLViewport::getViewportPosition ( double &  x,
double &  y,
double &  width,
double &  height 
)

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

Coordinates here are alwasys in the range [0,1], relative to the actual window sizes (i.e. width=1 means the entire width of the rendering window).

Note:
(x,y) specify the lower left corner of the viewport rectangle.
See also:
setViewportPosition
void mrpt::opengl::COpenGLViewport::initializeAllTextures (  )  [protected]

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

void mrpt::opengl::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.

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

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

Definition at line 132 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::removeObject ( const CRenderizablePtr &  obj  ) 

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

void mrpt::opengl::COpenGLViewport::render ( const int  render_width,
const int  render_height 
) const [protected]

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

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

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

See also:
setCloneView

Definition at line 72 of file COpenGLViewport.h.

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

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

Definition at line 128 of file COpenGLViewport.h.

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 76 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::setCloneView ( const std::string &  clonedViewport  ) 

Set this view 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
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 136 of file COpenGLViewport.h.

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

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

See also:
getViewportClipDistances
void mrpt::opengl::COpenGLViewport::setViewportPosition ( const double &  x,
const double &  y,
const double &  width,
const double &  height 
)

Change the viewport position and dimension on the rendering window.

Coordinates here are alwasys in the range [0,1], relative to the actual window sizes (i.e. width=1 means the entire width of the rendering window).

Note:
(x,y) specify the lower left corner of the viewport rectangle.
See also:
getViewportPosition
size_t mrpt::opengl::COpenGLViewport::size (  )  const [inline]

Number of objects contained.

Definition at line 197 of file COpenGLViewport.h.


Friends And Related Function Documentation

friend class COpenGLScene [friend]

Definition at line 61 of file COpenGLViewport.h.


Member Data Documentation

Default=0, the border around the viewport.

Definition at line 227 of file COpenGLViewport.h.

The camera associated to the viewport.

Definition at line 220 of file COpenGLViewport.h.

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

Definition at line 229 of file COpenGLViewport.h.

Definition at line 229 of file COpenGLViewport.h.

Only if m_isCloned=true.

Definition at line 224 of file COpenGLViewport.h.

Set by setCloneView.

Definition at line 222 of file COpenGLViewport.h.

Set by setCloneCamera.

Definition at line 223 of file COpenGLViewport.h.

Whether to clear color buffer.

Definition at line 226 of file COpenGLViewport.h.

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

Definition at line 243 of file COpenGLViewport.h.

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

The viewport's name.

Definition at line 225 of file COpenGLViewport.h.

The list of objects that comprise the 3D scene.

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

Definition at line 248 of file COpenGLViewport.h.

The scene that contains this viewport.

Definition at line 221 of file COpenGLViewport.h.

The viewport position [0,1].

Definition at line 228 of file COpenGLViewport.h.

Definition at line 228 of file COpenGLViewport.h.

Definition at line 228 of file COpenGLViewport.h.

Definition at line 228 of file COpenGLViewport.h.




Page generated by Doxygen 1.7.1 for MRPT 0.8.1 SVN:exported at Sun Sep 19 14:53:45 UTC 2010