SurgSim::Graphics::Camera Class Referenceabstract

Base graphics camera class, which defines the basic interface for all graphics cameras. More...

`#include <SurgSim/Graphics/Camera.h>`

Inheritance diagram for SurgSim::Graphics::Camera:

## Public Types

enum | RenderOrder { RENDER_ORDER_PRE_RENDER = 0, RENDER_ORDER_IN_ORDER, RENDER_ORDER_POST_RENDER, RENDER_ORDER_COUNT }
Public Types inherited from SurgSim::Framework::Accessible
typedef std::function< boost::any(void)> | GetterType
typedef std::function< void(boost::any)> | SetterType
typedef std::function< YAML::Node(void)> | EncoderType
typedef std::function< void(const YAML::Node *)> | DecoderType
Public Types inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
typedef ObjectFactory1< Component, std::string > | FactoryType

## Public Member Functions

| Camera (const std::string &name)
| Constructor. More...
void | setRenderGroupReference (const std::string &name)
| Set the group reference that this camera wants to use as the group for rendering. More...
void | setRenderGroupReferences (const std::vector< std::string > &names)
| Set the collections of group references that this camera wants to use for rendering. More...
std::vector< std::string > | getRenderGroupReferences () const
| Gets the collection of names of render groups used for rendering. More...
void | addRenderGroupReference (const std::string &name)
| Adds a single group reference to the collection of group references for rendering. More...
virtual bool | setRenderGroup (std::shared_ptr< Group > group)
| Sets the group of representations that will be seen by this camera. More...
virtual bool | setRenderGroups (const std::vector< std::shared_ptr< Group >> &groups)
| Sets the representation groups that will be seen by this camera. More...
virtual bool | addRenderGroup (std::shared_ptr< Group > group)
| Add a group of representations that will seen by this camera. More...
std::vector< std::shared_ptr< Group > > | getRenderGroups () const
| Gets all groups of representations that will be seen by this camera. More...
virtual SurgSim::Math::Matrix44d | getViewMatrix () const =0
| Gets the view matrix of the camera. More...
virtual SurgSim::Math::Matrix44d | getInverseViewMatrix () const =0
| Gets the inverse view matrix of the camera. More...
virtual void | setProjectionMatrix (const SurgSim::Math::Matrix44d &matrix)=0
| Sets the projection matrix of the camera. More...
virtual void | setViewport (int x, int y, int width, int height)=0
| Sets the viewport size for this camera. More...
virtual void | getViewport (int *x, int *y, int *width, int *height) const =0
| collect the viewport values More...
virtual void | setViewportSize (std::array< double, 2 > dimensions)=0
| Sets the width and height of the viewport. More...
virtual std::array< double, 2 > | getViewportSize () const =0
| Gets the dimensions of the viewport. More...
virtual void | setPerspectiveProjection (double fovy, double aspect, double near, double far)=0
| Set the projection matrix with the appropriate perspective projection parameters. More...
virtual void | setOrthogonalProjection (double left, double right, double bottom, double top, double near, double far)=0
| Set the projection matrix with the appropriate orthogonal projection parameters. More...
virtual const SurgSim::Math::Matrix44d & | getProjectionMatrix () const =0
| Gets the projection matrix of the camera. More...
virtual SurgSim::Math::Matrix44d | getInverseProjectionMatrix () const =0
| Gets the inverse projection matrix of the camera. More...
virtual bool | setRenderTarget (std::shared_ptr< RenderTarget > renderTarget)=0
| Sets RenderTarget for the current camera, enables the camera to render to off-screen textures. More...
virtual std::shared_ptr< RenderTarget > | getRenderTarget () const =0
| Gets RenderTarget that is currently being used by the camera. More...
virtual void | setRenderOrder (RenderOrder order, int value)=0
| Determine when this camera will render. More...
bool | addGroupReference (const std::string &name) override
| Add a reference to a group, this will eventual add this representation to the group with the the same name. More...
virtual void | setAmbientColor (const SurgSim::Math::Vector4d &color)=0
| Sets a value for the ambient lighting term, this can add light to the scene when there is no lighting. More...
virtual SurgSim::Math::Vector4d | getAmbientColor ()=0
virtual void | setMainCamera (bool val)=0
| Marks the camera as a main view camera, this means that view dependent passes should follow this camera with their appropriate calculations, for this purpose when isMainCamera() is true, the camera provides a uniform struct with it's transforms. More...
virtual bool | isMainCamera ()=0
Public Member Functions inherited from SurgSim::Graphics::Representation
| Representation (const std::string &name)
| Constructor. More...
virtual | ~Representation ()
| Destructor. More...
virtual bool | setMaterial (std::shared_ptr< SurgSim::Framework::Component > material)=0
| Sets the material that defines the visual appearance of the representation. More...
virtual std::shared_ptr< Material > | getMaterial () const =0
| Gets the material that defines the visual appearance of the representation. More...
virtual void | clearMaterial ()=0
| Removes the material from the representation. More...
virtual void | setDrawAsWireFrame (bool val)=0
| Sets the representation to render as a wire frame. More...
virtual bool | getDrawAsWireFrame () const =0
| Return if the representation is rendered as a wire frame. More...
virtual void | setGenerateTangents (bool value)=0
| Enable or disable the generation of tangents. More...
virtual bool | isGeneratingTangents () const =0
virtual void | update (double dt)=0
| Updates the representation. More...
void | addGroupReferences (const std::vector< std::string > &groups)
| Adds a list of group references. More...
void | setGroupReferences (const std::vector< std::string > &groups)
| Sets the list of group references. More...
void | setGroupReference (const std::string &group)
| Helper functions, this clears all the references and sets, only the reference given in the parameter. More...
std::vector< std::string > | getGroupReferences () const
| Gets group references. More...
bool | removeGroupReference (const std::string &group)
| Function to remove an unwanted reference. More...
void | clearGroupReferences ()
| Clear all the Group references. More...
Public Member Functions inherited from SurgSim::Framework::Representation
| Representation (const std::string &name)
| Constructor. More...
virtual void | setLocalPose (const SurgSim::Math::RigidTransform3d &pose)
| Set the pose of the representation with respect to the Scene Element. More...
virtual SurgSim::Math::RigidTransform3d | getLocalPose () const
| Get the pose of the representation with respect to the Scene Element. More...
virtual SurgSim::Math::RigidTransform3d | getPose () const
| Get the pose of the representation in world coordinates. More...
Public Member Functions inherited from SurgSim::Framework::Component
| Component (const std::string &name)
| Constructor. More...
virtual | ~Component ()
| Destructor. More...
std::string | getName () const
| Gets component name. More...
std::string | getFullName () const
| Gets a string containing the name of the Component and (if it has one) its SceneElement. More...
void | setName (const std::string &name)
| Sets the name of component. More...
boost::uuids::uuid | getUuid () const
| Gets the id of the component. More...
bool | isInitialized () const
bool | initialize (const std::weak_ptr< Runtime > &runtime)
| Initialize this component, this needs to be called before wakeUp() can be called. More...
bool | isAwake () const
bool | wakeUp ()
| Wakeup this component, this will be called when the component is inserted into the ComponentManager that is responsible for handling this component. More...
void | retire ()
| Retire this component, this will be called when the component is removed from the ComponentManager that is responsible for handling this component. More...
void | setScene (std::weak_ptr< Scene > scene)
| Sets the scene. More...
std::shared_ptr< Scene > | getScene ()
| Gets the scene. More...
void | setSceneElement (std::weak_ptr< SceneElement > sceneElement)
| Sets the scene element. More...
std::shared_ptr< SceneElement > | getSceneElement ()
| Gets the scene element. More...
std::shared_ptr< const SceneElement > | getSceneElement () const
| Gets the scene element, constant version. More...
std::shared_ptr< Runtime > | getRuntime () const
| Get the runtime which contains this component. More...
virtual std::string | getClassName () const
| The class name for this class, this being the base class it should return SurgSim::Framework::Component but this would make missing implemenentations of this hard to catch, therefore this calls SURGSIM_FAILURE. More...
std::shared_ptr< Component > | getSharedPtr ()
| Gets a shared pointer to this component. More...
virtual void | doRetire ()
| Interface to be implemented by derived classes Has a default implementation, does nothing. More...
bool | isActive () const
virtual void | setLocalActive (bool val)
| Set the component's active state. More...
bool | isLocalActive () const
Public Member Functions inherited from SurgSim::Framework::Accessible
| Accessible ()
| Default Constructor. More...
| ~Accessible ()
| Destructor. More...
template<class T >
T | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More...
boost::any | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found. More...
template<class T >
bool | getValue (const std::string &name, T *value) const
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More...
void | setValue (const std::string &name, const boost::any &value)
| Sets a value of a property that has setter. More...
bool | isReadable (const std::string &name) const
| Check whether a property is readable. More...
bool | isWriteable (const std::string &name) const
| Check whether a property is writable. More...
void | setGetter (const std::string &name, GetterType func)
| Sets a getter for a given property. More...
void | setSetter (const std::string &name, SetterType func)
| Sets a setter for a given property. More...
void | setAccessors (const std::string &name, GetterType getter, SetterType setter)
| Sets the accessors getter and setter in one function. More...
void | removeAccessors (const std::string &name)
| Removes all the accessors (getter and setter) for a given property. More...
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty)
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More...
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder)
| Sets the functions used to convert data from and to a YAML::Node. More...
void | setDecoder (const std::string &name, DecoderType decoder)
| Sets the functions used to convert data from a YAML::Node. More...
YAML::Node | encode () const
| Encode this Accessible to a YAML::Node. More...
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >())
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More...
template<>
boost::any | getValue (const std::string &name) const

