Ignition Gazebo

API Reference

6.0.0~pre1
SceneManager.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 #ifndef IGNITION_GAZEBO_SCENEMANAGER_HH_
19 #define IGNITION_GAZEBO_SCENEMANAGER_HH_
20 
21 #include <map>
22 #include <memory>
23 #include <string>
24 
25 #include <sdf/Geometry.hh>
26 #include <sdf/Actor.hh>
27 #include <sdf/Joint.hh>
28 #include <sdf/Light.hh>
29 #include <sdf/Link.hh>
30 #include <sdf/Material.hh>
31 #include <sdf/Model.hh>
32 #include <sdf/Visual.hh>
33 
36 #include <ignition/common/graphics/Types.hh>
37 
39 
40 #include <ignition/rendering/RenderTypes.hh>
41 
42 #include <ignition/gazebo/config.hh>
44 #include <ignition/gazebo/rendering/Export.hh>
45 
46 namespace ignition
47 {
48 namespace gazebo
49 {
50 // Inline bracket to help doxygen filtering.
51 inline namespace IGNITION_GAZEBO_VERSION_NAMESPACE {
52  // Forward declaration
53  class SceneManagerPrivate;
54 
57  {
63  public: std::chrono::steady_clock::duration time;
64 
66  public: bool loop = false;
67 
69  public: bool followTrajectory = false;
70 
73 
77 
83 
86  public: bool valid = false;
87  };
88 
90  class IGNITION_GAZEBO_RENDERING_VISIBLE SceneManager
91  {
93  public: SceneManager();
94 
96  public: ~SceneManager();
97 
100  public: void SetScene(rendering::ScenePtr _scene);
101 
104  public: rendering::ScenePtr Scene() const;
105 
108  public: void SetWorldId(Entity _id);
109 
112  public: Entity WorldId() const;
113 
119  public: rendering::VisualPtr CreateModel(Entity _id,
120  const sdf::Model &_model, Entity _parentId = 0);
121 
127  public: rendering::VisualPtr CreateLink(Entity _id,
128  const sdf::Link &_link, Entity _parentId = 0);
129 
135  public: rendering::VisualPtr CreateVisual(Entity _id,
136  const sdf::Visual &_visual, Entity _parentId = 0);
137 
143  public: rendering::VisualPtr CreateCOMVisual(Entity _id,
144  const math::Inertiald &_inertial, Entity _parentId = 0);
145 
151  public: rendering::VisualPtr CreateInertiaVisual(Entity _id,
152  const math::Inertiald &_inertial, Entity _parentId = 0);
153 
160  public: rendering::VisualPtr CreateJointVisual(Entity _id,
161  const sdf::Joint &_joint, Entity _childId = 0,
162  Entity _parentId = 0);
163 
169  public: rendering::VisualPtr CreateCollision(Entity _id,
170  const sdf::Collision &_collision, Entity _parentId = 0);
171 
175  public: rendering::VisualPtr VisualById(Entity _id);
176 
183  public: rendering::VisualPtr CreateActor(Entity _id,
184  const sdf::Actor &_actor, const std::string &_name,
185  Entity _parentId = 0);
186 
193  public: rendering::LightPtr CreateLight(Entity _id,
194  const sdf::Light &_light, const std::string &_name, Entity _parentId);
195 
202  public: rendering::VisualPtr CreateLightVisual(Entity _id,
203  const sdf::Light &_light, const std::string &_name, Entity _parentId);
204 
210  public: rendering::ParticleEmitterPtr CreateParticleEmitter(
211  Entity _id, const msgs::ParticleEmitter &_emitter, Entity _parentId);
212 
217  public: rendering::ParticleEmitterPtr UpdateParticleEmitter(Entity _id,
218  const msgs::ParticleEmitter &_emitter);
219 
227  public: bool AddSensor(Entity _gazeboId, const std::string &_sensorName,
228  Entity _parentGazeboId = 0);
229 
233  public: bool HasEntity(Entity _id) const;
234 
238  public: rendering::NodePtr NodeById(Entity _id) const;
239 
243  public: rendering::MeshPtr ActorMeshById(Entity _id) const;
244 
248  public: common::SkeletonPtr ActorSkeletonById(Entity _id) const;
249 
256  public: std::map<std::string, math::Matrix4d> ActorSkeletonTransformsAt(
257  Entity _id, std::chrono::steady_clock::duration _time) const;
258 
266  public: AnimationUpdateData ActorAnimationAt(
267  Entity _id, std::chrono::steady_clock::duration _time) const;
268 
271  public: void RemoveEntity(Entity _id);
272 
279  private: rendering::GeometryPtr LoadGeometry(const sdf::Geometry &_geom,
280  math::Vector3d &_scale, math::Pose3d &_localPose);
281 
285  private: rendering::MaterialPtr LoadMaterial(
286  const sdf::Material &_material);
287 
293  public: rendering::VisualPtr TopLevelVisual(
294  const rendering::VisualPtr &_visual) const;
295 
301  public: rendering::NodePtr TopLevelNode(
302  const rendering::NodePtr &_node) const;
303 
311  public: void UpdateTransparency(const rendering::NodePtr &_node,
312  bool _makeTransparent);
313 
317  public: void UpdateJointParentPose(Entity _jointId);
318 
321  private: std::unique_ptr<SceneManagerPrivate> dataPtr;
322  };
323 }
324 }
325 }
326 
327 #endif
Component< NoData, class VisualTag > Visual
A component that identifies an entity as being a visual.
Definition: Visual.hh:33
Component< sdf::Geometry, class GeometryTag, serializers::GeometrySerializer > Geometry
This component holds an entity&#39;s geometry.
Definition: Geometry.hh:46
common::TrajectoryInfo trajectory
Trajectory to be followed.
Definition: SceneManager.hh:72
std::string animationName
Name of animation to play. This field is set only if the actor is not animated by manually using skel...
Definition: SceneManager.hh:76
Component< NoData, class JointTag > Joint
A component that identifies an entity as being a joint.
Definition: Joint.hh:33
Data structure for updating skeleton animations.
Definition: SceneManager.hh:56
STL class.
Component< sdf::Scene, class SceneTag, serializers::SceneSerializer > Scene
This component holds scene properties of the world.
Definition: Scene.hh:45
math::Matrix4d rootTransform
Transform of the root node in the skeleton. The actor&#39;s skeleton&#39;s root node transform needs to be se...
Definition: SceneManager.hh:82
STL class.
Component< sdf::Material, class MaterialTag, serializers::MaterialSerializer > Material
This component holds an entity&#39;s material.
Definition: Material.hh:44
Component< NoData, class ModelTag > Model
A component that identifies an entity as being a model.
Definition: components/Model.hh:86
Component< sdf::Light, class LightTag, serializers::LightSerializer > Light
This component contains light source information. For more information on lights, see SDF&#39;s Light ele...
Definition: Light.hh:48
std::chrono::steady_clock::duration time
Timepoint in the animation. Note that animation time is different from sim time. An actor can have mu...
Definition: SceneManager.hh:63
Component< NoData, class CollisionTag > Collision
A component that identifies an entity as being a collision.
Definition: Collision.hh:42
Component< NoData, class LinkTag > Link
A component that identifies an entity as being a link.
Definition: components/Link.hh:33
Scene manager class for loading and managing objects in the scene.
Definition: SceneManager.hh:90
Component< sdf::Actor, class ActorTag, serializers::ActorSerializer > Actor
This component contains actor source information. For more information on actors, see SDF&#39;s Actor ele...
Definition: Actor.hh:80
This library is part of the Ignition Robotics project.
uint64_t Entity
An Entity identifies a single object in simulation such as a model, link, or light. At its core, an Entity is just an identifier.
Definition: Entity.hh:59