Ignition Rendering

API Reference

0.1.0
BaseCamera< T > Class Template Referenceabstract

#include <BaseCamera.hh>

Public Member Functions

virtual ~BaseCamera ()
 
virtual unsigned int AntiAliasing () const
 Get the level of anti-aliasing used during rendering. More...
 
virtual double AspectRatio () const
 Get the camera's aspect ratio. More...
 
virtual void Capture (Image &_image)
 Renders a new frame and writes the results to the given image. This is a convenience function for single-camera scenes. It wraps the pre-render, render, post-render, and get-image calls into a single function. This should be used in applications with multiple cameras or multiple consumers of a single camera's images. More...
 
virtual common::ConnectionPtr ConnectNewImageFrame (Camera::NewFrameListener _listener)
 Subscribes a new listener to this camera's new frame event. More...
 
virtual void Copy (Image &_image) const
 Writes the last rendered image to the given image buffer. This function can be called multiple times after PostRender has been called, without rendering the scene again. Calling this function before a single image has been rendered will have undefined behavior. More...
 
virtual Image CreateImage () const
 Created an empty image buffer for capturing images. The resulting image will have sufficient memory allocated for subsequent calls to this camera's Capture function. However, any changes to this cameras properties may invalidate the condition. More...
 
virtual RenderWindowPtr CreateRenderWindow ()
 Create a render window. More...
 
virtual double FarClipPlane () const
 Get the camera's far clipping plane distance. More...
 
virtual math::Vector3d FollowOffset () const
 Get the follow offset vector in the frame specified at the time the follow target is set. More...
 
virtual double FollowPGain () const
 Get the camera follow movement P gain. More...
 
virtual NodePtr FollowTarget () const
 Get the target node being followed. More...
 
virtual math::Angle HFOV () const
 Get the camera's horizontal field-of-view. More...
 
virtual PixelFormat ImageFormat () const
 Get the image pixel format. If the image pixel format has not been set with a valid value, PF_UNKNOWN will be returned. More...
 
virtual unsigned int ImageHeight () const
 Get the image height in pixels. More...
 
virtual unsigned int ImageMemorySize () const
 Get the total image memory size in bytes. More...
 
virtual unsigned int ImageWidth () const
 Get the image width in pixels. More...
 
virtual double NearClipPlane () const
 Get the camera's near clipping plane distance. More...
 
virtual void PostRender ()
 Preforms any necessary final rendering work. Once rendering is complete the camera will alert any listeners of the new frame event. This function should only be called after a call to Render has successfully been executed. More...
 
virtual void PreRender ()
 Prepare this object and any of its children for rendering. This should be called for each object in a scene just before rendering, which can be achieved by a single call to Scene::PreRender. More...
 
virtual math::Matrix4d ProjectionMatrix () const
 Get the projection matrix for this camera. More...
 
virtual bool SaveFrame (const std::string &_name)
 Writes the previously rendered frame to a file. This function can be called multiple times after PostRender has been called, without rendering the scene again. Calling this function before a single image has been rendered will have undefined behavior. More...
 
virtual void SetAntiAliasing (const unsigned int _aa)
 Set the level of anti-aliasing used during rendering. If a value of 0 is given, no anti-aliasing will be performed. Higher values can significantly slow-down rendering times, depending on the underlying render engine. More...
 
virtual void SetAspectRatio (const double _ratio)
 Set the camera's aspect ratio. This value determines the cameras vertical field-of-view. It is often the. More...
 
virtual void SetFarClipPlane (const double _far)
 Set the camera's far clipping plane distance. More...
 
virtual void SetFollowOffset (const math::Vector3d &_offset)
 Set offset of camera from target node being followed. The offset will be in the frame that is specified at the time the follow target is set. More...
 
virtual void SetFollowPGain (const double _pGain)
 Set follow P Gain. Determines how fast the camera moves to follow the target node. Valid range: [0-1]. More...
 
virtual void SetFollowTarget (const NodePtr &_target, const math::Vector3d &_Offset, const bool _worldFrame)
 Set a node for camera to follow. The camera will automatically update its position to keep itself at the specified offset distance from the target being followed. If null is specified, camera follow is disabled. In contrast to SetTrackTarget, the camera does not change its orientation when following is enabled. More...
 