## Private Member Functions

void | setPerspectiveProjection (const std::array< double, 4 > &val)
void | setOrthogonalProjection (const std::array< double, 6 > &val)
void | setViewport (std::array< int, 4 > val)
std::array< int, 4 > | getViewport () const
bool | doInitialize () override
| Interface to be implemented by derived classes. More...

## Private Attributes

std::vector< std::shared_ptr< Group > > | m_renderGroups
| Group of representations that this camera sees Only the representations in this group will be rendered when this camera's view is rendered. More...
std::vector< std::string > | m_renderGroupReferences
| The names of the groups that the camera wants to use for rendering, the graphics manager will actually assign this group. More...

## Additional Inherited Members

Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryType & | getFactory ()
Static Public Attributes inherited from SurgSim::Graphics::Representation
static const std::string | DefaultGroupName = "__OssDefault__"
static const std::string | DefaultHudGroupName = "__OssDefaulHud__"
Protected Member Functions inherited from SurgSim::Framework::Component
virtual std::shared_ptr< PoseComponent > | getPoseComponent ()
| Get the PoseComponent for this component. More...
virtual std::shared_ptr< const PoseComponent > | getPoseComponent () const
| Get the PoseComponent for this component, constant access. More...

## Detailed Description

Base graphics camera class, which defines the basic interface for all graphics cameras.

