opensurgsim
Public Types | Public Member Functions | List of all members
SurgSim::Graphics::Camera Class Referenceabstract

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

#include <Camera.h>

Inheritance diagram for SurgSim::Graphics::Camera:
SurgSim::Graphics::Representation SurgSim::Framework::Representation SurgSim::Framework::Component SurgSim::Framework::Accessible SurgSim::Framework::FactoryBase1< Component, std::string > MockCamera 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::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.
 
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::Matrix44dgetProjectionMatrix () 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< 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...
 
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.
 
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< MaterialgetMaterial () const =0
 Gets the material that defines the visual appearance of the representation. More...
 
void setMaterialReference (const std::string &materialName)
 
std::string getMaterialReference () const
 
virtual void clearMaterial ()=0
 Removes the material from the representation.
 
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.
 
virtual void addUniform (std::shared_ptr< UniformBase > uniform)=0
 Adds a uniform to this representation. More...
 
virtual void addUniform (const std::string &type, const std::string &name, const boost::any &value)=0
 Adds and a uniform to this representation and set its value. More...
 
virtual void setUniforms (const std::vector< std::shared_ptr< UniformBase >> &uniforms)=0
 Sets a set of uniforms for this representation. More...
 
virtual std::vector< std::shared_ptr< UniformBase > > getUniforms () const =0
 
bool doWakeUp () override
 Interface to be implemented by derived classes. 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.
 
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.
 
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< 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...
 
virtual void doRetire ()
 Interface to be implemented by derived classes Has a default implementation, does nothing.
 
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.
 
 ~Accessible ()
 Destructor.
 
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...
 
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...
 
std::vector< std::string > getProperties ()
 
template<>
boost::any getValue (const std::string &name) const
 

Additional Inherited Members

- Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryTypegetFactory ()
 
- Static Public Attributes inherited from SurgSim::Graphics::Representation
static const std::string DefaultGroupName = "__OssDefault__"
 
static const std::string DefaultHudGroupName = "__OssDefaultHud__"
 
- 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...
 

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;

Constructor & Destructor Documentation

§ Camera()

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

Constructor.

Parameters
nameName of the camera

Member Function Documentation

§ addGroupReference()

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.

§ addRenderGroup()

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

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

Parameters
groupGroup 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
nameName of the group to be used for rendering

§ getAmbientColor()

virtual SurgSim::Math::Vector4d SurgSim::Graphics::Camera::getAmbientColor ( )
pure virtual
Returns
the ambient light that gets added to the scene

Implemented in MockCamera, and 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 MockCamera, and 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 MockCamera, and 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 MockCamera, and 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 MockCamera, and 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 MockCamera, and SurgSim::Graphics::OsgCamera.

§ getViewport()

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 MockCamera, and SurgSim::Graphics::OsgCamera.

§ isMainCamera()

virtual bool SurgSim::Graphics::Camera::isMainCamera ( )
pure virtual
Returns
whether this is used as a main camera

Implemented in MockCamera, and 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
colorvalue for the light that should get added to the scene

Implemented in MockCamera, and 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 MockCamera, and SurgSim::Graphics::OsgCamera.

§ setOrthogonalProjection()

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,rightleft and right bounds of the view volume
bottom,topbottom and top bounds of the view volume
near,farnear and far bounds of the view volume

Implemented in MockCamera, and SurgSim::Graphics::OsgCamera.

§ setPerspectiveProjection()

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
fovyField of view along the y-axis
aspectAspect ration between y and x axis in the viewport
near,farnear and far clipping planes

Implemented in MockCamera, and SurgSim::Graphics::OsgCamera.

§ setProjectionMatrix()

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 MockCamera, and 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
groupGroup 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
nameName 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
namesVector 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
groupsVector 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
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 MockCamera, and 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
renderTargetThe render target.

Implemented in MockCamera, and SurgSim::Graphics::OsgCamera.

§ setViewport()

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,ylocation of the viewport in screen space
width,heightsize of the viewport in screen space

Implemented in MockCamera, and SurgSim::Graphics::OsgCamera.

§ setViewportSize()

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

Sets the width and height of the viewport.

Parameters
dimensionssize of the viewport in screen space

Implemented in MockCamera, and SurgSim::Graphics::OsgCamera.


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