virtual void SetHFOV (const math::Angle &_hfov)
 Set the camera's horizontal field-of-view. More...
 
virtual void SetImageFormat (PixelFormat _format)
 Set the image pixel format. More...
 
virtual void SetImageHeight (const unsigned int _height)
 Set the image height in pixels. More...
 
virtual void SetImageWidth (const unsigned int _width)
 Set the image width in pixels. More...
 
virtual void SetNearClipPlane (const double _near)
 Set the camera's near clipping plane distance. More...
 
virtual void SetTrackOffset (const math::Vector3d &_offset)
 Set track offset. Camera will track a point that's at an offset from the target node. The offset will be in the frame that is specified at the time the track target is set. More...
 
virtual void SetTrackPGain (const double _pGain)
 Set track P Gain. Determines how fast the camera rotates to look at the target node. Valid range: [0-1]. More...
 
virtual void SetTrackTarget (const NodePtr &_target, const math::Vector3d &_offset, const bool _worldFrame)
 Set a node for camera to track. The camera will automatically change its orientation to face the target being tracked. If null is specified, tracking is disabled. In contrast to SetFollowTarget the camera does not change its position when tracking is enabled. More...
 
virtual math::Vector3d TrackOffset () const
 Get the track offset vector in the frame specified at the time the track target is set. More...
 
virtual double TrackPGain () const
 Get the camera track rotation P gain. More...
 
virtual NodePtr TrackTarget () const
 Get the target node being tracked. More...
 
virtual void Update ()
 Renders a new frame. This is a convenience function for single-camera scenes. It wraps the pre-render, render, and post-render into a single function. This should be used in applications with multiple cameras or multiple consumers of a single camera's images. More...
 
virtual math::Matrix4d ViewMatrix () const
 Get the view matrix for this camera. More...
 
- Public Member Functions inherited from Camera
virtual ~Camera ()
 Deconstructor. More...
 
virtual void Render ()=0
 Renders the current scene using this camera. This function assumes PreRender() has already been called on the parent Scene, allowing the camera and the scene itself to prepare for rendering. More...
 
- Public Member Functions inherited from Sensor
virtual ~Sensor ()
 Sensor. More...
 
- Public Member Functions inherited from Node
virtual ~Node ()
 Deconstructor. More...
 
virtual bool HasParent () const =0
 Determine if this Geometry is attached to a Visual. More...
 
virtual math::Pose3d LocalPose () const =0
 Get the local pose. More...
 
virtual math::Vector3d LocalPosition () const =0
 Get the local position. More...
 
virtual math::Quaterniond LocalRotation () const =0
 Get the local rotation. More...
 
virtual math::Vector3d Origin () const =0
 Get position of origin. More...
 
virtual VisualPtr Parent () const =0
 Get the parent Visual. More...
 
virtual void RemoveParent ()=0
 Detach this Geometry from its parent Visual. If this Geometry does not have a parent, no work will be done. More...
 
virtual void SetLocalPose (const math::Pose3d &_pose)=0
 Set the local pose. More...
 
virtual void SetLocalPosition (double _x, double _y, double _z)=0
 Set the local position. More...
 
virtual void SetLocalPosition (const math::Vector3d &_position)=0
 Set the local position. More...
 
virtual void SetLocalRotation (double _r, double _p, double _y)=0
 Set the local rotation. More...
 
virtual void SetLocalRotation (double _w, double _x, double _y, double _z)=0
 Set the local rotation. More...
 
virtual void SetLocalRotation (const math::Quaterniond &_rotation)=0
 Set the local rotation. More...
 
virtual void SetOrigin (double _x, double _y, double _z)=0
 Set position of origin. The position should be relative to the original origin of the geometry. More...
 
virtual void SetOrigin (const math::Vector3d &_origin)=0
 Set position of origin. The position should be relative to the original origin of the geometry. More...
 
virtual void SetWorldPose (const math::Pose3d &_pose)=0
 Set the world pose. More...
 
virtual void SetWorldPosition (double _x, double _y, double _z)=0
 Set the world position. More...
 
virtual void SetWorldPosition (const math::Vector3d &_position)=0
 Set the world position. More...
 
