18 #ifndef _GAZEBO_VISUAL_HH_ 19 #define _GAZEBO_VISUAL_HH_ 22 #include <boost/enable_shared_from_this.hpp> 23 #include <boost/function.hpp> 35 #include "gazebo/msgs/MessageTypes.hh" 62 public std::enable_shared_from_this<Visual>
91 bool _useRTShader =
true);
99 bool _useRTShader =
true);
102 public:
virtual ~
Visual();
108 public:
virtual void Fini();
118 public:
void LoadFromMsg(ConstVisualPtr &_msg);
122 public:
void Load(sdf::ElementPtr _sdf);
125 public:
virtual void Load();
128 public:
void Update();
136 public: sdf::ElementPtr GetSDF()
const;
140 public:
void SetName(
const std::string &_name);
144 public: std::string GetName()
const;
148 public:
void AttachVisual(
VisualPtr _vis);
152 public:
void DetachVisual(
VisualPtr _vis);
156 public:
void DetachVisual(
const std::string &_name);
160 public:
void AttachObject(Ogre::MovableObject *_obj);
164 public:
bool HasAttachedObject(
const std::string &_name);
168 public:
unsigned int GetAttachedObjectCount()
const;
171 public:
void DetachObjects();
175 public:
unsigned int GetChildCount();
181 public:
VisualPtr GetChild(
unsigned int _index);
190 public: Ogre::MovableObject *AttachMesh(
const std::string &_meshName,
191 const std::string &_subMesh=
"",
192 bool _centerSubmesh =
false,
193 const std::string &_objName=
"");
205 public: ignition::math::Vector3d DerivedScale()
const;
209 public:
bool GetLighting()
const;
213 public:
void SetLighting(
bool _lighting);
221 public:
void SetMaterial(
const std::string &_materialName,
222 bool _unique =
true,
const bool _cascade =
true);
228 const bool _cascade =
true);
234 const bool _cascade =
true);
240 const bool _cascade =
true);
245 public:
virtual void SetEmissive(
const common::Color &_color,
246 const bool _cascade =
true);
266 public:
void SetWireframe(
bool _show);
270 public:
bool Wireframe()
const;
275 private:
void SetTransparencyInnerLoop(Ogre::SceneNode *_sceneNode);
280 public:
void SetTransparency(
float _trans);
284 public:
float GetTransparency();
289 public:
float DerivedTransparency()
const;
293 public:
void SetInheritTransparency(
const bool _inherit);
297 public:
bool InheritTransparency()
const;
302 public:
virtual void SetHighlighted(
bool _highlighted);
307 public:
bool GetHighlighted()
const;
311 public:
bool GetCastShadows()
const;
315 public:
void SetCastShadows(
bool _shadows);
320 public:
virtual void SetVisible(
bool _visible,
bool _cascade =
true);
323 public:
void ToggleVisible();
327 public:
bool GetVisible()
const;
339 public:
void SetPose(
const math::Pose &_pose);
355 public: ignition::math::Pose3d InitialRelativePose()
const;
363 public:
void SetWorldPose(
const math::Pose &_pose);
375 public: Ogre::SceneNode *GetSceneNode()
const;
378 public:
void MakeStatic();
382 public:
bool IsStatic()
const;
386 public:
void EnableTrackVisual(
VisualPtr _vis);
389 public:
void DisableTrackVisual();
393 public: std::string GetNormalMap()
const;
397 public:
void SetNormalMap(
const std::string &_nmap);
403 public:
void SetRibbonTrail(
bool _value,
409 public:
math::Box GetBoundingBox()
const;
425 unsigned int _index);
429 public: std::string GetMaterialName()
const;
435 public:
void InsertMesh(
const std::string &_meshName,
436 const std::string &_subMesh =
"",
437 bool _centerSubmesh =
false);
443 public:
static void InsertMesh(
const common::Mesh *_mesh,
444 const std::string &_subMesh =
"",
445 bool _centerSubmesh =
false);
449 public:
void UpdateFromMsg(ConstVisualPtr &_msg);
453 public:
bool IsPlane()
const;
470 public:
VisualPtr GetNthAncestor(
unsigned int _n);
485 public:
unsigned int GetDepth()
const;
490 public: std::string GetShaderType()
const;
495 public:
void SetShaderType(
const std::string &_type);
500 public:
void MoveToPosition(
const math::Pose &_pose,
double _time);
506 public:
void MoveToPositions(
const std::vector<math::Pose> &_pts,
508 boost::function<
void()> _onComplete =
NULL);
515 public:
void SetVisibilityFlags(uint32_t _flags);
522 public: uint32_t GetVisibilityFlags();
525 public:
void ShowBoundingBox();
530 public:
void ShowCollision(
bool _show);
534 public:
void ShowSkeleton(
bool _show);
538 public:
void SetScene(
ScenePtr _scene);
546 public:
void ShowJoints(
bool _show);
550 public:
void ShowCOM(
bool _show);
554 public:
void ShowInertia(
bool _show);
558 public:
void ShowLinkFrame(
bool _show);
562 public:
void SetSkeletonPose(
const msgs::PoseAnimation &_pose);
568 public:
void LoadPlugin(
const std::string &_filename,
569 const std::string &_name,
570 sdf::ElementPtr _sdf);
574 public:
void RemovePlugin(
const std::string &_name);
577 public: uint32_t GetId()
const;
580 public:
void SetId(uint32_t _id);
584 public: std::string GetGeometryType()
const;
588 public: ignition::math::Vector3d GetGeometrySize()
const;
592 public: std::string GetMeshName()
const;
597 public: std::string GetSubMeshName()
const;
600 public:
void ClearParent();
605 public:
void ToggleLayer(
const int32_t _layer);
617 public:
bool UseRTShader()
const;
622 public:
void SetTypeMsg(
const google::protobuf::Message *_msg);
628 public:
void AddPendingChild(std::pair<
VisualType,
629 const google::protobuf::Message *> _pair);
635 const msgs::Visual::Type &_type);
640 public:
static msgs::Visual::Type ConvertVisualType(
650 protected:
Visual(VisualPrivate &_dataPtr,
651 const std::string &_name,
VisualPtr _parent,
652 bool _useRTShader =
true);
661 protected:
Visual(VisualPrivate &_dataPtr,
662 const std::string &_name,
ScenePtr _scene,
663 bool _useRTShader =
true);
671 private:
void Init(
const std::string &_name,
ScenePtr _scene,
680 private:
void Init(
const std::string &_name,
VisualPtr _parent,
685 private:
void LoadPlugins();
687 private:
void LoadPlugin(sdf::ElementPtr _sdf);
692 private:
void GetBoundsHelper(Ogre::SceneNode *_node,
698 private:
bool GetCenterSubMesh()
const;
702 private:
void DestroyAllAttachedMovableObjects(
703 Ogre::SceneNode *_sceneNode);
708 private:
void UpdateGeomSize(
const ignition::math::Vector3d &_scale);
712 private:
void UpdateTransparency(
const bool _cascade =
true);
A 3D mesh.
Definition: Mesh.hh:44
Class for drawing lines that can change.
Definition: DynamicLines.hh:43
Link visual.
Definition: Visual.hh:72
Forward declarations for the common classes.
Definition: Animation.hh:33
Encapsulates a position and rotation in three space.
Definition: Pose.hh:37
VisualPrivate * dataPtr
Definition: Visual.hh:716
The Vector3 class represents the generic vector containing 3 elements.
Definition: Vector3.hh:39
Entity visual.
Definition: Visual.hh:68
Mathematical representation of a box and related functions.
Definition: Box.hh:35
GUI visual.
Definition: Visual.hh:80
A renderable object.
Definition: Visual.hh:61
RenderOpType
Type of render operation for a drawable.
Definition: RenderTypes.hh:208
A strip of connected lines, 1 vertex per line plus 1 start vertex.
Definition: RenderTypes.hh:218
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:82
Model visual.
Definition: Visual.hh:70
VisualType
Type of visual.
Definition: Visual.hh:65
A quaternion class.
Definition: Quaternion.hh:42
#define NULL
Definition: CommonTypes.hh:33
Definition: JointMaker.hh:41
Defines a color.
Definition: Color.hh:36
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:114
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
Visual visual.
Definition: Visual.hh:74
Collision visual.
Definition: Visual.hh:76
Sensor visual.
Definition: Visual.hh:78