A Graphics::Camera provides the viewpoint to visualize the Graphics::Group assigned to it.

To disable a camera: setLocalActive(false). To re-enable, setLocalActive(true). A disabled (invisible) camera does not produce an image.

Graphics::Camera is used with Graphics::View to provide the visualization of the virtual scene to the user. Cameras refer to a group that contain all the elements that they render, they may also parts of other group that determine whether they are rendered. It should provide the following Uniforms:

uniform mat4 viewMatrix;
uniform mat4 inverseViewMatrix;

## Member Enumeration Documentation

## RenderOrder

enum SurgSim::Graphics::Camera::RenderOrder

Enumerator
RENDER_ORDER_PRE_RENDER |
RENDER_ORDER_IN_ORDER |
RENDER_ORDER_POST_RENDER |
RENDER_ORDER_COUNT |

## Constructor & Destructor Documentation

## Camera()

SurgSim::Graphics::Camera::Camera | ( | const std::string & | name | ) |

explicit

Constructor.

Parameters

  name | Name of the camera

## Member Function Documentation

## addGroupReference()

bool SurgSim::Graphics::Camera::addGroupReference | ( | const std::string & | name | ) |

override virtual

Add a reference to a group, this will eventual add this representation to the group with the the same name.

Parameters

  name | The name of the group.

