SurgSim::Graphics::OsgView Class Reference

OSG-based implementation of graphics view class. More...

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

Inheritance diagram for SurgSim::Graphics::OsgView:

## Public Member Functions

| OsgView (const std::string &name)
| Constructor. More...
| ~OsgView ()
| Destructor. More...
| SURGSIM_CLASSNAME (SurgSim::Graphics::OsgView)
void | setPosition (const std::array< int, 2 > &position) override
| Set the position of this view. More...
std::array< int, 2 > | getPosition () const override
| Get the position of this view. More...
void | setDimensions (const std::array< int, 2 > &dimensions) override
| Set the dimensions of this view. More...
std::array< int, 2 > | getDimensions () const override
| Get the dimensions of this view. More...
void | setDimensionsDouble (const std::array< double, 2 > &dimensions) override
| Set the dimensions of this view in doubles. More...
std::array< double, 2 > | getDimensionsDouble () const override
| Get the dimensions of this view in doubles. More...
void | setWindowBorderEnabled (bool enabled) override
| Sets whether the view window has a border. More...
bool | isWindowBorderEnabled () const override
| Returns whether the view window has a border. More...
void | setCamera (std::shared_ptr< SurgSim::Framework::Component > camera) override
| Sets the camera which provides the viewpoint in the scene Only allows OsgCamera components, any other will not be set and it will return false. More...
void | enableManipulator (bool val)
| Enables a camera manipulator, implemented via a trackball, this is a temporary solution as it uses the OSG input events rather than reading from the OpenSurgSim input. More...
bool | isManipulatorEnabled ()
void | setManipulatorParameters (const SurgSim::Math::Vector3d &position, const SurgSim::Math::Vector3d &lookat)
| As the camera is not accessible from here and as it cannot be controlled from the outside any more we let the user set the parameters from here. More...
void | setManipulatorPosition (const SurgSim::Math::Vector3d &position)
| Set the camera manipulator position. More...
SurgSim::Math::Vector3d | getManipulatorPosition ()
void | setManipulatorLookAt (const SurgSim::Math::Vector3d &lookAt)
| Set the camera manipulator lookAt. More...
SurgSim::Math::Vector3d | getManipulatorLookAt ()
void | setOsgMapsUniforms (bool val)
| Enable osg modelview uniforms mapping, in this mode osg replaces the gl builtins with osg_* names, for uniforms and vertex attributes. More...
bool | getOsgMapsUniforms ()
std::shared_ptr< SurgSim::Input::CommonDevice > | getKeyboardDevice ()
| Return the keyboard to be used with this view. More...
void | enableKeyboardDevice (bool val)
| Turn on/off the keyboard device to be used. More...
bool | isKeyboardDeviceEnabled ()
std::shared_ptr< SurgSim::Input::CommonDevice > | getMouseDevice ()
| Return the mouse to be used with this view. More...
void | enableMouseDevice (bool val)
| Turn on/off the mouse device to be used. More...
bool | isMouseDeviceEnabled ()
void | update (double dt) override
| Updates the view. More...
osg::ref_ptr< osgViewer::View > | getOsgView () const
Public Member Functions inherited from SurgSim::Graphics::View
| View (const std::string &name)
| Constructor. More...
std::shared_ptr< Camera > | getCamera () const
| Gets the camera which provides the viewpoint in the scene. More...
virtual bool | isStereo () const
virtual void | setStereoMode (int val)
| Set the mode that this view should use for stereo display, see StereMode for all the modes. More...
int | getStereoMode () const
void | setDisplayType (int type)
| Set the kind of display. More...
int | getDisplayType () const
void | setFullScreen (bool val)
| Request the display to use the whole screen. More...
bool | isFullScreen () const
void | setTargetScreen (int val)
| Request a certain screen to be used for this view. More...
int | getTargetScreen () const
void | setEyeSeparation (double val)
| Set the distance between the users eyes, this is necessary to calculate the correct projection matrices for stereo rendering. More...
double | getEyeSeparation () const
void | setScreenDistance (double val)
| Set the distance of the user from the screen, this is necessary to calculate the correct projection matrices for stereo rendering. More...
double | getScreenDistance () const
void | setScreenWidth (double val)
| Set the width of the screen, this is necessary to calculate the correct projection matrices for stereo rendering. More...
double | getScreenWidth () const
void | setScreenHeight (double val)
| Set the height of the screen, this is necessary to calculate the correct projection matrices for stereo rendering. More...
double | getScreenHeight () const
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

## Protected Member Functions

