SurgSim::Graphics::OsgCurveRepresentation Class Reference

Implements the CurveRepresentation for OpenSceneGraph, it uses Catmull Rom interpolation, to draw the line as a GL_LINESTRIP. More...

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

Inheritance diagram for SurgSim::Graphics::OsgCurveRepresentation:

## Public Member Functions

| OsgCurveRepresentation (const std::string &name)
| Constructor. More...
| ~OsgCurveRepresentation ()
| SURGSIM_CLASSNAME (SurgSim::Graphics::OsgCurveRepresentation)
bool | doInitialize () override
| Interface to be implemented by derived classes. More...
bool | doWakeUp () override
| Interface to be implemented by derived classes. More...
void | doUpdate (double dt) override
void | setSubdivisions (size_t num) override
| Sets the number of intermediate points the get generated between each two control points. More...
size_t | getSubdivisions () const override
void | setTension (double tension) override
| Sets the tension (tau) parameter of the Catmull Rom interpolation, needs to be between 0.0 and 1.0. More...
double | getTension () const override
void | setColor (const SurgSim::Math::Vector4d &color) override
| Sets the color for the curve. More...
Math::Vector4d | getColor () const override
void | setWidth (double width) override
| Sets the line width to be used for drawing this curve. More...
double | getWidth () const override
void | setAntiAliasing (bool val) override
| Sets up whether to use anti aliasing on the curve or not. More...
bool | isAntiAliasing () const override
Public Member Functions inherited from SurgSim::Graphics::OsgRepresentation
| OsgRepresentation (const std::string &name)
| Constructor. More...
virtual | ~OsgRepresentation ()
| Destructor. More...
osg::ref_ptr< osg::Node > | getOsgNode () const
| Returns the root OSG Node for this representations portion of the scene graph. More...
bool | setMaterial (std::shared_ptr< SurgSim::Framework::Component > material) override
| Sets the material that defines the visual appearance of the representation. More...
std::shared_ptr< Material > | getMaterial () const override
| Gets the material that defines the visual appearance of the representation. More...
void | clearMaterial () override
| Removes the material from the representation. More...
void | setDrawAsWireFrame (bool val) override
| Sets the representation to render as a wire frame. More...
bool | getDrawAsWireFrame () const override
| Return if the representation is rendered as a wire frame. More...
void | setGenerateTangents (bool value) override
| Enable the generation of tangents When enabled it is up to the subclasses responsibility to react to changes and trigger the regeneration of Tangents. More...
bool | isGeneratingTangents () const override
void | update (double dt) override
| Updates the representation. More...
void | addUniform (std::shared_ptr< SurgSim::Graphics::UniformBase > uniform)
| Adds a uniform to this representation. More...
void | addUniform (const std::string &type, const std::string &name, const boost::any &value)
| Adds and a uniform to this representation and set its value. More...
Public Member Functions inherited from SurgSim::Graphics::Representation
| Representation (const std::string &name)
| Constructor. More...
virtual | ~Representation ()
| Destructor. More...
virtual bool | addGroupReference (const std::string &name)
| Add a reference to a group, this will eventual add this representation to the group with the the same name. 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
Public Member Functions inherited from SurgSim::Graphics::CurveRepresentation
| CurveRepresentation (const std::string &name)
| Constructor. More...
void | updateControlPoints (const DataStructures::VerticesPlain &vertices)
| Updates the control points for this class, this will cause a new curve to be generated on the next update. More...
void | updateControlPoints (DataStructures::VerticesPlain &&vertices)
| Updates the control points for this class, this will cause a new curve to be generated on the next update move support. More...

## Private Member Functions

void | updateGraphics (const DataStructures::VerticesPlain &controlPoints)
| Update the OSG structure with the information of the control points. More...

## Private Attributes