Returns
  true if it succeeds, false if the group reference already exists.

Reimplemented from SurgSim::Graphics::Representation.

## addRenderGroup()

bool SurgSim::Graphics::Camera::addRenderGroup | ( | std::shared_ptr< Group > | group | ) |

virtual

Add a group of representations that will seen by this camera.

Parameters

  group | Group of representations

## addRenderGroupReference()

void SurgSim::Graphics::Camera::addRenderGroupReference | ( | const std::string & | name | ) |

Adds a single group reference to the collection of group references for rendering.

Parameters

  name | Name of the group to be used for rendering

## doInitialize()

bool SurgSim::Graphics::Camera::doInitialize | ( |  | ) |

override private virtual

Interface to be implemented by derived classes.

Returns
  True if component is initialized successfully; otherwise, false.

Reimplemented from SurgSim::Framework::Representation.

## getAmbientColor()

virtual SurgSim::Math::Vector4d SurgSim::Graphics::Camera::getAmbientColor | ( |  | ) |

pure virtual

Returns
  the ambient light that gets added to the scene

Implemented in SurgSim::Graphics::OsgCamera.

## getInverseProjectionMatrix()

virtual SurgSim::Math::Matrix44d SurgSim::Graphics::Camera::getInverseProjectionMatrix | ( |  | ) | const

pure virtual

Gets the inverse projection matrix of the camera.

Returns
  Inverse Projection matrix

Implemented in SurgSim::Graphics::OsgCamera.

## getInverseViewMatrix()

virtual SurgSim::Math::Matrix44d SurgSim::Graphics::Camera::getInverseViewMatrix | ( |  | ) | const

pure virtual

Gets the inverse view matrix of the camera.

Returns
  Inverse view matrix

Implemented in SurgSim::Graphics::OsgCamera.

## getProjectionMatrix()

virtual const SurgSim::Math::Matrix44d& SurgSim::Graphics::Camera::getProjectionMatrix | ( |  | ) | const

pure virtual

Gets the projection matrix of the camera.

Returns
  Projection matrix

Implemented in SurgSim::Graphics::OsgCamera.

## getRenderGroupReferences()

std::vector< std::string > SurgSim::Graphics::Camera::getRenderGroupReferences | ( |  | ) | const

Gets the collection of names of render groups used for rendering.

Returns
  Vector of names of the groups used for rendering

## getRenderGroups()

std::vector< std::shared_ptr< Group > > SurgSim::Graphics::Camera::getRenderGroups | ( |  | ) | const

Gets all groups of representations that will be seen by this camera.

Only the representations in this group will be rendered when this camera's view is rendered.

Returns
  Vector of groups of representations

## getRenderTarget()

virtual std::shared_ptr<RenderTarget> SurgSim::Graphics::Camera::getRenderTarget | ( |  | ) | const

pure virtual

Gets RenderTarget that is currently being used by the camera.

Returns
  The RenderTarget.

Implemented in SurgSim::Graphics::OsgCamera.

## getViewMatrix()