bool | doInitialize () override
| Initialize the view. More...
bool | doWakeUp () override
| Wake up the view. More...
int | doSetTargetScreen (int val) override
| Determine Screen Size. More...
virtual osg::ref_ptr< osg::DisplaySettings > | createDisplaySettings () const
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...

## Private Member Functions

void | fixupStatsHandler (osgViewer::StatsHandler *statsHandler)
| Patch the StatsHandler rendering. More...

## Private Attributes

std::array< int, 2 > | m_position
| Position of the view on the screen (in pixels) More...
std::array< int, 2 > | m_dimensions
| Dimensions of the view on the screen (in pixels) More...
std::array< int, 2 > | m_screenDimensions
bool | m_isWindowBorderEnabled
| Whether the view window has a border. More...
bool | m_isFirstUpdate
| Whether the next update will be the first time the view has been updated On the first update, the view window is setup. More...
bool | m_areWindowSettingsDirty
| Whether the settings have been changed and the window needs to be updated. More...
osg::ref_ptr< osgViewer::View > | m_view
| OSG view which performs the actual work involved in setting up and rendering to a window. More...
bool | m_osgMapUniforms
| Wether to enable osg uniform mapping. More...
osg::ref_ptr< OsgTrackballZoomManipulator > | m_manipulator
SurgSim::Math::Vector3d | m_manipulatorPosition
SurgSim::Math::Vector3d | m_manipulatorLookat
bool | m_keyboardEnabled
| Indicate if a keyboard device is enabled. More...
std::shared_ptr< SurgSim::Devices::KeyboardDevice > | m_keyboardDevice
bool | m_mouseEnabled
| Indicate if a mouse device is enabled. More...
std::shared_ptr< SurgSim::Devices::MouseDevice > | m_mouseDevice

## Additional Inherited Members

Public Types inherited from SurgSim::Graphics::View
enum | StereoMode { STEREO_MODE_NONE = -1, STEREO_MODE_QUAD_BUFFER, STEREO_MODE_ANAGLYPHIC, STEREO_MODE_HORIZONTAL_SPLIT, STEREO_MODE_VERTICAL_SPLIT, STEREO_MODE_LEFT_EYE, STEREO_MODE_RIGHT_EYE, STEREO_MODE_HORIZONTAL_INTERLACE, STEREO_MODE_VERTICAL_INTERLACE, STEREO_MODE_CHECKERBOARD, STEREO_MODE_COUNT }
enum | DisplayType { DISPLAY_TYPE_MONITOR, DISPLAY_TYPE_HMD, DISPLAY_TYPE_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
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryType & | getFactory ()

## Detailed Description

OSG-based implementation of graphics view class.

A Graphics::OsgView wraps a osgViewer::View to provide a visualization of the scene to the user.

A Graphics::OsgCamera controls the viewpoint of this View.

## Constructor & Destructor Documentation

## OsgView()

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

explicit

Constructor.

Postcondition
  The view has no camera.
  The position of the view is (0, 0).
  The dimensions of the view are 800 x 600.
  The window border is enabled.

Parameters

  name | Name of the view

Clear the OSG default camera, let that be handled at a higher level.

## ~OsgView()

SurgSim::Graphics::OsgView::~OsgView | ( |  | ) |

Destructor.

## Member Function Documentation

## createDisplaySettings()

osg::ref_ptr< osg::DisplaySettings > SurgSim::Graphics::OsgView::createDisplaySettings | ( |  | ) | const

protected virtual

Returns
  The DisplaySettings to be used in this view

Reimplemented in SurgSim::Devices::OculusView.

## doInitialize()

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

override protected virtual

Initialize the view.

Postcondition
  The view's window is setup.

Implements SurgSim::Framework::Component.

## doSetTargetScreen()

int SurgSim::Graphics::OsgView::doSetTargetScreen | ( | int | val | ) |

override protected virtual

Determine Screen Size.

Implements SurgSim::Graphics::View.

## doWakeUp()

bool SurgSim::Graphics::OsgView::doWakeUp | ( |  | ) |

override protected virtual

Wake up the view.

Implements SurgSim::Framework::Component.

## enableKeyboardDevice()

void SurgSim::Graphics::OsgView::enableKeyboardDevice | ( | bool | val | ) |

Turn on/off the keyboard device to be used.

Parameters

  val | Indicate whether or not to use keyboard device

## enableManipulator()

void SurgSim::Graphics::OsgView::enableManipulator | ( | bool | val | ) |

Enables a camera manipulator, implemented via a trackball, this is a temporary solution as it uses the OSG input events rather than reading from the OpenSurgSim input.

Parameters