virtual void SetWorldRotation (double _r, double _p, double _y)=0
 Set the world rotation. More...
 
virtual void SetWorldRotation (double _w, double _x, double _y, double _z)=0
 Set the world rotation. More...
 
virtual void SetWorldRotation (const math::Quaterniond &_rotation)=0
 Set the world rotation. More...
 
virtual math::Pose3d WorldPose () const =0
 Get the world pose. More...
 
virtual math::Vector3d WorldPosition () const =0
 Get the world position. More...
 
virtual math::Quaterniond WorldRotation () const =0
 Get the world rotation. More...
 
virtual math::Pose3d WorldToLocal (const math::Pose3d &_pose) const =0
 Convert given world pose to local pose. More...
 
- Public Member Functions inherited from Object
virtual ~Object ()
 Deconstructor. More...
 
virtual void Destroy ()=0
 Destroy any resources associated with this object. Invoking any other functions after destroying an object will result in undefined behavior. More...
 
virtual unsigned int Id () const =0
 Get the object ID. This ID will be unique across all objects inside a given scene, but necessarily true for objects across different scenes. More...
 
virtual std::string Name () const =0
 Get the object name. This name will be unique across all objects inside a given scene, but necessarily true for objects across different scenes. More...
 
virtual ScenePtr Scene () const =0
 Get the Scene that created this object. More...
 

Protected Member Functions

 BaseCamera ()
 
virtual void * CreateImageBuffer () const
 
virtual void Load ()
 
virtual RenderTargetPtr RenderTarget () const =0
 
virtual void Reset ()
 

Protected Attributes

unsigned int antiAliasing = 0u
 Anti-aliasing. More...
 
double aspect = 1.3333333
 Aspect ratio. More...
 
double farClip = 1000.0
 Far clipping plane distance. More...
 
NodePtr followNode
 Target node to follow. More...
 
math::Vector3d followOffset
 Offset distance between camera and target node being followed. More...
 
double followPGain = 1.0
 P gain for follow mode. Determines how fast the camera moves to follow the target node. Valid range: [0-1]. More...
 
bool followWorldFrame = false
 Follow target in world frame. More...
 
math::Angle hfov
 Horizontal camera field of view. More...
 
ImagePtr imageBuffer
 
double nearClip = 0.01
 Near clipping plane distance. More...
 
common::EventT< void(const void *, unsigned int, unsigned int, unsigned int, const std::string &)> newFrameEvent
 
NodePtr trackNode
 Target node to track if camera tracking is on. More...
 
math::Vector3d trackOffset
 Set camera to track a point offset in target node's local or world frame depending on trackWorldFrame. More...
 
double trackPGain = 1.0
 P gain for tracking. Determines how fast the camera rotates to look at the target node. Valid range: [0-1]. More...
 
bool trackWorldFrame = false
 Track point relative to target in world frame. More...
 

Additional Inherited Members

- Public Types inherited from Camera
typedef std::function< void(const void *, unsigned int, unsigned int, unsigned int, const std::string &)> NewFrameListener
 Callback function for new frame render event listeners. More...
 

Constructor & Destructor Documentation

◆ BaseCamera()

BaseCamera ( )
protected

◆ ~BaseCamera()

~BaseCamera ( )
virtual

Member Function Documentation

◆ AntiAliasing()

unsigned int AntiAliasing ( ) const
virtual

Get the level of anti-aliasing used during rendering.

Returns
The level of anti-aliasing used during rendering

Implements Camera.

Reimplemented in OgreCamera.

◆ AspectRatio()

double AspectRatio ( ) const
virtual

Get the camera's aspect ratio.

Returns
The camera's aspect ratio

Implements Camera.

Reimplemented in OgreCamera.

Referenced by BaseCamera< OgreSensor >::ProjectionMatrix().

◆ Capture()

void Capture ( Image _image)
virtual

Renders a new frame and writes the results to the given image. This is a convenience function for single-camera scenes. It wraps the pre-render, render, post-render, and get-image calls into a single function. This should be used in applications with multiple cameras or multiple consumers of a single camera's images.

Parameters
[out]_imageOutput image buffer

Implements Camera.

◆ ConnectNewImageFrame()

