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/Pose3.hh> 29 #include <ignition/math/Quaternion.hh> 30 #include <ignition/math/Vector3.hh> 31 #include <ignition/msgs/MessageTypes.hh> 37 #include "gazebo/msgs/MessageTypes.hh" 64 public std::enable_shared_from_this<Visual>
94 bool _useRTShader =
true);
102 bool _useRTShader =
true);
105 public:
virtual ~
Visual();
111 public:
virtual void Fini();
121 public:
void LoadFromMsg(ConstVisualPtr &_msg);
125 public:
void Load(sdf::ElementPtr _sdf);
128 public:
virtual void Load();
131 public:
void Update();
139 public: sdf::ElementPtr GetSDF()
const;
143 public:
void SetName(
const std::string &_name);
152 public:
std::
string Name() const;
156 public:
void AttachVisual(
VisualPtr _vis);
160 public:
void DetachVisual(
VisualPtr _vis);
164 public:
void DetachVisual(const
std::
string &_name);
168 public:
void AttachObject(
Ogre::MovableObject *_obj);
172 public:
bool HasAttachedObject(const
std::
string &_name);
176 public:
unsigned int GetAttachedObjectCount() const;
179 public:
void DetachObjects();
183 public:
unsigned int GetChildCount();
189 public:
VisualPtr GetChild(
unsigned int _index);
198 public:
Ogre::MovableObject *AttachMesh(const
std::
string &_meshName,
199 const
std::
string &_subMesh="",
200 bool _centerSubmesh = false,
201 const
std::
string &_objName="");
210 public:
void SetScale(const
ignition::math::Vector3d &_scale);
219 public:
ignition::math::Vector3d Scale() const;
223 public:
ignition::math::Vector3d DerivedScale() const;
227 public:
bool GetLighting() const;
231 public:
void SetLighting(
bool _lighting);
239 public:
void SetMaterial(const
std::
string &_materialName,
240 bool _unique = true, const
bool _cascade = true);
251 public:
void SetMaterialShaderParam(const
std::
string &_paramName,
252 const
std::
string &_shaderType, const
std::
string &_value);
257 public:
void SetAmbient(const common::Color &_color,
258 const
bool _cascade = true);
263 public:
void SetDiffuse(const common::Color &_color,
264 const
bool _cascade = true);
269 public:
void SetSpecular(const common::Color &_color,
270 const
bool _cascade = true);
275 public: virtual
void SetEmissive(const common::Color &_color,
276 const
bool _cascade = true);
280 public: common::Color GetAmbient() const;
284 public: common::Color GetDiffuse() const;
288 public: common::Color GetSpecular() const;
292 public: common::Color GetEmissive() const;
296 public:
void SetWireframe(
bool _show);
300 public:
bool Wireframe() const;
305 private:
void SetTransparencyInnerLoop(
Ogre::SceneNode *_sceneNode);
310 public:
void SetTransparency(
float _trans);
314 public:
float GetTransparency();
319 public:
float DerivedTransparency() const;
323 public:
void SetInheritTransparency(const
bool _inherit);
327 public:
bool InheritTransparency() const;
332 public: virtual
void SetHighlighted(
bool _highlighted);
337 public:
bool GetHighlighted() const;
341 public:
bool GetCastShadows() const;
345 public:
void SetCastShadows(
bool _shadows);
350 public: virtual
void SetVisible(
bool _visible,
bool _cascade = true);
353 public:
void ToggleVisible();
357 public:
bool GetVisible() const;
362 public:
void SetPosition(const math::Vector3 &_pos)
367 public:
void SetPosition(const
ignition::math::Vector3d &_pos);
372 public:
void SetRotation(const math::Quaternion &_rot)
377 public:
void SetRotation(const
ignition::math::Quaterniond &_rot);
386 public:
void SetPose(const
ignition::math::Pose3d &_pose);
395 public:
ignition::math::Vector3d Position() const;
404 public:
ignition::math::Quaterniond Rotation() const;
414 public:
ignition::math::Pose3d Pose() const;
418 public:
ignition::math::Pose3d InitialRelativePose() const;
427 public:
ignition::math::Pose3d WorldPose() const;
436 public:
void SetWorldPose(const
ignition::math::Pose3d &_pose);
441 public:
void SetWorldPosition(const math::Vector3 &_pos)
446 public:
void SetWorldPosition(const
ignition::math::Vector3d &_pos);
451 public:
void SetWorldRotation(const math::Quaternion &_rot)
456 public:
void SetWorldRotation(const
ignition::math::Quaterniond &_rot);
460 public:
Ogre::SceneNode *GetSceneNode() const;
463 public:
void MakeStatic();
467 public:
bool IsStatic() const;
471 public:
void EnableTrackVisual(
VisualPtr _vis);
474 public:
void DisableTrackVisual();
478 public:
std::
string GetNormalMap() const;
482 public:
void SetNormalMap(const
std::
string &_nmap);
488 public:
void SetRibbonTrail(
bool _value,
489 const common::Color &_initialColor,
490 const common::Color &_changeColor);
499 public:
ignition::math::Box BoundingBox() const;
515 unsigned int _index);
519 public:
std::
string GetMaterialName() const;
525 public:
void InsertMesh(const
std::
string &_meshName,
526 const
std::
string &_subMesh = "",
527 bool _centerSubmesh = false);
533 public: static
void InsertMesh(const common::Mesh *_mesh,
534 const
std::
string &_subMesh = "",
535 bool _centerSubmesh = false);
539 public:
void UpdateFromMsg(ConstVisualPtr &_msg);
543 public:
bool IsPlane() const;
560 public:
VisualPtr GetNthAncestor(
unsigned int _n);
565 public:
bool IsAncestorOf(const rendering::
VisualPtr _visual) const;
570 public:
bool IsDescendantOf(const rendering::
VisualPtr _visual) const;
575 public:
unsigned int GetDepth() const;
580 public:
std::
string GetShaderType() const;
585 public:
void SetShaderType(const
std::
string &_type);
591 public:
void MoveToPosition(const math::Pose &_pose,
double _time)
597 public:
void MoveToPosition(const
ignition::math::Pose3d &_pose,
605 public:
void MoveToPositions(const
std::vector<math::Pose> &_pts,
607 std::function<
void()> _onComplete =
nullptr)
614 public:
void MoveToPositions(
615 const
std::vector<
ignition::math::Pose3d> &_pts, const
double _time,
616 std::function<
void()> _onComplete =
nullptr);
623 public:
void SetVisibilityFlags(uint32_t _flags);
630 public: uint32_t GetVisibilityFlags();
633 public:
void ShowBoundingBox();
638 public:
void ShowCollision(
bool _show);
642 public:
void ShowSkeleton(
bool _show);
646 public:
void SetScene(
ScenePtr _scene);
654 public:
void ShowJoints(
bool _show);
658 public:
void ShowCOM(
bool _show);
662 public:
void ShowInertia(
bool _show);
666 public:
void ShowLinkFrame(
bool _show);
670 public:
void SetSkeletonPose(const msgs::PoseAnimation &_pose);
676 public:
void LoadPlugin(const
std::
string &_filename,
677 const
std::
string &_name,
678 sdf::ElementPtr _sdf);
682 public:
void RemovePlugin(const
std::
string &_name);
685 public: uint32_t GetId() const;
688 public:
void SetId(uint32_t _id);
692 public:
std::
string GetGeometryType() const;
696 public:
ignition::math::Vector3d GetGeometrySize() const;
700 public:
std::
string GetMeshName() const;
705 public:
std::
string GetSubMeshName() const;
708 public:
void ClearParent();
713 public:
void ToggleLayer(const int32_t _layer);
717 public:
void SetLayer(const int32_t _layer);
721 public:
Visual::VisualType GetType() const;
725 public:
void SetType(const
Visual::VisualType _type);
729 public:
bool UseRTShader() const;
734 public:
void SetTypeMsg(const
google::protobuf::Message *_msg);
740 public:
void AddPendingChild(
std::pair<VisualType,
741 const
google::protobuf::Message *> _pair);
746 public: static
Visual::VisualType ConvertVisualType(
747 const msgs::
Visual::Type &_type);
752 public: static msgs::
Visual::Type ConvertVisualType(
753 const
Visual::VisualType &_type);
758 public:
void FillMaterialMsg(
ignition::msgs::Material &_msg) const;
767 protected:
Visual(VisualPrivate &_dataPtr,
769 bool _useRTShader = true);
778 protected:
Visual(VisualPrivate &_dataPtr,
780 bool _useRTShader = true);
784 protected:
void ProcessMaterialMsg(const
ignition::msgs::Material &_msg);
806 private:
void LoadPlugins();
808 private:
void LoadPlugin(sdf::ElementPtr _sdf);
813 private:
void BoundsHelper(
Ogre::SceneNode *_node,
819 private:
bool GetCenterSubMesh() const;
823 private:
void DestroyAllAttachedMovableObjects(
824 Ogre::SceneNode *_sceneNode);
829 private:
void UpdateGeomSize(const
ignition::math::Vector3d &_scale);
833 private:
void UpdateTransparency(const
bool _cascade = true);
837 protected: VisualPrivate *dataPtr;
Class for drawing lines that can change.
Definition: DynamicLines.hh:37
Link visual.
Definition: Visual.hh:75
Forward declarations for the common classes.
Definition: Animation.hh:33
Entity visual.
Definition: Visual.hh:71
GUI visual.
Definition: Visual.hh:83
A renderable object.
Definition: Visual.hh:63
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:73
VisualType
Type of visual.
Definition: Visual.hh:68
Definition: JointMaker.hh:39
#define GAZEBO_DEPRECATED(version)
Definition: system.hh:302
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:32
Visual visual.
Definition: Visual.hh:77
Definition: Animation.hh:24
Collision visual.
Definition: Visual.hh:79
Sensor visual.
Definition: Visual.hh:81