17 #ifndef GZ_RENDERING_BASE_BASESCENE_HH_
18 #define GZ_RENDERING_BASE_BASESCENE_HH_
24 #include <gz/common/Console.hh>
25 #include <gz/common/SuppressWarning.hh>
35 inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
47 public:
virtual void Load()
override;
49 public:
virtual void Init()
override;
51 public:
virtual void Fini()
override;
57 public:
virtual unsigned int Id()
const override;
61 public:
virtual void IGN_DEPRECATED(4)
62 SetSimTime(const common::Time &_time) override;
64 public: virtual common::Time IGN_DEPRECATED(4) SimTime() const override;
66 public: virtual
std::chrono::steady_clock::duration Time()
69 public: virtual
void SetTime(
70 const
std::chrono::steady_clock::duration &_time) override;
72 public: virtual
void SetAmbientLight(
double _r,
double _g,
double _b,
73 double _a = 1.0) override;
75 public: virtual
void SetAmbientLight(const math::Color &_color)
78 public: virtual math::Color BackgroundColor() const override;
80 public: virtual
void SetBackgroundColor(
double _r,
double _g,
double _b,
81 double _a = 1.0) override;
83 public: virtual
void SetBackgroundColor(const math::Color &_color)
87 public: virtual
bool IsGradientBackgroundColor() const override;
90 public: virtual
std::array<math::Color, 4> GradientBackgroundColor()
94 public: virtual
void SetGradientBackgroundColor(
95 const
std::array<math::Color, 4> &_colors) override;
98 public: virtual
void RemoveGradientBackgroundColor() override;
107 public: virtual
unsigned int NodeCount() const override;
111 public: virtual
bool HasNodeId(
unsigned int _id) const override;
113 public: virtual
bool HasNodeName(const
std::
string &_name) const override;
115 public: virtual
NodePtr NodeById(
unsigned int _id) const override;
117 public: virtual
NodePtr NodeByName(const
std::
string &_name) const
120 public: virtual
NodePtr NodeByIndex(
unsigned int _index) const override;
123 public: virtual
void DestroyNode(
NodePtr _node,
bool _recursive = false)
126 public: virtual
void DestroyNodeById(
unsigned int _id) override;
128 public: virtual
void DestroyNodeByName(const
std::
string &_name) override;
130 public: virtual
void DestroyNodeByIndex(
unsigned int _index) override;
132 public: virtual
void DestroyNodes() override;
134 public: virtual
unsigned int LightCount() const override;
138 public: virtual
bool HasLightId(
unsigned int _id) const override;
140 public: virtual
bool HasLightName(const
std::
string &_name) const
143 public: virtual
LightPtr LightById(
unsigned int _id) const override;
145 public: virtual
LightPtr LightByName(const
std::
string &_name) const
148 public: virtual
LightPtr LightByIndex(
unsigned int _index) const override;
152 bool _recursive = false) override;
154 public: virtual
void DestroyLightById(
unsigned int _id) override;
156 public: virtual
void DestroyLightByName(const
std::
string &_name)
159 public: virtual
void DestroyLightByIndex(
unsigned int _index) override;
161 public: virtual
void DestroyLights() override;
163 public: virtual
unsigned int SensorCount() const override;
167 public: virtual
bool HasSensorId(
unsigned int _id) const override;
169 public: virtual
bool HasSensorName(const
std::
string &_name) const
172 public: virtual
SensorPtr SensorById(
unsigned int _id) const override;
177 public: virtual
SensorPtr SensorByIndex(
unsigned int _index) const
182 bool _recursive = false) override;
184 public: virtual
void DestroySensorById(
unsigned int _id) override;
186 public: virtual
void DestroySensorByName(const
std::
string &_name)
189 public: virtual
void DestroySensorByIndex(
unsigned int _index) override;
191 public: virtual
void DestroySensors() override;
193 public: virtual
unsigned int VisualCount() const override;
197 public: virtual
bool HasVisualId(
unsigned int _id) const override;
199 public: virtual
bool HasVisualName(const
std::
string &_name) const
202 public: virtual
VisualPtr VisualById(
unsigned int _id) const override;
207 public: virtual
VisualPtr VisualByIndex(
unsigned int _index) const
212 const gz::math::
Vector2i &_mousePos) override;
216 bool _recursive = false) override;
218 public: virtual
void DestroyVisualById(
unsigned int _id) override;
220 public: virtual
void DestroyVisualByName(const
std::
string &_name)
223 public: virtual
void DestroyVisualByIndex(
unsigned int _index) override;
225 public: virtual
void DestroyVisuals() override;
227 public: virtual
bool MaterialRegistered(const
std::
string &_name) const
233 public: virtual
void RegisterMaterial(const
std::
string &_name,
236 public: virtual
void UnregisterMaterial(const
std::
string &_name)
239 public: virtual
void UnregisterMaterials() override;
242 public: virtual
void DestroyMaterial(
MaterialPtr _material) override;
245 public: virtual
void DestroyMaterials() override;
250 unsigned int _id) override;
253 const
std::
string &_name) override;
256 unsigned int _id, const
std::
string &_name) override;
266 const
std::
string &_name) override;
273 const
std::
string &_name) = 0;
280 unsigned int _id, const
std::
string &_name) = 0;
287 const
std::
string &_name) = 0;
294 const
std::
string &_name) = 0;
298 public: virtual
SpotLightPtr CreateSpotLight(
unsigned int _id) override;
304 const
std::
string &_name) override;
308 public: virtual
CameraPtr CreateCamera(
unsigned int _id) override;
310 public: virtual
CameraPtr CreateCamera(const
std::
string &_name) override;
312 public: virtual
CameraPtr CreateCamera(
unsigned int _id,
313 const
std::
string &_name) override;
321 const
std::
string &_name) override;
324 const
std::
string &_name) override;
331 const
unsigned int _id) override;
335 const
std::
string &_name) override;
339 const
unsigned int _id, const
std::
string &_name) override;
346 const
unsigned int _id) override;
350 const
std::
string &_name) override;
354 const
unsigned int _id, const
std::
string &_name) override;
361 const
unsigned int _id) override;
365 const
std::
string &_name) override;
369 const
unsigned int _id, const
std::
string &_name) override;
375 public: virtual
GpuRaysPtr CreateGpuRays(const
unsigned int _id) override;
379 const
std::
string &_name) override;
382 public: virtual
GpuRaysPtr CreateGpuRays(const
unsigned int _id,
383 const
std::
string &_name) override;
387 public: virtual
VisualPtr CreateVisual(
unsigned int _id) override;
389 public: virtual
VisualPtr CreateVisual(const
std::
string &_name) override;
391 public: virtual
VisualPtr CreateVisual(
unsigned int _id,
392 const
std::
string &_name) override;
400 const
std::
string &_name) override;
403 const
std::
string &_name) override;
413 const
std::
string &_name) override;
428 const
std::
string &_name) override;
438 const
std::
string &_name) override;
442 const
std::
string &_name) override;
453 const
std::
string &_name) override;
457 const
std::
string &_name) override;
472 const
std::
string &_name) override;
487 const
std::
string &_name) override;
500 public: virtual
MeshPtr CreateMesh(const
std::
string &_meshName) override;
502 public: virtual
MeshPtr CreateMesh(const common::
Mesh *_mesh) override;
510 public: virtual
GridPtr CreateGrid() override;
520 unsigned int _id) override;
524 const
std::
string &_name) override;
528 const
std::
string &_name) override;
538 public: virtual
TextPtr CreateText() override;
544 const common::
Material &_material) override;
562 const
std::
string &_name) override;
566 unsigned int _id, const
std::
string &_name) override;
569 public: virtual
void SetSkyEnabled(
bool _enabled) override;
572 public: virtual
bool SkyEnabled() const override;
574 public: virtual
void PreRender() override;
576 public: virtual
void Clear() override;
578 public: virtual
void Destroy() override;
581 public: virtual
void PostRender() override;
584 public: virtual
void SetCameraPassCountPerGpuFlush(
585 uint8_t _numPass) override;
588 public: virtual uint8_t CameraPassCountPerGpuFlush() const override;
591 public: virtual
bool LegacyAutoGpuFlush() const override;
593 protected: virtual
unsigned int CreateObjectId();
595 protected: virtual
std::
string CreateObjectName(
unsigned int _id,
596 const
std::
string &_prefix);
598 protected: virtual
bool RegisterLight(
LightPtr _light);
600 protected: virtual
bool RegisterSensor(
SensorPtr _vensor);
602 protected: virtual
bool RegisterVisual(
VisualPtr _visual);
605 unsigned int _id, const
std::
string &_name) = 0;
608 const
std::
string &_name) = 0;
611 const
std::
string &_name) = 0;
613 protected: virtual
CameraPtr CreateCameraImpl(
unsigned int _id,
614 const
std::
string &_name) = 0;
617 const
std::
string &_name) = 0;
623 unsigned int _id, const
std::
string &_name)
628 ignerr <<
"Thermal camera not supported by: "
643 ignerr <<
"BoundingBox camera not supported by: "
659 ignerr <<
"Segmentation camera not supported by: "
672 ignerr <<
"GpuRays not supported by: "
694 ignerr <<
"GizmoVisual not supported by: "
795 ignerr <<
"ParticleEmitter not supported by: "
812 private:
virtual void CreateNodeStore();
814 private:
virtual void CreateMaterials();
821 private:
void DestroyNodeRecursive(
NodePtr _node,
824 protected:
unsigned int id;
832 protected:
std::chrono::steady_clock::duration time =
833 std::chrono::steady_clock::duration::zero();
835 protected:
bool loaded;
837 protected:
bool initialized;
840 protected: math::Color backgroundColor;
849 protected:
std::array<math::Color, 4> gradientBackgroundColor;
852 protected:
bool isGradientBackgroundColor = false;
857 private:
unsigned int nextObjectId;
859 IGN_COMMON_WARN_IGNORE__DLL_INTERFACE_MISSING
861 IGN_COMMON_WARN_RESUME__DLL_INTERFACE_MISSING
Definition: gz/rendering/base/BaseScene.hh:42
virtual bool IsInitialized() const override
virtual RenderWindowPtr CreateRenderWindowImpl(unsigned int _id, const std::string &_name)=0
Render engine specific implementation for creating a render window.
virtual bool IsLoaded() const
virtual GpuRaysPtr CreateGpuRaysImpl(unsigned int _id, const std::string &_name)
Implementation for creating GpuRays sensor.
Definition: gz/rendering/base/BaseScene.hh:667
virtual LightStorePtr Lights() const =0
BaseScene(unsigned int _id, const std::string &_name)
virtual ArrowVisualPtr CreateArrowVisualImpl(unsigned int _id, const std::string &_name)=0
virtual bool LoadImpl()=0
virtual MeshPtr CreateMeshImpl(unsigned int _id, const std::string &_name, const MeshDescriptor &_desc)=0
virtual MarkerPtr CreateMarkerImpl(unsigned int _id, const std::string &_name)=0
Implementation for creating a marker geometry object.
virtual AxisVisualPtr CreateAxisVisualImpl(unsigned int _id, const std::string &_name)=0
virtual GeometryPtr CreateBoxImpl(unsigned int _id, const std::string &_name)=0
virtual MaterialPtr CreateMaterialImpl(unsigned int _id, const std::string &_name)=0
virtual ParticleEmitterPtr CreateParticleEmitterImpl(unsigned int _id, const std::string &_name)
Implementation for creating a ParticleEmitter.
Definition: gz/rendering/base/BaseScene.hh:790
virtual TextPtr CreateTextImpl(unsigned int _id, const std::string &_name)
Implementation for creating a text's geometry object.
virtual HeightmapPtr CreateHeightmapImpl(unsigned int _id, const std::string &_name, const HeightmapDescriptor &_desc)=0
Implementation for creating a heightmap geometry.
virtual std::string Name() const override
virtual GizmoVisualPtr CreateGizmoVisualImpl(unsigned int _id, const std::string &_name)
Implementation for creating a GizmoVisual.
Definition: gz/rendering/base/BaseScene.hh:689
virtual SegmentationCameraPtr CreateSegmentationCameraImpl(unsigned int _id, const std::string &_name)
Implementation for creating a segmentation camera.
Definition: gz/rendering/base/BaseScene.hh:652
virtual BoundingBoxCameraPtr CreateBoundingBoxCameraImpl(unsigned int _id, const std::string &_name)
Implementation for creating a BoundingBox camera.
Definition: gz/rendering/base/BaseScene.hh:637
virtual CapsulePtr CreateCapsuleImpl(unsigned int _id, const std::string &_name)=0
Implementation for creating a capsule geometry object.
virtual unsigned int Id() const override
std::string name
Definition: gz/rendering/base/BaseScene.hh:827
virtual RayQueryPtr CreateRayQueryImpl(unsigned int _id, const std::string &_name)=0
virtual bool InitImpl()=0
virtual LidarVisualPtr CreateLidarVisualImpl(unsigned int _id, const std::string &_name)=0
Implementation for creating a lidar visual.
virtual GridPtr CreateGridImpl(unsigned int _id, const std::string &_name)=0
Implementation for creating a grid geometry object.
virtual void Fini() override
unsigned int id
Definition: gz/rendering/base/BaseScene.hh:824
virtual RenderTexturePtr CreateRenderTextureImpl(unsigned int _id, const std::string &_name)=0
virtual MaterialMapPtr Materials() const =0
virtual GeometryPtr CreatePlaneImpl(unsigned int _id, const std::string &_name)=0
virtual SensorStorePtr Sensors() const =0
virtual GeometryPtr CreateConeImpl(unsigned int _id, const std::string &_name)=0
virtual GeometryPtr CreateCylinderImpl(unsigned int _id, const std::string &_name)=0
virtual GeometryPtr CreateSphereImpl(unsigned int _id, const std::string &_name)=0
virtual WireBoxPtr CreateWireBoxImpl(unsigned int _id, const std::string &_name)=0
Implementation for creating a wire box geometry.
virtual void Init() override
virtual void Load() override
virtual VisualStorePtr Visuals() const =0
virtual VisualPtr CreateVisualImpl(unsigned int _id, const std::string &_name)=0
Describes how a Heightmap should be loaded.
Definition: gz/rendering/HeightmapDescriptor.hh:147
Represents a surface material of a Geometry.
Definition: gz/rendering/Material.hh:49
Represents a collection of mesh geometries.
Definition: gz/rendering/Mesh.hh:39
Manages a single scene-graph. This class updates scene-wide properties and holds the root scene node....
Definition: gz/rendering/Scene.hh:50
#define IGN_COMMON_WARN_IGNORE__DLL_INTERFACE_MISSING
#define IGN_COMMON_WARN_RESUME__DLL_INTERFACE_MISSING
shared_ptr< BoundingBoxCamera > BoundingBoxCameraPtr
Shared pointer to BoundingBoxCamera.
Definition: gz/rendering/RenderTypes.hh:119
shared_ptr< ParticleEmitter > ParticleEmitterPtr
Shared pointer to ParticleEmitter.
Definition: gz/rendering/RenderTypes.hh:215
shared_ptr< GpuRays > GpuRaysPtr
Shared pointer to GpuRays.
Definition: gz/rendering/RenderTypes.hh:127
shared_ptr< ThermalCamera > ThermalCameraPtr
Shared pointer to ThermalCamera.
Definition: gz/rendering/RenderTypes.hh:115
shared_ptr< SegmentationCamera > SegmentationCameraPtr
Shared pointer to Segmentation Camera.
Definition: gz/rendering/RenderTypes.hh:123
shared_ptr< GizmoVisual > GizmoVisualPtr
Shared pointer to GizmoVisual.
Definition: gz/rendering/RenderTypes.hh:147
Describes how a Mesh should be loaded.
Definition: gz/rendering/MeshDescriptor.hh:45