common::ConnectionPtr ConnectNewImageFrame ( Camera::NewFrameListener  _listener)
virtual

Subscribes a new listener to this camera's new frame event.

Parameters
[in]_listenerNew camera listener callback

Implements Camera.

◆ Copy()

void Copy ( Image _image) const
virtual

Writes the last rendered image to the given image buffer. This function can be called multiple times after PostRender has been called, without rendering the scene again. Calling this function before a single image has been rendered will have undefined behavior.

Parameters
[out]_imageOutput image buffer

Implements Camera.

Referenced by BaseCamera< OgreSensor >::Capture().

◆ CreateImage()

Image CreateImage ( ) const
virtual

Created an empty image buffer for capturing images. The resulting image will have sufficient memory allocated for subsequent calls to this camera's Capture function. However, any changes to this cameras properties may invalidate the condition.

Returns
A newly allocated Image for storing this cameras images

Implements Camera.

◆ CreateImageBuffer()

void * CreateImageBuffer ( ) const
protectedvirtual

◆ CreateRenderWindow()

RenderWindowPtr CreateRenderWindow ( )
virtual

Create a render window.

Returns
A pointer to the render window.

Implements Camera.

Reimplemented in OgreCamera.

◆ FarClipPlane()

double FarClipPlane ( ) const
virtual

Get the camera's far clipping plane distance.

Returns
Far clipping plane distance

Implements Camera.

Referenced by BaseCamera< OgreSensor >::ProjectionMatrix().

◆ FollowOffset()

math::Vector3d FollowOffset ( ) const
virtual

Get the follow offset vector in the frame specified at the time the follow target is set.

Returns
Offset of camera from target.

Implements Camera.

◆ FollowPGain()

double FollowPGain ( ) const
virtual

Get the camera follow movement P gain.

Returns
P gain for camera following

Implements Camera.

◆ FollowTarget()

NodePtr FollowTarget ( ) const
virtual

Get the target node being followed.

Returns
Target node being tracked.

Implements Camera.

◆ HFOV()

math::Angle HFOV ( ) const
virtual

Get the camera's horizontal field-of-view.

Returns
Angle containing the camera's horizontal field-of-view

Implements Camera.

Referenced by BaseCamera< OgreSensor >::ProjectionMatrix().

◆ ImageFormat()

PixelFormat ImageFormat ( ) const
virtual

Get the image pixel format. If the image pixel format has not been set with a valid value, PF_UNKNOWN will be returned.

Returns
The image pixel format

Implements Camera.

Referenced by BaseCamera< OgreSensor >::CreateImage(), and BaseCamera< OgreSensor >::ImageMemorySize().

◆ ImageHeight()

unsigned int ImageHeight ( ) const
virtual

Get the image height in pixels.

Returns
The image height in pixels

Implements Camera.

Referenced by BaseCamera< OgreSensor >::CreateImage(), and BaseCamera< OgreSensor >::ImageMemorySize().

◆ ImageMemorySize()

unsigned int ImageMemorySize ( ) const
virtual

Get the total image memory size in bytes.

Returns
The image memory size in bytes

Implements Camera.

Referenced by BaseCamera< OgreSensor >::CreateImageBuffer().

◆ ImageWidth()

unsigned int ImageWidth ( ) const
virtual

Get the image width in pixels.

Returns
The image width in pixels

Implements Camera.

Referenced by BaseCamera< OgreSensor >::CreateImage(), and BaseCamera< OgreSensor >::ImageMemorySize().

◆ Load()

void Load ( )
protectedvirtual

◆ NearClipPlane()

double NearClipPlane ( ) const
virtual

Get the camera's near clipping plane distance.

Returns
Near clipping plane distance

Implements Camera.

Referenced by BaseCamera< OgreSensor >::ProjectionMatrix().

◆ PostRender()

void PostRender ( )
virtual

Preforms any necessary final rendering work. Once rendering is complete the camera will alert any listeners of the new frame event. This function should only be called after a call to Render has successfully been executed.

Implements Camera.

Referenced by BaseCamera< OgreSensor >::Update().

◆ PreRender()

void PreRender ( )
virtual

Prepare this object and any of its children for rendering. This should be called for each object in a scene just before rendering, which can be achieved by a single call to Scene::PreRender.