virtual SurgSim::Math::Matrix44d SurgSim::Graphics::Camera::getViewMatrix | ( |  | ) | const

pure virtual

Gets the view matrix of the camera.

Returns
  View matrix

Implemented in SurgSim::Graphics::OsgCamera.

## getViewport() [1/2]

virtual void SurgSim::Graphics::Camera::getViewport | ( | int * | x,
|  | int * | y,
|  | int * | width,
|  | int * | height
| ) |  | const

pure virtual

collect the viewport values

Parameters

  x,y,width,height | [out] non-nullptr parameters to write the viewport parameters

Implemented in SurgSim::Graphics::OsgCamera.

## getViewport() [2/2]

std::array< int, 4 > SurgSim::Graphics::Camera::getViewport | ( |  | ) | const

private

## getViewportSize()

virtual std::array<double, 2> SurgSim::Graphics::Camera::getViewportSize | ( |  | ) | const

pure virtual

Gets the dimensions of the viewport.

Implemented in SurgSim::Graphics::OsgCamera.

## isMainCamera()

virtual bool SurgSim::Graphics::Camera::isMainCamera | ( |  | ) |

pure virtual

Returns
  whether this is used as a main camera

Implemented in SurgSim::Graphics::OsgCamera.

## setAmbientColor()

virtual void SurgSim::Graphics::Camera::setAmbientColor | ( | const SurgSim::Math::Vector4d & | color | ) |

pure virtual

Sets a value for the ambient lighting term, this can add light to the scene when there is no lighting.

Parameters

  color | value for the light that should get added to the scene

Implemented in SurgSim::Graphics::OsgCamera.

## setMainCamera()

virtual void SurgSim::Graphics::Camera::setMainCamera | ( | bool | val | ) |

pure virtual

Marks the camera as a main view camera, this means that view dependent passes should follow this camera with their appropriate calculations, for this purpose when isMainCamera() is true, the camera provides a uniform struct with it's transforms.

This function will most likely be called by the view.

struct MainCamera {
mat4 viewMatrix;
mat4 inverseViewMatrix;
mat4 projectionMatrix;
mat4 mainProjectionMatrix;
};
uniform MainCamera mainCamera;

Implemented in SurgSim::Graphics::OsgCamera.

## setOrthogonalProjection() [1/2]

virtual void SurgSim::Graphics::Camera::setOrthogonalProjection | ( | double | left,
|  | double | right,
|  | double | bottom,
|  | double | top,
|  | double | near,
|  | double | far
| ) |  |

pure virtual

Set the projection matrix with the appropriate orthogonal projection parameters.

Parameters

  left,right | left and right bounds of the view volume
  bottom,top | bottom and top bounds of the view volume
  near,far | near and far bounds of the view volume

Implemented in SurgSim::Graphics::OsgCamera.

## setOrthogonalProjection() [2/2]

void SurgSim::Graphics::Camera::setOrthogonalProjection | ( | const std::array< double, 6 > & | val | ) |

private

## setPerspectiveProjection() [1/2]

virtual void SurgSim::Graphics::Camera::setPerspectiveProjection | ( | double | fovy,
|  | double | aspect,
|  | double | near,
|  | double | far
| ) |  |

pure virtual

Set the projection matrix with the appropriate perspective projection parameters.

Parameters

  fovy | Field of view along the y-axis
  aspect | Aspect ration between y and x axis in the viewport
  near,far | near and far clipping planes

Implemented in SurgSim::Graphics::OsgCamera.

## setPerspectiveProjection() [2/2]

void SurgSim::Graphics::Camera::setPerspectiveProjection | ( | const std::array< double, 4 > & | val | ) |

private

## setProjectionMatrix()

virtual void SurgSim::Graphics::Camera::setProjectionMatrix | ( | const SurgSim::Math::Matrix44d & | matrix | ) |

pure virtual

Sets the projection matrix of the camera.

Parameters

  matrix | Projection matrix