  val | whether to enable the manipulator or not.

## enableMouseDevice()

void SurgSim::Graphics::OsgView::enableMouseDevice | ( | bool | val | ) |

Turn on/off the mouse device to be used.

Parameters

  val | Indicate whether or not to use mouse device

## fixupStatsHandler()

void SurgSim::Graphics::OsgView::fixupStatsHandler | ( | osgViewer::StatsHandler * | statsHandler | ) |

private

Patch the StatsHandler rendering.

Parameters

  statsHandler | The statshandler that will be patched.

## getDimensions()

std::array< int, 2 > SurgSim::Graphics::OsgView::getDimensions | ( |  | ) | const

override virtual

Get the dimensions of this view.

Returns
  Dimensions on the screen (in pixels)

Implements SurgSim::Graphics::View.

## getDimensionsDouble()

std::array< double, 2 > SurgSim::Graphics::OsgView::getDimensionsDouble | ( |  | ) | const

override virtual

Get the dimensions of this view in doubles.

Returns
  Dimensions on the screen (in pixels)

Implements SurgSim::Graphics::View.

## getKeyboardDevice()

std::shared_ptr< SurgSim::Input::CommonDevice > SurgSim::Graphics::OsgView::getKeyboardDevice | ( |  | ) |

Return the keyboard to be used with this view.

Returns
  A keyboard device

## getManipulatorLookAt()

SurgSim::Math::Vector3d SurgSim::Graphics::OsgView::getManipulatorLookAt | ( |  | ) |

Returns
  The location the camera looks at.

## getManipulatorPosition()

SurgSim::Math::Vector3d SurgSim::Graphics::OsgView::getManipulatorPosition | ( |  | ) |

Returns
  The position of the camera.

## getMouseDevice()

std::shared_ptr< SurgSim::Input::CommonDevice > SurgSim::Graphics::OsgView::getMouseDevice | ( |  | ) |

Return the mouse to be used with this view.

Returns
  A mouse device

## getOsgMapsUniforms()

bool SurgSim::Graphics::OsgView::getOsgMapsUniforms | ( |  | ) |

Returns
  the state of the osg modelview mapping mode.

## getOsgView()

osg::ref_ptr< osgViewer::View > SurgSim::Graphics::OsgView::getOsgView | ( |  | ) | const

Returns
  the OSG view which performs the actual work involved in setting up and rendering to a window

## getPosition()

std::array< int, 2 > SurgSim::Graphics::OsgView::getPosition | ( |  | ) | const

override virtual

Get the position of this view.

Returns
  Position on the screen (in pixels)

Implements SurgSim::Graphics::View.

## isKeyboardDeviceEnabled()

bool SurgSim::Graphics::OsgView::isKeyboardDeviceEnabled | ( |  | ) |

Returns
  Whether the keyboard device is enabled.

## isManipulatorEnabled()

bool SurgSim::Graphics::OsgView::isManipulatorEnabled | ( |  | ) |

Returns
  whether the manipulator is enabled or not.

## isMouseDeviceEnabled()

bool SurgSim::Graphics::OsgView::isMouseDeviceEnabled | ( |  | ) |

Returns
  Whether the mouse device is enabled.

## isWindowBorderEnabled()

bool SurgSim::Graphics::OsgView::isWindowBorderEnabled | ( |  | ) | const

override virtual

Returns whether the view window has a border.

Returns
  True to enable the border around the window; false for no border

Implements SurgSim::Graphics::View.

## setCamera()

void SurgSim::Graphics::OsgView::setCamera | ( | std::shared_ptr< SurgSim::Framework::Component > | camera | ) |

override virtual

Sets the camera which provides the viewpoint in the scene Only allows OsgCamera components, any other will not be set and it will return false.

Parameters

  camera | Camera whose image will be shown in this view

Returns
  True if it succeeded, false if it failed

Reimplemented from SurgSim::Graphics::View.

## setDimensions()

void SurgSim::Graphics::OsgView::setDimensions | ( | const std::array< int, 2 > & | dimensions | ) |

override virtual

Set the dimensions of this view.

Parameters

  dimensions | Dimensions on the screen (in pixels)

Implements SurgSim::Graphics::View.

## setDimensionsDouble()

void SurgSim::Graphics::OsgView::setDimensionsDouble | ( | const std::array< double, 2 > & | dimensions | ) |

override virtual

Set the dimensions of this view in doubles.

Parameters

  dimensions | Dimensions on the screen (in pixels)

Implements SurgSim::Graphics::View.

## setManipulatorLookAt()

void SurgSim::Graphics::OsgView::setManipulatorLookAt | ( | const SurgSim::Math::Vector3d & | lookAt | ) |

Set the camera manipulator lookAt.

Parameters

