Ignition Rendering

API Reference

5.1.0
Scene.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 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 #ifndef IGNITION_RENDERING_SCENE_HH_
18 #define IGNITION_RENDERING_SCENE_HH_
19 
20 #include <array>
21 #include <string>
22 #include <limits>
23 
25 #include <ignition/common/Mesh.hh>
26 #include <ignition/common/Time.hh>
27 
28 #include <ignition/math/Color.hh>
29 
30 #include "ignition/rendering/config.hh"
35 #include "ignition/rendering/Export.hh"
36 
37 namespace ignition
38 {
39  namespace rendering
40  {
41  inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
42  //
43  class RenderEngine;
44 
49  class IGNITION_RENDERING_VISIBLE Scene
50  {
52  public: virtual ~Scene() { }
53 
55  public: virtual void Load() = 0;
56 
58  public: virtual void Init() = 0;
59 
60  // TODO(anyone): merge with Destroy
61  public: virtual void Fini() = 0;
62 
65  public: virtual bool IsInitialized() const = 0;
66 
69  public: virtual unsigned int Id() const = 0;
70 
73  public: virtual std::string Name() const = 0;
74 
77  public: virtual RenderEngine *Engine() const = 0;
78 
81  public: virtual common::Time IGN_DEPRECATED(4) SimTime() const = 0;
82 
85  public: virtual std::chrono::steady_clock::duration
86  Time() const = 0;
87 
90  public: virtual void IGN_DEPRECATED(4)
91  SetSimTime(const common::Time &_time) = 0;
92 
95  public: virtual void SetTime(
96  const std::chrono::steady_clock::duration &_time) = 0;
97 
103  public: virtual VisualPtr RootVisual() const = 0;
104 
109  public: virtual VisualPtr VisualAt(const CameraPtr &_camera,
110  const math::Vector2i &_mousePos) = 0;
111 
114  public: virtual math::Color AmbientLight() const = 0;
115 
121  public: virtual void SetAmbientLight(double _r, double _g, double _b,
122  double _a = 1.0) = 0;
123 
126  public: virtual void SetAmbientLight(const math::Color &_color) = 0;
127 
130  public: virtual math::Color BackgroundColor() const = 0;
131 
137  public: virtual void SetBackgroundColor(double _r, double _g, double _b,
138  double _a = 1.0) = 0;
139 
142  public: virtual void SetBackgroundColor(const math::Color &_color) = 0;
143 
146  public: virtual bool IsGradientBackgroundColor() const = 0;
147 
151  public: virtual std::array<math::Color, 4>
152  GradientBackgroundColor() const = 0;
153 
167  public: virtual void SetGradientBackgroundColor(
168  const std::array<math::Color, 4> &_colors) = 0;
169 
173  public: virtual void RemoveGradientBackgroundColor() = 0;
174 
178  public: virtual MaterialPtr BackgroundMaterial() const = 0;
179 
183  public: virtual void SetBackgroundMaterial(MaterialPtr _material) = 0;
184 
188  public: virtual unsigned int NodeCount() const = 0;
189 
193  public: virtual bool HasNode(ConstNodePtr _node) const = 0;
194 
199  public: virtual bool HasNodeId(unsigned int _id) const = 0;
200 
205  public: virtual bool HasNodeName(const std::string &_name) const = 0;
206 
211  public: virtual NodePtr NodeById(unsigned int _id) const = 0;
212 
217  public: virtual NodePtr NodeByName(const std::string &_name) const = 0;
218 
223  public: virtual NodePtr NodeByIndex(unsigned int _index) const = 0;
224 
232  public: virtual void DestroyNode(NodePtr _node,
233  bool _recursive = false) = 0;
234 
239  public: virtual void DestroyNodeById(unsigned int _id) = 0;
240 
245  public: virtual void DestroyNodeByName(const std::string &_name) = 0;
246 
251  public: virtual void DestroyNodeByIndex(unsigned int _index) = 0;
252 
254  public: virtual void DestroyNodes() = 0;
255 
259  public: virtual unsigned int LightCount() const = 0;
260 
264  public: virtual bool HasLight(ConstLightPtr _light) const = 0;
265 
270  public: virtual bool HasLightId(unsigned int _id) const = 0;
271 
276  public: virtual bool HasLightName(const std::string &_name) const = 0;
277 
282  public: virtual LightPtr LightById(unsigned int _id) const = 0;
283 
288  public: virtual LightPtr LightByName(
289  const std::string &_name) const = 0;
290 
295  public: virtual LightPtr LightByIndex(unsigned int _index) const = 0;
296 
304  public: virtual void DestroyLight(LightPtr _light,
305  bool _recursive = false) = 0;
306 
311  public: virtual void DestroyLightById(unsigned int _id) = 0;
312 
317  public: virtual void DestroyLightByName(const std::string &_name) = 0;
318 
323  public: virtual void DestroyLightByIndex(unsigned int _index) = 0;
324 
326  public: virtual void DestroyLights() = 0;
327 
331  public: virtual unsigned int SensorCount() const = 0;
332 
336  public: virtual bool HasSensor(ConstSensorPtr _sensor) const = 0;
337 
342  public: virtual bool HasSensorId(unsigned int _id) const = 0;
343 
348  public: virtual bool HasSensorName(const std::string &_name) const = 0;
349 
354  public: virtual SensorPtr SensorById(unsigned int _id) const = 0;
355 
360  public: virtual SensorPtr SensorByName(
361  const std::string &_name) const = 0;
362 
367  public: virtual SensorPtr SensorByIndex(unsigned int _index) const = 0;
368 
376  public: virtual void DestroySensor(SensorPtr _sensor,
377  bool _recursive = false) = 0;
378 
383  public: virtual void DestroySensorById(unsigned int _id) = 0;
384 
389  public: virtual void DestroySensorByName(const std::string &_name) = 0;
390 
395  public: virtual void DestroySensorByIndex(unsigned int _index) = 0;
396 
398  public: virtual void DestroySensors() = 0;
399 
403  public: virtual unsigned int VisualCount() const = 0;
404 
408  public: virtual bool HasVisual(ConstVisualPtr _node) const = 0;
409 
414  public: virtual bool HasVisualId(unsigned int _id) const = 0;
415 
420  public: virtual bool HasVisualName(const std::string &_name) const = 0;
421 
426  public: virtual VisualPtr VisualById(unsigned int _id) const = 0;
427 
432  public: virtual VisualPtr VisualByName(
433  const std::string &_name) const = 0;
434 
439  public: virtual VisualPtr VisualByIndex(unsigned int _index) const = 0;
440 
449  public: virtual void DestroyVisual(VisualPtr _node,
450  bool _recursive = false) = 0;
451 
456  public: virtual void DestroyVisualById(unsigned int _id) = 0;
457 
462  public: virtual void DestroyVisualByName(const std::string &_name) = 0;
463 
468  public: virtual void DestroyVisualByIndex(unsigned int _index) = 0;
469 
471  public: virtual void DestroyVisuals() = 0;
472 
476  public: virtual bool MaterialRegistered(
477  const std::string &_name) const = 0;
478 
483  public: virtual MaterialPtr Material(
484  const std::string &_name) const = 0;
485 
490  public: virtual void RegisterMaterial(const std::string &_name,
491  MaterialPtr _material) = 0;
492 
496  public: virtual void UnregisterMaterial(const std::string &_name) = 0;
497 
499  public: virtual void UnregisterMaterials() = 0;
500 
503  public: virtual void DestroyMaterial(MaterialPtr _material) = 0;
504 
506  public: virtual void DestroyMaterials() = 0;
507 
511  public: virtual DirectionalLightPtr CreateDirectionalLight() = 0;
512 
518  public: virtual DirectionalLightPtr CreateDirectionalLight(
519  unsigned int _id) = 0;
520 
526  public: virtual DirectionalLightPtr CreateDirectionalLight(
527  const std::string &_name) = 0;
528 
534  public: virtual DirectionalLightPtr CreateDirectionalLight(
535  unsigned int _id, const std::string &_name) = 0;
536 
540  public: virtual PointLightPtr CreatePointLight() = 0;
541 
547  public: virtual PointLightPtr CreatePointLight(
548  unsigned int _id) = 0;
549 
555  public: virtual PointLightPtr CreatePointLight(
556  const std::string &_name) = 0;
557 
563  public: virtual PointLightPtr CreatePointLight(
564  unsigned int _id, const std::string &_name) = 0;
565 
569  public: virtual SpotLightPtr CreateSpotLight() = 0;
570 
576  public: virtual SpotLightPtr CreateSpotLight(
577  unsigned int _id) = 0;
578 
584  public: virtual SpotLightPtr CreateSpotLight(
585  const std::string &_name) = 0;
586 
592  public: virtual SpotLightPtr CreateSpotLight(
593  unsigned int _id, const std::string &_name) = 0;
594 
598  public: virtual CameraPtr CreateCamera() = 0;
599 
605  public: virtual CameraPtr CreateCamera(
606  unsigned int _id) = 0;
607 
613  public: virtual CameraPtr CreateCamera(
614  const std::string &_name) = 0;
615 
621  public: virtual CameraPtr CreateCamera(
622  unsigned int _id, const std::string &_name) = 0;
623 
627  public: virtual DepthCameraPtr CreateDepthCamera() = 0;
628 
634  public: virtual DepthCameraPtr CreateDepthCamera(
635  unsigned int _id) = 0;
636 
642  public: virtual DepthCameraPtr CreateDepthCamera(
643  const std::string &_name) = 0;
644 
650  public: virtual DepthCameraPtr CreateDepthCamera(
651  unsigned int _id, const std::string &_name) = 0;
652 
656  public: virtual ThermalCameraPtr CreateThermalCamera() = 0;
657 
663  public: virtual ThermalCameraPtr CreateThermalCamera(
664  unsigned int _id) = 0;
665 
671  public: virtual ThermalCameraPtr CreateThermalCamera(
672  const std::string &_name) = 0;
673 
679  public: virtual ThermalCameraPtr CreateThermalCamera(
680  unsigned int _id, const std::string &_name) = 0;
681 
685  public: virtual GpuRaysPtr CreateGpuRays() = 0;
686 
692  public: virtual GpuRaysPtr CreateGpuRays(unsigned int _id) = 0;
693 
699  public: virtual GpuRaysPtr CreateGpuRays(
700  const std::string &_name) = 0;
701 
707  public: virtual GpuRaysPtr CreateGpuRays(
708  unsigned int _id, const std::string &_name) = 0;
709 
713  public: virtual VisualPtr CreateVisual() = 0;
714 
720  public: virtual VisualPtr CreateVisual(
721  unsigned int _id) = 0;
722 
728  public: virtual VisualPtr CreateVisual(
729  const std::string &_name) = 0;
730 
736  public: virtual VisualPtr CreateVisual(
737  unsigned int _id, const std::string &_name) = 0;
738 
742  public: virtual ArrowVisualPtr CreateArrowVisual() = 0;
743 
749  public: virtual ArrowVisualPtr CreateArrowVisual(
750  unsigned int _id) = 0;
751 
757  public: virtual ArrowVisualPtr CreateArrowVisual(
758  const std::string &_name) = 0;
759 
765  public: virtual ArrowVisualPtr CreateArrowVisual(
766  unsigned int _id, const std::string &_name) = 0;
767 
771  public: virtual AxisVisualPtr CreateAxisVisual() = 0;
772 
778  public: virtual AxisVisualPtr CreateAxisVisual(
779  unsigned int _id) = 0;
780 
786  public: virtual AxisVisualPtr CreateAxisVisual(
787  const std::string &_name) = 0;
788 
794  public: virtual AxisVisualPtr CreateAxisVisual(
795  unsigned int _id, const std::string &_name) = 0;
796 
800  public: virtual GizmoVisualPtr CreateGizmoVisual() = 0;
801 
807  public: virtual GizmoVisualPtr CreateGizmoVisual(
808  unsigned int _id) = 0;
809 
815  public: virtual GizmoVisualPtr CreateGizmoVisual(
816  const std::string &_name) = 0;
817 
823  public: virtual GizmoVisualPtr CreateGizmoVisual(
824  unsigned int _id, const std::string &_name) = 0;
825 
829  public: virtual LightVisualPtr CreateLightVisual() = 0;
830 
836  public: virtual LightVisualPtr CreateLightVisual(
837  unsigned int _id) = 0;
838 
844  public: virtual LightVisualPtr CreateLightVisual(
845  const std::string &_name) = 0;
846 
852  public: virtual LightVisualPtr CreateLightVisual(
853  unsigned int _id, const std::string &_name) = 0;
854 
857  public: virtual GeometryPtr CreateBox() = 0;
858 
861  public: virtual CapsulePtr CreateCapsule() = 0;
862 
865  public: virtual GeometryPtr CreateCone() = 0;
866 
869  public: virtual GeometryPtr CreateCylinder() = 0;
870 
873  public: virtual GeometryPtr CreatePlane() = 0;
874 
879  public: virtual GeometryPtr CreateSphere() = 0;
880 
887  public: virtual MeshPtr CreateMesh(const std::string &_meshName) = 0;
888 
894  public: virtual MeshPtr CreateMesh(const common::Mesh *_mesh) = 0;
895 
901  public: virtual MeshPtr CreateMesh(const MeshDescriptor &_desc) = 0;
902 
905  public: virtual GridPtr CreateGrid() = 0;
906 
909  public: virtual WireBoxPtr CreateWireBox() = 0;
910 
913  public: virtual MarkerPtr CreateMarker() = 0;
914 
918  public: virtual LidarVisualPtr CreateLidarVisual() = 0;
919 
925  public: virtual LidarVisualPtr CreateLidarVisual(unsigned int _id) = 0;
926 
932  public: virtual LidarVisualPtr CreateLidarVisual(
933  const std::string &_name) = 0;
934 
940  public: virtual LidarVisualPtr CreateLidarVisual(
941  unsigned int _id, const std::string &_name) = 0;
942 
947  public: virtual HeightmapPtr CreateHeightmap(
948  const HeightmapDescriptor &_desc) = 0;
949 
952  public: virtual TextPtr CreateText() = 0;
953 
958  public: virtual MaterialPtr CreateMaterial(const std::string &_name = "")
959  = 0;
960 
964  public: virtual MaterialPtr CreateMaterial(
965  const common::Material &_material) = 0;
966 
969  public: virtual RenderTexturePtr CreateRenderTexture() = 0;
970 
975  public: virtual RenderWindowPtr CreateRenderWindow() = 0;
976 
979  public: virtual RayQueryPtr CreateRayQuery() = 0;
980 
984  public: virtual ParticleEmitterPtr CreateParticleEmitter() = 0;
985 
991  public: virtual ParticleEmitterPtr CreateParticleEmitter(
992  unsigned int _id) = 0;
993 
999  public: virtual ParticleEmitterPtr CreateParticleEmitter(
1000  const std::string &_name) = 0;
1001 
1007  public: virtual ParticleEmitterPtr CreateParticleEmitter(
1008  unsigned int _id, const std::string &_name) = 0;
1009 
1012  public: virtual void SetSkyEnabled(bool _enabled) = 0;
1013 
1016  public: virtual bool SkyEnabled() const = 0;
1017 
1020  public: virtual void PreRender() = 0;
1021 
1025  public: virtual void Clear() = 0;
1026 
1030  public: virtual void Destroy() = 0;
1031  };
1032  }
1033  }
1034 }
1035 #endif
Describes how a Mesh should be loaded.
Definition: MeshDescriptor.hh:44
STL class.
Manages a single scene-graph. This class updates scene-wide properties and holds the root scene node...
Definition: Scene.hh:49
Describes how a Heightmap should be loaded.
Definition: HeightmapDescriptor.hh:146
STL class.
An abstract interface to a concrete render-engine. A RenderEngine is responsible for initializing a r...
Definition: RenderEngine.hh:36
virtual ~Scene()
Destructor.
Definition: Scene.hh:52
Represents a surface material of a Geometry.
Definition: Material.hh:47