Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
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:
SurgSim::Graphics::Representation SurgSim::Framework::Representation SurgSim::Framework::Component SurgSim::Framework::Accessible SurgSim::Graphics::OsgCamera

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::Component
typedef SurgSim::Framework::ObjectFactory1< SurgSim::Framework::Component, std::string > FactoryType
 
- 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 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...
 
std::string getRenderGroupReference () const
 Gets the name of the rendergroup used for rendering. More...
 
virtual bool setRenderGroup (std::shared_ptr< Group > group)
 Sets the group of representations that will be seen by this camera. More...
 
std::shared_ptr< GroupgetRenderGroup () const
 Gets the group 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 const SurgSim::Math::Matrix44dgetProjectionMatrix () const =0
 Gets the 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< RenderTargetgetRenderTarget () 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...
 
virtual 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
 
- Public Member Functions inherited from SurgSim::Graphics::Representation
 Representation (const std::string &name)
 Constructor. More...
 
virtual ~Representation ()
 Destructor. More...
 
virtual void setVisible (bool visible)=0
 Sets whether the representation is currently visible. More...
 
virtual bool isVisible () const =0
 Gets whether the representation is currently visible. More...
 
virtual void setLocalActive (bool val) override
 Set the component's active state. More...
 
virtual bool setMaterial (std::shared_ptr< Material > material)=0
 Sets the material that defines the visual appearance of the representation. More...
 
virtual std::shared_ptr< MaterialgetMaterial () 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 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 ()
 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...
 
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 setScene (std::weak_ptr< Scene > scene)
 Sets the scene. More...
 
std::shared_ptr< ScenegetScene ()
 Gets the scene. More...
 
void setSceneElement (std::weak_ptr< SceneElement > sceneElement)
 Sets the scene element. More...
 
std::shared_ptr< SceneElementgetSceneElement ()
 Gets the scene element. More...
 
std::shared_ptr< const SceneElementgetSceneElement () const
 Gets the scene element, constant version. More...
 
std::shared_ptr< RuntimegetRuntime () 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< ComponentgetSharedPtr ()
 Gets a shared pointer to this component. More...
 
bool isActive () const
 
bool isLocalActive () const
 
- Public Member Functions inherited from SurgSim::Framework::Accessible
 Accessible ()
 Default Constructor. More...
 
 ~Accessible ()
 Destructor. More...
 
template<class 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...
 
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

virtual bool doInitialize () override
 Interface to be implemented by derived classes. More...
 

Private Attributes

std::shared_ptr< Groupm_group
 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::string m_renderGroupReference
 The name of the group 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::Component
static FactoryTypegetFactory ()
 
- 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< PoseComponentgetPoseComponent ()
 Get the PoseComponent for this component. More...
 
virtual std::shared_ptr< const PoseComponentgetPoseComponent () const
 Get the PoseComponent for this component, constant access. More...
 
- Protected Attributes inherited from SurgSim::Graphics::Representation
bool m_isVisible
 

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: setVisible(false). To re-enable, setVisible(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

Enumerator
RENDER_ORDER_PRE_RENDER 
RENDER_ORDER_IN_ORDER 
RENDER_ORDER_POST_RENDER 
RENDER_ORDER_COUNT 

Constructor & Destructor Documentation

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

Constructor.

Parameters
nameName of the camera

Member Function Documentation

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

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

Parameters
nameThe name of the group.
Returns
true if it succeeds, false if the group reference already exists.

Reimplemented from SurgSim::Graphics::Representation.

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

Interface to be implemented by derived classes.

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

Reimplemented from SurgSim::Framework::Representation.

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.

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.

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.

std::shared_ptr< Group > SurgSim::Graphics::Camera::getRenderGroup ( ) const

Gets 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.

Returns
Group of representations
std::string SurgSim::Graphics::Camera::getRenderGroupReference ( ) const

Gets the name of the rendergroup used for rendering.

Returns
The name of the group to be used for rendering
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.

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.

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
colorvalue for the light that should get added to the scene

Implemented in SurgSim::Graphics::OsgCamera.

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

Sets the projection matrix of the camera.

Parameters
matrixProjection matrix

Implemented in SurgSim::Graphics::OsgCamera.

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
groupGroup of representations
Returns
True if it succeeded, false if it failed

Reimplemented in SurgSim::Graphics::OsgCamera.

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
nameName of the group to be used for rendering
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
orderThe phase of rendering.
valueThe index within the phase, the order between two cameras of the same phase and index is not determined.

Implemented in SurgSim::Graphics::OsgCamera.

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
renderTargetThe render target.

Implemented in SurgSim::Graphics::OsgCamera.

Member Data Documentation

std::shared_ptr<Group> SurgSim::Graphics::Camera::m_group
private

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

std::string SurgSim::Graphics::Camera::m_renderGroupReference
private

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


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