osg::ref_ptr< osg::Geometry > | m_geometry
osg::ref_ptr< osg::Vec3Array > | m_vertexData
osg::ref_ptr< osg::Vec3Array > | m_normalData
osg::ref_ptr< osg::DrawArrays > | m_drawArrays
Math::Vector4d | m_color
size_t | m_subdivision
double | m_tension
double | m_width
std::vector< Math::Vector3d > | m_controlPoints
std::vector< Math::Vector3d > | m_vertices

## Additional Inherited Members

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 ()
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::Graphics::OsgRepresentation
void | setVisible (bool val)
| Set the visibility of this representation. More...
void | updateTangents ()
| Causes the tangents to be recalculated if tangent generation is enabled Subclasses should call this whenever the state changes in a way that need tangents to be recalculated. More...
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...
Protected Attributes inherited from SurgSim::Graphics::OsgRepresentation
osg::ref_ptr< osg::Switch > | m_switch
| Switch used to toggle the visibility of the representation. More...
osg::ref_ptr< osg::PositionAttitudeTransform > | m_transform
| Transform used to pose the representation. More...
osg::ref_ptr< osg::Group > | m_materialProxy
| Holder for attributes coming from OsgMaterial. More...
std::shared_ptr< OsgMaterial > | m_material
| Material defining the visual appearance of the representation. More...
osg::ref_ptr< TangentSpaceGenerator > | m_tangentGenerator
| Visitor to generate tangents. More...
bool | m_drawAsWireFrame
| Indicates if the representation is rendered as a wireframe. More...
std::shared_ptr< OsgUniform< SurgSim::Math::Matrix44f > > | m_modelMatrixUniform
Protected Attributes inherited from SurgSim::Graphics::CurveRepresentation
Framework::LockedContainer< DataStructures::VerticesPlain > | m_locker
| Container control points, threadsafe access when updating. More...

## Detailed Description

Implements the CurveRepresentation for OpenSceneGraph, it uses Catmull Rom interpolation, to draw the line as a GL_LINESTRIP.

use the material_curve.vert shader for rendering. This class will also deposit the information of the segment in the normal information for the vertex.

## Constructor & Destructor Documentation

## OsgCurveRepresentation()

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

explicit

Constructor.

Parameters

  name | Name of the representation

## ~OsgCurveRepresentation()

SurgSim::Graphics::OsgCurveRepresentation::~OsgCurveRepresentation | ( |  | ) |

## Member Function Documentation

## doInitialize()

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

override virtual

Interface to be implemented by derived classes.

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

Reimplemented from SurgSim::Framework::Representation.

## doUpdate()

void SurgSim::Graphics::OsgCurveRepresentation::doUpdate | ( | double | dt | ) |

override virtual

Reimplemented from SurgSim::Graphics::OsgRepresentation.

## doWakeUp()

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

override virtual

Interface to be implemented by derived classes.

Returns
  True if component is woken up successfully; otherwise, false.

Reimplemented from SurgSim::Framework::Representation.

## getColor()

Math::Vector4d SurgSim::Graphics::OsgCurveRepresentation::getColor | ( |  | ) | const

override virtual

Returns
  the current color for this curve

Implements SurgSim::Graphics::CurveRepresentation.

## getSubdivisions()

size_t SurgSim::Graphics::OsgCurveRepresentation::getSubdivisions | ( |  | ) | const

override virtual

Returns
  the number of interpolated points between control points

Implements SurgSim::Graphics::CurveRepresentation.

## getTension()

double SurgSim::Graphics::OsgCurveRepresentation::getTension | ( |  | ) | const

override virtual

Returns
  the tension currently used

Implements SurgSim::Graphics::CurveRepresentation.

## getWidth()

double SurgSim::Graphics::OsgCurveRepresentation::getWidth | ( |  | ) | const

override virtual

Returns
  the current width

Implements SurgSim::Graphics::CurveRepresentation.

## isAntiAliasing()

bool SurgSim::Graphics::OsgCurveRepresentation::isAntiAliasing | ( |  | ) | const