Implements Object.

◆ ProjectionMatrix()

math::Matrix4d ProjectionMatrix ( ) const
virtual

Get the projection matrix for this camera.

Returns
Camera projection matrix

Implements Camera.

Reimplemented in OgreCamera.

◆ RenderTarget()

◆ Reset()

void Reset ( )
protectedvirtual

◆ SaveFrame()

bool SaveFrame ( const std::string _name)
virtual

Writes the previously rendered frame to a file. This function can be called multiple times after PostRender has been called, without rendering the scene again. Calling this function before a single image has been rendered will have undefined behavior.

Parameters
[in]_nameName of the output file

Implements Camera.

◆ SetAntiAliasing()

void SetAntiAliasing ( const unsigned int  _aa)
virtual

Set the level of anti-aliasing used during rendering. If a value of 0 is given, no anti-aliasing will be performed. Higher values can significantly slow-down rendering times, depending on the underlying render engine.

Parameters
[in]_aaLevel of anti-aliasing used during rendering

Implements Camera.

Reimplemented in OgreCamera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetAspectRatio()

void SetAspectRatio ( const double  _ratio)
virtual

Set the camera's aspect ratio. This value determines the cameras vertical field-of-view. It is often the.

image_height /
image_width

but this is not necessarily true.

Returns
The camera's aspect ratio

Implements Camera.

Reimplemented in OgreCamera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetFarClipPlane()

void SetFarClipPlane ( const double  _far)
virtual

Set the camera's far clipping plane distance.

Parameters
[in]_farFar clipping plane distance

Implements Camera.

Reimplemented in OgreCamera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetFollowOffset()

void SetFollowOffset ( const math::Vector3d &  _offset)
virtual

Set offset of camera from target node being followed. The offset will be in the frame that is specified at the time the follow target is set.

Parameters
[in]_offsetOffset distance from target node.

Implements Camera.

◆ SetFollowPGain()

void SetFollowPGain ( const double  _pGain)
virtual

Set follow P Gain. Determines how fast the camera moves to follow the target node. Valid range: [0-1].

Parameters
[in]_pGainP gain for camera following

Implements Camera.

◆ SetFollowTarget()

void SetFollowTarget ( const NodePtr _target,
const math::Vector3d &  _offset,
const bool  _worldFrame 
)
virtual

Set a node for camera to follow. The camera will automatically update its position to keep itself at the specified offset distance from the target being followed. If null is specified, camera follow is disabled. In contrast to SetTrackTarget, the camera does not change its orientation when following is enabled.

Parameters
[in]_targetTarget node to follow
[in]_offsetTether the camera at an offset distance from the target node.
[in]_worldFrameTrue to follow the target node at a distance that's fixed in world frame. Default is false which means the camera follows at fixed distance in target node's local frame.

Implements Camera.

◆ SetHFOV()

void SetHFOV ( const math::Angle &  _angle)
virtual

Set the camera's horizontal field-of-view.

Parameters
[in]_angleDesired horizontal field-of-view

Implements Camera.

Reimplemented in OgreCamera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetImageFormat()

void SetImageFormat ( PixelFormat  _format)
virtual

Set the image pixel format.

Parameters
[in]_formatNew image pixel format

Implements Camera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetImageHeight()

void SetImageHeight ( const unsigned int  _height)
virtual

Set the image height in pixels.

Parameters
[in]_heightNew image height in pixels

Implements Camera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetImageWidth()

void SetImageWidth ( const unsigned int  _width)
virtual

Set the image width in pixels.

Parameters
[in]_widthNew image width in pixels

Implements Camera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetNearClipPlane()

void SetNearClipPlane ( const double  _near)
virtual

Set the camera's near clipping plane distance.

Parameters
[in]_nearNear clipping plane distance

Implements Camera.

Reimplemented in OgreCamera.

Referenced by BaseCamera< OgreSensor >::Reset().

◆ SetTrackOffset()

void SetTrackOffset ( const math::Vector3d &  _offset)
virtual

Set track offset. Camera will track a point that's at an offset from the target node. The offset will be in the frame that is specified at the time the track target is set.

Parameters
[in]_offsetPoint offset to track

Implements Camera.