Implemented in SurgSim::Graphics::OsgCamera.

## setRenderGroup()

bool SurgSim::Graphics::Camera::setRenderGroup | ( | std::shared_ptr< Group > | group | ) |

virtual

Sets the group of representations that will be seen by this camera.

Only the representations in this group will be rendered when this camera's view is rendered.

Note
  The camera can not be part of the group that it is rendering

Parameters

  group | Group of representations

Returns
  True if it succeeded, false if it failed

Reimplemented in SurgSim::Graphics::OsgCamera.

## setRenderGroupReference()

void SurgSim::Graphics::Camera::setRenderGroupReference | ( | const std::string & | name | ) |

Set the group reference that this camera wants to use as the group for rendering.

Objects that, reference the same group will be rendered by this camera. The manager will do the actual creation of the group.

Parameters

  name | Name of the group to be used for rendering

## setRenderGroupReferences()

void SurgSim::Graphics::Camera::setRenderGroupReferences | ( | const std::vector< std::string > & | names | ) |

Set the collections of group references that this camera wants to use for rendering.

Parameters

  names | Vector of names of the groups used for rendering

## setRenderGroups()

bool SurgSim::Graphics::Camera::setRenderGroups | ( | const std::vector< std::shared_ptr< Group >> & | groups | ) |

virtual

Sets the representation groups that will be seen by this camera.

Parameters

  groups | Vector of groups of representations

Returns
  True if it succeeded, false if it failed

Reimplemented in SurgSim::Graphics::OsgCamera.

## setRenderOrder()

virtual void SurgSim::Graphics::Camera::setRenderOrder | ( | RenderOrder | order,
|  | int | value
| ) |  |

pure virtual

Determine when this camera will render.

The main camera will render at (RENDER_ORDER_IN_ORDER,0) In general all preprocessing should be done in RENDER_ORDER_PRE_ORDER, HUD Displaying usually at RENDER_ORDER_POST_ORDER

Parameters

  order | The phase of rendering.
  value | The index within the phase, the order between two cameras of the same phase and index is not determined.

Implemented in SurgSim::Graphics::OsgCamera.

## setRenderTarget()

virtual bool SurgSim::Graphics::Camera::setRenderTarget | ( | std::shared_ptr< RenderTarget > | renderTarget | ) |

pure virtual

Sets RenderTarget for the current camera, enables the camera to render to off-screen textures.

Parameters

  renderTarget | The render target.

Implemented in SurgSim::Graphics::OsgCamera.

## setViewport() [1/2]

virtual void SurgSim::Graphics::Camera::setViewport | ( | int | x,
|  | int | y,
|  | int | width,
|  | int | height
| ) |  |

pure virtual

Sets the viewport size for this camera.

Parameters

  x,y | location of the viewport in screen space
  width,height | size of the viewport in screen space

Implemented in SurgSim::Graphics::OsgCamera.

## setViewport() [2/2]

void SurgSim::Graphics::Camera::setViewport | ( | std::array< int, 4 > | val | ) |

private

## setViewportSize()

virtual void SurgSim::Graphics::Camera::setViewportSize | ( | std::array< double, 2 > | dimensions | ) |

pure virtual

Sets the width and height of the viewport.

Parameters

  dimensions | size of the viewport in screen space

Implemented in SurgSim::Graphics::OsgCamera.

## Member Data Documentation

## m_renderGroupReferences

std::vector<std::string> SurgSim::Graphics::Camera::m_renderGroupReferences

private

The names of the groups that the camera wants to use for rendering, the graphics manager will actually assign this group.

## m_renderGroups

std::vector<std::shared_ptr<Group> > SurgSim::Graphics::Camera::m_renderGroups

private

Group of representations that this camera sees Only the representations in this group will be rendered when this camera's view is rendered.

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

- SurgSim/Graphics/Camera.h
- SurgSim/Graphics/Camera.cpp