override virtual

Returns
  whether the curve is currently being drawn with anti aliasing

Implements SurgSim::Graphics::CurveRepresentation.

## setAntiAliasing()

void SurgSim::Graphics::OsgCurveRepresentation::setAntiAliasing | ( | bool | val | ) |

override virtual

Sets up whether to use anti aliasing on the curve or not.

Parameters

  val | if true anti aliasing will be turned on

Implements SurgSim::Graphics::CurveRepresentation.

## setColor()

void SurgSim::Graphics::OsgCurveRepresentation::setColor | ( | const SurgSim::Math::Vector4d & | color | ) |

override virtual

Sets the color for the curve.

Parameters

  color | the new color to be used

Implements SurgSim::Graphics::CurveRepresentation.

## setSubdivisions()

void SurgSim::Graphics::OsgCurveRepresentation::setSubdivisions | ( | size_t | num | ) |

override virtual

Sets the number of intermediate points the get generated between each two control points.

Parameters

  num | number of interpolated points

Implements SurgSim::Graphics::CurveRepresentation.

## setTension()

void SurgSim::Graphics::OsgCurveRepresentation::setTension | ( | double | tension | ) |

override virtual

Sets the tension (tau) parameter of the Catmull Rom interpolation, needs to be between 0.0 and 1.0.

Parameters

  tension | the tension

Implements SurgSim::Graphics::CurveRepresentation.

## setWidth()

void SurgSim::Graphics::OsgCurveRepresentation::setWidth | ( | double | width | ) |

override virtual

Sets the line width to be used for drawing this curve.

Parameters

  width | the new width to be used

Implements SurgSim::Graphics::CurveRepresentation.

## SURGSIM_CLASSNAME()

SurgSim::Graphics::OsgCurveRepresentation::SURGSIM_CLASSNAME | ( | SurgSim::Graphics::OsgCurveRepresentation |  | ) |

## updateGraphics()

void SurgSim::Graphics::OsgCurveRepresentation::updateGraphics | ( | const DataStructures::VerticesPlain & | controlPoints | ) |

private

Update the OSG structure with the information of the control points.

Parameters

  controlPoints | to use

## Member Data Documentation

## m_color

Math::Vector4d SurgSim::Graphics::OsgCurveRepresentation::m_color

private

Members for the CurveRepresentation properties

## m_controlPoints

std::vector<Math::Vector3d> SurgSim::Graphics::OsgCurveRepresentation::m_controlPoints

private

Local structures to keep allocations to a minimum

## m_drawArrays

osg::ref_ptr<osg::DrawArrays> SurgSim::Graphics::OsgCurveRepresentation::m_drawArrays

private

OSG handles for updating

## m_geometry

osg::ref_ptr<osg::Geometry> SurgSim::Graphics::OsgCurveRepresentation::m_geometry

private

OSG handles for updating

## m_normalData

osg::ref_ptr<osg::Vec3Array> SurgSim::Graphics::OsgCurveRepresentation::m_normalData

private

OSG handles for updating

## m_subdivision

size_t SurgSim::Graphics::OsgCurveRepresentation::m_subdivision

private

Members for the CurveRepresentation properties

## m_tension

double SurgSim::Graphics::OsgCurveRepresentation::m_tension

private

Members for the CurveRepresentation properties

## m_vertexData

osg::ref_ptr<osg::Vec3Array> SurgSim::Graphics::OsgCurveRepresentation::m_vertexData

private

OSG handles for updating

## m_vertices

std::vector<Math::Vector3d> SurgSim::Graphics::OsgCurveRepresentation::m_vertices

private

Local structures to keep allocations to a minimum

## m_width

double SurgSim::Graphics::OsgCurveRepresentation::m_width

private

Members for the CurveRepresentation properties

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

- SurgSim/Graphics/OsgCurveRepresentation.h
- SurgSim/Graphics/OsgCurveRepresentation.cpp