OsgCurveRepresentation.h
Go to the documentation of this file.
// This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SURGSIM_GRAPHICS_OSGCURVEREPRESENTATION_H
#define SURGSIM_GRAPHICS_OSGCURVEREPRESENTATION_H
#include "SurgSim/Graphics/CurveRepresentation.h"
#include "SurgSim/Graphics/OsgRepresentation.h"
#include <osg/Array>
#include <osg/ref_ptr>
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#endif
namespace osg
{
class Geometry;
class DrawArrays;
}
namespace SurgSim
{
namespace Graphics
{
SURGSIM_STATIC_REGISTRATION(OsgCurveRepresentation)
class OsgCurveRepresentation : public OsgRepresentation, public CurveRepresentation
{
public:
explicit OsgCurveRepresentation(const std::string& name);
~OsgCurveRepresentation();
SURGSIM_CLASSNAME(SurgSim::Graphics::OsgCurveRepresentation);
bool doInitialize() override;
bool doWakeUp() override;
void doUpdate(double dt) override;
void setSubdivisions(size_t num) override;
size_t getSubdivisions() const override;
void setTension(double tension) override;
double getTension() const override;
void setColor(const SurgSim::Math::Vector4d& color) override;
Math::Vector4d getColor() const override;
void setWidth(double width) override;
double getWidth() const override;
void setAntiAliasing(bool val) override;
bool isAntiAliasing() const override;
private:
void updateGraphics(const DataStructures::VerticesPlain& controlPoints);
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;
};
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
}
}
#endif
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::Graphics::OsgCurveRepresentation::m_subdivision
size_t m_subdivision
Definition: OsgCurveRepresentation.h:101
CurveRepresentation.h
SurgSim::DataStructures::VerticesPlain
Vertices< EmptyData > VerticesPlain
Definition: Vertices.h:161
SurgSim::Graphics::OsgCurveRepresentation::m_geometry
osg::ref_ptr< osg::Geometry > m_geometry
Definition: OsgCurveRepresentation.h:92
SURGSIM_CLASSNAME
#define SURGSIM_CLASSNAME(ClassName)
Declare the class name of a class with the appropriate function header, do not use quotes...
Definition: Macros.h:21
SurgSim::Graphics::OsgCurveRepresentation::m_controlPoints
std::vector< Math::Vector3d > m_controlPoints
Definition: OsgCurveRepresentation.h:108
SurgSim::Graphics::OsgCurveRepresentation::m_vertices
std::vector< Math::Vector3d > m_vertices
Definition: OsgCurveRepresentation.h:109
SurgSim::Graphics::OsgCurveRepresentation::m_vertexData
osg::ref_ptr< osg::Vec3Array > m_vertexData
Definition: OsgCurveRepresentation.h:93
SurgSim::Graphics::OsgCurveRepresentation::m_width
double m_width
Definition: OsgCurveRepresentation.h:103
osg
Definition: OculusView.h:25
SurgSim::Graphics::OsgCurveRepresentation::m_drawArrays
osg::ref_ptr< osg::DrawArrays > m_drawArrays
Definition: OsgCurveRepresentation.h:95
OsgRepresentation.h
SurgSim::Graphics::OsgCurveRepresentation::m_color
Math::Vector4d m_color
Definition: OsgCurveRepresentation.h:100
SurgSim::Graphics::OsgCurveRepresentation::m_tension
double m_tension
Definition: OsgCurveRepresentation.h:102
SurgSim::Math::Vector4d
Eigen::Matrix< double, 4, 1 > Vector4d
A 4D vector of doubles.
Definition: Vector.h:61
SurgSim::Graphics::OsgCurveRepresentation
Implements the CurveRepresentation for OpenSceneGraph, it uses Catmull Rom interpolation, to draw the line as a GL_LINESTRIP.
Definition: OsgCurveRepresentation.h:47
SurgSim::Graphics::OsgCurveRepresentation::m_normalData
osg::ref_ptr< osg::Vec3Array > m_normalData
Definition: OsgCurveRepresentation.h:94