  lookAt | The location the camera looks at.

## setManipulatorParameters()

void SurgSim::Graphics::OsgView::setManipulatorParameters | ( | const SurgSim::Math::Vector3d & | position,
|  | const SurgSim::Math::Vector3d & | lookat
| ) |  |

As the camera is not accessible from here and as it cannot be controlled from the outside any more we let the user set the parameters from here.

Parameters

  position | The position of the camera.
  lookat | The location the camera looks at.

## setManipulatorPosition()

void SurgSim::Graphics::OsgView::setManipulatorPosition | ( | const SurgSim::Math::Vector3d & | position | ) |

Set the camera manipulator position.

Parameters

  position | The position of the camera.

## setOsgMapsUniforms()

void SurgSim::Graphics::OsgView::setOsgMapsUniforms | ( | bool | val | ) |

Enable osg modelview uniforms mapping, in this mode osg replaces the gl builtins with osg_* names, for uniforms and vertex attributes.

Parameters

  val | Whether to enable osg uniform mapping, default false

## setPosition()

void SurgSim::Graphics::OsgView::setPosition | ( | const std::array< int, 2 > & | position | ) |

override virtual

Set the position of this view.

Parameters

  position | Position on the screen (in pixels)

Returns
  True if it succeeded, false if it failed

Implements SurgSim::Graphics::View.

## setWindowBorderEnabled()

void SurgSim::Graphics::OsgView::setWindowBorderEnabled | ( | bool | enabled | ) |

override virtual

Sets whether the view window has a border.

Parameters

  enabled | True to enable the border around the window; false for no border

Implements SurgSim::Graphics::View.

## SURGSIM_CLASSNAME()

SurgSim::Graphics::OsgView::SURGSIM_CLASSNAME | ( | SurgSim::Graphics::OsgView |  | ) |

## update()

void SurgSim::Graphics::OsgView::update | ( | double | dt | ) |

override virtual

Updates the view.

Parameters

  dt | The time in seconds of the preceding timestep.

Implements SurgSim::Graphics::View.

## Member Data Documentation

## m_areWindowSettingsDirty

bool SurgSim::Graphics::OsgView::m_areWindowSettingsDirty

private

Whether the settings have been changed and the window needs to be updated.

## m_dimensions

std::array<int, 2> SurgSim::Graphics::OsgView::m_dimensions

private

Dimensions of the view on the screen (in pixels)

## m_isFirstUpdate

bool SurgSim::Graphics::OsgView::m_isFirstUpdate

private

Whether the next update will be the first time the view has been updated On the first update, the view window is setup.

## m_isWindowBorderEnabled

bool SurgSim::Graphics::OsgView::m_isWindowBorderEnabled

private

Whether the view window has a border.

## m_keyboardDevice

std::shared_ptr<SurgSim::Devices::KeyboardDevice> SurgSim::Graphics::OsgView::m_keyboardDevice

private

## m_keyboardEnabled

bool SurgSim::Graphics::OsgView::m_keyboardEnabled

private

Indicate if a keyboard device is enabled.

## m_manipulator

osg::ref_ptr<OsgTrackballZoomManipulator> SurgSim::Graphics::OsgView::m_manipulator

private

## m_manipulatorLookat

SurgSim::Math::Vector3d SurgSim::Graphics::OsgView::m_manipulatorLookat

private

## m_manipulatorPosition

SurgSim::Math::Vector3d SurgSim::Graphics::OsgView::m_manipulatorPosition

private

## m_mouseDevice

std::shared_ptr<SurgSim::Devices::MouseDevice> SurgSim::Graphics::OsgView::m_mouseDevice

private

## m_mouseEnabled

bool SurgSim::Graphics::OsgView::m_mouseEnabled

private

Indicate if a mouse device is enabled.

## m_osgMapUniforms

bool SurgSim::Graphics::OsgView::m_osgMapUniforms

private

Wether to enable osg uniform mapping.

## m_position

std::array<int, 2> SurgSim::Graphics::OsgView::m_position

private

Position of the view on the screen (in pixels)

## m_screenDimensions

std::array<int, 2> SurgSim::Graphics::OsgView::m_screenDimensions

private

## m_view

osg::ref_ptr<osgViewer::View> SurgSim::Graphics::OsgView::m_view

private

OSG view which performs the actual work involved in setting up and rendering to a window.

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

- SurgSim/Graphics/OsgView.h
- SurgSim/Graphics/OsgView.cpp