9 #ifndef opengl_COpenGLViewport_H
10 #define opengl_COpenGLViewport_H
25 namespace utils {
class CImage; }
57 public
mrpt::utils::CSerializable,
58 public
mrpt::utils::CObservable
71 void setCloneView( const std::
string &clonedViewport );
79 void setImageView(const
mrpt::utils::CImage &
img);
84 void setImageView_fast(
mrpt::utils::CImage &
img);
89 inline
void resetCloneView() { setNormalMode(); }
144 void setViewportPosition(
157 void getViewportPosition(
166 void setViewportClipDistances(
const double clip_min,
const double clip_max);
171 void getViewportClipDistances(
double &clip_min,
double &clip_max)
const;
175 inline void setBorderSize(
unsigned int lineWidth ) { m_borderWidth = lineWidth; }
223 void insert(
const CRenderizablePtr &newObject );
232 CRenderizablePtr getByName(
const std::string &str );
241 template <
typename T>
245 size_t foundCount = 0;
248 if ( (*it).present() && (*it)->GetRuntimeClass()->derivedFrom( class_ID ) )
249 if (foundCount++ == ith)
250 return typename T::Ptr(*it);
257 typename T::Ptr o = CSetOfObjectsPtr(*it)->getByClass<T>(ith);
258 if (o.present())
return o;
261 return typename T::Ptr();
267 void removeObject(
const CRenderizablePtr &
obj );
270 inline size_t size()
const {
return m_objects.size(); }
272 inline bool empty()
const {
return m_objects.empty(); }
295 void initializeAllTextures();
302 void render(
const int render_width,
const int render_height )
const;
323 TLastProjectiveMatrixInfo() :
eye(0,0,0),pointing(0,0,0),up(0,0,0), viewport_width(640), viewport_height(480), FOV(30),
azimuth(0), elev(0), zoom(1),is_projective(true)
353 inline COpenGLViewportPtr &operator<<(COpenGLViewportPtr &
s,const CRenderizablePtr &
r) {
361 inline COpenGLViewportPtr &
operator<<(COpenGLViewportPtr &
s,
const std::vector<CRenderizablePtr> &
v) {
#define CLASS_ID_NAMESPACE(class_name, namespaceName)
Access to runtime class ID for a defined class name.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
A camera: if added to a scene, the viewpoint defined by this camera will be used instead of the camer...
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
A viewport within a COpenGLScene, containing a set of OpenGL objects to render.
const_iterator end() const
std::string m_clonedViewport
Only if m_isCloned=true.
opengl::CListOpenGLObjects m_objects
The list of objects that comprise the 3D scene.
CLight & getLight(const size_t i)
std::string getName()
Returns the name of the viewport.
CListOpenGLObjects::iterator iterator
bool isTransparent()
Return whether the viewport will be rendered transparent over previous viewports.
size_t size() const
Number of objects contained.
const CLight & getLight(const size_t i) const
void enablePolygonNicest(bool enable=true)
Sets glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST) is enabled, or GL_FASTEST otherwise.
void setCustomBackgroundColor(const mrpt::utils::TColorf &color)
Set a background color different from that of the parent GUI window.
void setTransparent(bool trans)
Set the transparency, that is, whether the viewport will be rendered transparent over previous viewpo...
const opengl::CCamera & getCamera() const
Get a reference to the camera associated with this viewport.
bool m_isClonedCamera
Set by setCloneCamera.
bool m_custom_backgb_color
void setNumberOfLights(const size_t N)
Allocates a number of lights, which must be correctly defined via getLight(i), etc.
uint32_t m_borderWidth
Default=0, the border around the viewport.
void lightsClearAll()
Removes all lights (and disables the global "GL_LIGHTING")
bool m_isTransparent
Whether to clear color buffer.
void addLight(const CLight &l)
Append a new light to the scene.
double m_clip_max
The min/max clip depth distances (default: 0.1 - 10000)
utils::safe_ptr< COpenGLScene > m_parent
The scene that contains this viewport.
bool m_isImageView
Set by setImageView.
double m_view_height
The viewport position [0,1].
bool isPolygonNicestEnabled() const
opengl::CCamera m_camera
The camera associated to the viewport.
std::vector< CLight > m_lights
mrpt::utils::CImagePtr m_imageview_img
The image to display, after calling setImageView()
mrpt::utils::TColorf getCustomBackgroundColor() const
void setCloneCamera(bool enable)
If set to true, and setCloneView() has been called, this viewport will be rendered using the camera o...
bool m_isCloned
Set by setCloneView.
TLastProjectiveMatrixInfo m_lastProjMat
Info updated with each "render()" and used in "get3DRayForPixelCoord".
std::string m_name
The viewport's name.
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)...
mrpt::utils::TColorf m_background_color
used only if m_custom_backgb_color
void setBorderSize(unsigned int lineWidth)
Set the border size ("frame") of the viewport (default=0).
CListOpenGLObjects::const_iterator const_iterator
opengl::CCamera & getCamera()
Get a reference to the camera associated with this viewport.
const_iterator begin() const
bool m_OpenGL_enablePolygonNicest
A set of object, which are referenced to the coordinates framework established in this object.
An event sent by an mrpt::opengl::COpenGLViewport after calling the scene OpenGL drawing primitives a...
void do_nothing() MRPT_OVERRIDE
Just to allow this class to be polymorphic.
const COpenGLViewport *const source_viewport
mrptEventGLPostRender(const COpenGLViewport *obj)
An event sent by an mrpt::opengl::COpenGLViewport just after clearing the viewport and setting the GL...
void do_nothing() MRPT_OVERRIDE
Just to allow this class to be polymorphic.
mrptEventGLPreRender(const COpenGLViewport *obj)
const COpenGLViewport *const source_viewport
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
A class for storing images as grayscale or RGB bitmaps.
The virtual base class which provides a unified interface for all persistent objects in MRPT.
A class for storing a list of text lines.
The basic event type for the observer-observable pattern in MRPT.
EIGEN_STRONG_INLINE void eye()
Make the matrix an identity matrix
const Scalar * const_iterator
GLsizei GLsizei GLuint * obj
GLdouble GLdouble GLdouble r
GLuint const GLchar * name
GLenum GLsizei GLsizei height
GLsizei const GLchar ** string
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
#define ASSERT_BELOW_(__A, __B)
The namespace for 3D scene representation and rendering.
OPENGL_IMPEXP mrpt::utils::CStream & operator<<(mrpt::utils::CStream &out, const mrpt::opengl::CLight &o)
std::deque< CRenderizablePtr > CListOpenGLObjects
A list of objects pointers, automatically managing memory free at destructor, and managing copies cor...
void clear()
Clear the contents of this container.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
unsigned __int32 uint32_t
3D line, represented by a base point and a director vector.
Each of the possible lights of a 3D scene.
TLastProjectiveMatrixInfo()
mrpt::math::TPoint3D pointing
The camera points to here.
mrpt::math::TPoint3D eye
The camera is here.
mrpt::math::TPoint3D up
Up vector of the camera.
size_t viewport_height
In pixels. This may be smaller than the total render window.
A RGB color - floats in the range [0,1].
A structure that holds runtime class type information.
A wrapper class for pointers that can be safely copied with "=" operator without problems.