17 #ifndef GAZEBO_RENDERING_VISUAL_HH_ 18 #define GAZEBO_RENDERING_VISUAL_HH_ 20 #include <boost/enable_shared_from_this.hpp> 21 #include <boost/function.hpp> 27 #include <ignition/math/Box.hh> 28 #include <ignition/math/Color.hh> 29 #include <ignition/math/Pose3.hh> 30 #include <ignition/math/Quaternion.hh> 31 #include <ignition/math/Vector3.hh> 32 #include <ignition/msgs/MessageTypes.hh> 38 #include "gazebo/msgs/MessageTypes.hh" 61 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 Name()
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=
"");
197 public:
void SetScale(
const ignition::math::Vector3d &_scale);
201 public: ignition::math::Vector3d Scale()
const;
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);
233 public:
void SetMaterialShaderParam(
const std::string &_paramName,
234 const std::string &_shaderType,
const std::string &_value);
246 public:
void SetAmbient(const
ignition::math::Color &_color,
247 const
bool _cascade = true);
253 public:
void SetDiffuse(const common::Color &_color,
259 public:
void SetDiffuse(const
ignition::math::Color &_color,
260 const
bool _cascade = true);
266 public:
void SetSpecular(const common::Color &_color,
272 public:
void SetSpecular(const
ignition::math::Color &_color,
273 const
bool _cascade = true);
279 public: virtual
void SetEmissive(const common::Color &_color,
285 public: virtual
void SetEmissive(const
ignition::math::Color &_color,
286 const
bool _cascade = true);
295 public:
ignition::math::Color Ambient() const;
304 public:
ignition::math::Color Diffuse() const;
313 public:
ignition::math::Color Specular() const;
322 public:
ignition::math::Color Emissive() const;
326 public:
void SetWireframe(
bool _show);
330 public:
bool Wireframe() const;
335 private:
void SetTransparencyInnerLoop(
Ogre::SceneNode *_sceneNode);
340 public:
void SetTransparency(
float _trans);
344 public:
float GetTransparency();
349 public:
float DerivedTransparency() const;
353 public:
void SetInheritTransparency(const
bool _inherit);
357 public:
bool InheritTransparency() const;
362 public: virtual
void SetHighlighted(
bool _highlighted);
367 public:
bool GetHighlighted() const;
371 public:
bool GetCastShadows() const;
375 public:
void SetCastShadows(
bool _shadows);
380 public: virtual
void SetVisible(
bool _visible,
bool _cascade = true);
383 public:
void ToggleVisible();
387 public:
bool GetVisible() const;
391 public:
void SetPosition(const
ignition::math::Vector3d &_pos);
395 public:
void SetRotation(const
ignition::math::Quaterniond &_rot);
399 public:
void SetPose(const
ignition::math::Pose3d &_pose);
403 public:
ignition::math::Vector3d Position() const;
407 public:
ignition::math::Quaterniond Rotation() const;
411 public:
ignition::math::Pose3d Pose() const;
415 public:
ignition::math::Pose3d InitialRelativePose() const;
419 public:
ignition::math::Pose3d WorldPose() const;
423 public:
void SetWorldPose(const
ignition::math::Pose3d &_pose);
427 public:
void SetWorldPosition(const
ignition::math::Vector3d &_pos);
431 public:
void SetWorldRotation(const
ignition::math::Quaterniond &_rot);
435 public:
Ogre::SceneNode *GetSceneNode() const;
438 public:
void MakeStatic();
442 public:
bool IsStatic() const;
446 public:
void EnableTrackVisual(
VisualPtr _vis);
449 public:
void DisableTrackVisual();
453 public: std::
string GetNormalMap() const;
457 public:
void SetNormalMap(const std::
string &_nmap);
464 public:
void SetRibbonTrail(
bool _value,
465 const common::Color &_initialColor,
472 public:
void SetRibbonTrail(
bool _value,
473 const
ignition::math::Color &_initialColor,
474 const
ignition::math::Color &_changeColor);
478 public:
ignition::math::Box BoundingBox() const;
494 unsigned int _index);
498 public: std::
string GetMaterialName() const;
504 public:
void InsertMesh(const std::
string &_meshName,
505 const std::
string &_subMesh = "",
506 bool _centerSubmesh = false);
512 public: static
void InsertMesh(const common::Mesh *_mesh,
513 const std::
string &_subMesh = "",
514 bool _centerSubmesh = false);
518 public:
void UpdateFromMsg(ConstVisualPtr &_msg);
522 public:
bool IsPlane() const;
539 public:
VisualPtr GetNthAncestor(
unsigned int _n);
544 public:
bool IsAncestorOf(const rendering::
VisualPtr _visual) const;
549 public:
bool IsDescendantOf(const rendering::
VisualPtr _visual) const;
554 public:
unsigned int GetDepth() const;
559 public: std::
string GetShaderType() const;
564 public:
void SetShaderType(const std::
string &_type);
569 public:
void MoveToPosition(const
ignition::math::Pose3d &_pose,
576 public:
void MoveToPositions(
577 const std::vector<
ignition::math::Pose3d> &_pts, const
double _time,
578 std::function<
void()> _onComplete =
nullptr);
585 public:
void SetVisibilityFlags(uint32_t _flags);
592 public: uint32_t GetVisibilityFlags();
595 public:
void ShowBoundingBox();
600 public:
void ShowCollision(
bool _show);
604 public:
void ShowSkeleton(
bool _show);
608 public:
void SetScene(
ScenePtr _scene);
616 public:
void ShowJoints(
bool _show);
620 public:
void ShowCOM(
bool _show);
624 public:
void ShowInertia(
bool _show);
628 public:
void ShowLinkFrame(
bool _show);
632 public:
void SetSkeletonPose(const msgs::PoseAnimation &_pose);
638 public:
void LoadPlugin(const std::
string &_filename,
639 const std::
string &_name,
640 sdf::ElementPtr _sdf);
644 public:
void RemovePlugin(const std::
string &_name);
647 public: uint32_t GetId() const;
650 public:
void SetId(uint32_t _id);
654 public: std::
string GetGeometryType() const;
658 public:
ignition::math::Vector3d GetGeometrySize() const;
662 public: std::
string GetMeshName() const;
667 public: std::
string GetSubMeshName() const;
670 public:
void ClearParent();
675 public:
void ToggleLayer(const int32_t _layer);
679 public:
void SetLayer(const int32_t _layer);
683 public:
Visual::VisualType GetType() const;
687 public:
void SetType(const
Visual::VisualType _type);
691 public:
bool UseRTShader() const;
696 public:
void SetTypeMsg(const
google::protobuf::Message *_msg);
702 public:
void AddPendingChild(std::pair<VisualType,
703 const
google::protobuf::Message *> _pair);
708 public: static
Visual::VisualType ConvertVisualType(
709 const msgs::
Visual::Type &_type);
714 public: static msgs::
Visual::Type ConvertVisualType(
715 const
Visual::VisualType &_type);
720 public:
void FillMaterialMsg(
ignition::msgs::Material &_msg) const;
729 protected:
Visual(VisualPrivate &_dataPtr,
730 const std::
string &_name,
VisualPtr _parent,
731 bool _useRTShader = true);
740 protected:
Visual(VisualPrivate &_dataPtr,
741 const std::
string &_name,
ScenePtr _scene,
742 bool _useRTShader = true);
746 protected:
void ProcessMaterialMsg(const
ignition::msgs::Material &_msg);
754 private:
void Init(const std::
string &_name,
ScenePtr _scene,
763 private:
void Init(const std::
string &_name,
VisualPtr _parent,
768 private:
void LoadPlugins();
770 private:
void LoadPlugin(sdf::ElementPtr _sdf);
775 private:
void BoundsHelper(
Ogre::SceneNode *_node,
781 private:
bool GetCenterSubMesh() const;
785 private:
void DestroyAllAttachedMovableObjects(
786 Ogre::SceneNode *_sceneNode);
791 private:
void UpdateGeomSize(const
ignition::math::Vector3d &_scale);
795 private:
void UpdateTransparency(const
bool _cascade = true);
799 protected: VisualPrivate *dataPtr;
Class for drawing lines that can change.
Definition: DynamicLines.hh:42
Link visual.
Definition: Visual.hh:72
Forward declarations for the common classes.
Definition: Animation.hh:26
Entity visual.
Definition: Visual.hh:68
GUI visual.
Definition: Visual.hh:80
A renderable object.
Definition: Visual.hh:60
RenderOpType
Type of render operation for a drawable.
Definition: RenderTypes.hh:216
A strip of connected lines, 1 vertex per line plus 1 start vertex.
Definition: RenderTypes.hh:226
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:82
Model visual.
Definition: Visual.hh:70
VisualType
Type of visual.
Definition: Visual.hh:65
Definition: JointMaker.hh:39
Defines a color.
Definition: Color.hh:36
#define GAZEBO_DEPRECATED(version)
Definition: system.hh:328
std::shared_ptr< Visual > VisualPtr
Definition: RenderTypes.hh:114
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
Definition: ConfigWidget.hh:33
Visual visual.
Definition: Visual.hh:74
Collision visual.
Definition: Visual.hh:76
Sensor visual.
Definition: Visual.hh:78