◆ SetTrackPGain()

void SetTrackPGain ( const double  _pGain)
virtual

Set track P Gain. Determines how fast the camera rotates to look at the target node. Valid range: [0-1].

Parameters
[in]_pGainP gain for camera tracking

Implements Camera.

◆ SetTrackTarget()

void SetTrackTarget ( const NodePtr _target,
const math::Vector3d &  _offset,
const bool  _worldFrame 
)
virtual

Set a node for camera to track. The camera will automatically change its orientation to face the target being tracked. If null is specified, tracking is disabled. In contrast to SetFollowTarget the camera does not change its position when tracking is enabled.

Parameters
[in]_targetTarget node to track
[in]_offsetTrack a point that is at an offset relative to target.
[in]_worldFrameIf true, the offset point to track will be treated in world frame and its position relative to the target node remains fixed regardless of the target node's rotation. Default is false, which means the camera tracks the point in target node's local frame.

Implements Camera.

◆ TrackOffset()

math::Vector3d TrackOffset ( ) const
virtual

Get the track offset vector in the frame specified at the time the track target is set.

Returns
Point offset from target.

Implements Camera.

◆ TrackPGain()

double TrackPGain ( ) const
virtual

Get the camera track rotation P gain.

Returns
P gain for camera tracking

Implements Camera.

◆ TrackTarget()

NodePtr TrackTarget ( ) const
virtual

Get the target node being tracked.

Returns
Target node being tracked.

Implements Camera.

◆ Update()

void Update ( )
virtual

Renders a new frame. This is a convenience function for single-camera scenes. It wraps the pre-render, render, and post-render into a single function. This should be used in applications with multiple cameras or multiple consumers of a single camera's images.

Implements Camera.

Referenced by BaseCamera< OgreSensor >::Capture().

◆ ViewMatrix()

math::Matrix4d ViewMatrix ( ) const
virtual

Get the view matrix for this camera.

Returns
Camera view matrix

Implements Camera.

Reimplemented in OgreCamera.

Member Data Documentation

◆ antiAliasing

unsigned int antiAliasing = 0u
protected

◆ aspect

double aspect = 1.3333333
protected

◆ farClip

double farClip = 1000.0
protected

◆ followNode

◆ followOffset

math::Vector3d followOffset
protected

◆ followPGain

double followPGain = 1.0
protected

P gain for follow mode. Determines how fast the camera moves to follow the target node. Valid range: [0-1].

Referenced by BaseCamera< OgreSensor >::FollowPGain(), BaseCamera< OgreSensor >::PreRender(), and BaseCamera< OgreSensor >::SetFollowPGain().

◆ followWorldFrame

bool followWorldFrame = false
protected

◆ hfov

math::Angle hfov
protected

Horizontal camera field of view.

Referenced by BaseCamera< OgreSensor >::HFOV(), and BaseCamera< OgreSensor >::SetHFOV().

◆ imageBuffer

ImagePtr imageBuffer
protected

◆ nearClip

double nearClip = 0.01
protected

◆ newFrameEvent

common::EventT<void(const void *, unsigned int, unsigned int, unsigned int, const std::string &)> newFrameEvent
protected

◆ trackNode

NodePtr trackNode
protected

◆ trackOffset

math::Vector3d trackOffset
protected

Set camera to track a point offset in target node's local or world frame depending on trackWorldFrame.

Referenced by BaseCamera< OgreSensor >::PreRender(), BaseCamera< OgreSensor >::SetTrackOffset(), BaseCamera< OgreSensor >::SetTrackTarget(), and BaseCamera< OgreSensor >::TrackOffset().

◆ trackPGain

double trackPGain = 1.0
protected

P gain for tracking. Determines how fast the camera rotates to look at the target node. Valid range: [0-1].

Referenced by BaseCamera< OgreSensor >::PreRender(), BaseCamera< OgreSensor >::SetTrackPGain(), and BaseCamera< OgreSensor >::TrackPGain().

◆ trackWorldFrame

bool trackWorldFrame = false
protected

Track point relative to target in world frame.

Referenced by BaseCamera< OgreSensor >::PreRender(), and BaseCamera< OgreSensor >::SetTrackTarget().


The documentation for this class was generated from the following file: