Gazebo Rendering

API Reference

6.6.4
gz/rendering/ogre2/Ogre2DepthCamera.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 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 GZ_RENDERING_OGRE2_OGRE2DEPTHCAMERA_HH_
19 #define GZ_RENDERING_OGRE2_OGRE2DEPTHCAMERA_HH_
20 
21 #ifdef _WIN32
22  // Ensure that Winsock2.h is included before Windows.h, which can get
23  // pulled in by anybody (e.g., Boost).
24  #include <Winsock2.h>
25 #endif
26 
27 #include <memory>
28 #include <string>
29 
32 
33 #include "gz/common/Event.hh"
34 #include "gz/common/Console.hh"
35 
36 namespace Ogre
37 {
38  class Material;
39  class RenderTarget;
40  class Texture;
41  class Viewport;
42 }
43 
44 namespace ignition
45 {
46  namespace rendering
47  {
48  inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
49  //
50  // Forward declaration
51  class Ogre2DepthCameraPrivate;
52 
54  class IGNITION_RENDERING_OGRE2_VISIBLE Ogre2DepthCamera :
55  public BaseDepthCamera<Ogre2Sensor>
56  {
58  protected: Ogre2DepthCamera();
59 
61  public: virtual ~Ogre2DepthCamera();
62 
64  public: virtual void Init() override;
65 
66  // Documentation inherited
67  public: virtual void Destroy() override;
68 
70  public: virtual void CreateRenderTexture();
71 
74  public: virtual void CreateDepthTexture() override;
75 
78  private: void CreateWorkspaceInstance();
79 
80  // Documentation inherited
81  public: virtual void PreRender() override;
82 
84  public: virtual void PostRender() override;
85 
88  public: virtual const float *DepthData() const override;
89 
93  public: virtual gz::common::ConnectionPtr ConnectNewDepthFrame(
94  std::function<void(const float *, unsigned int, unsigned int,
95  unsigned int, const std::string &)> _subscriber) override;
96 
100  public: virtual gz::common::ConnectionPtr ConnectNewRgbPointCloud(
101  std::function<void(const float *, unsigned int, unsigned int,
102  unsigned int, const std::string &)> _subscriber) override;
103 
105  public: virtual void Render() override;
106 
109  public: virtual void SetFarClipPlane(const double _far) override;
110 
113  public: virtual void SetNearClipPlane(const double _near) override;
114 
118  public: double NearClipPlane() const override;
119 
123  public: double FarClipPlane() const override;
124 
125  // Documentation inherited.
126  public: void SetShadowsDirty() override;
127 
128  // Documentation inherited.
129  public: void AddRenderPass(const RenderPassPtr &_pass) override;
130 
133  protected: virtual RenderTargetPtr RenderTarget() const override;
134 
139  protected: static double LimitFOV(const double _fov);
140 
142  protected: void CreateCamera();
143 
149  private: void SetShadowsNodeDefDirty();
150 
152  protected: Ogre::Camera *ogreCamera;
153 
157 
158  private: friend class Ogre2Scene;
159  };
160  }
161  }
162 }
163 #endif
Definition: gz/rendering/base/BaseDepthCamera.hh:37
Depth camera used to render depth data into an image buffer.
Definition: gz/rendering/ogre2/Ogre2DepthCamera.hh:56
virtual const float * DepthData() const override
All things needed to get back z buffer for depth data.
void AddRenderPass(const RenderPassPtr &_pass) override
Add a render pass to the camera.
double FarClipPlane() const override
Get the far clip distance.
virtual RenderTargetPtr RenderTarget() const override
Get a pointer to the render target.
virtual void PreRender() override
Prepare this object and any of its children for rendering. This should be called for each object in a...
double NearClipPlane() const override
Get the near clip distance.
virtual void SetFarClipPlane(const double _far) override
Set the far clip distance.
virtual gz::common::ConnectionPtr ConnectNewDepthFrame(std::function< void(const float *, unsigned int, unsigned int, unsigned int, const std::string &)> _subscriber) override
Connect a to the new depth image signal.
virtual void PostRender() override
Render the camera.
Ogre::Camera * ogreCamera
Pointer to the ogre camera.
Definition: gz/rendering/ogre2/Ogre2DepthCamera.hh:152
static double LimitFOV(const double _fov)
Limit field of view taking care of using a valid value for an OGRE camera.
virtual void Destroy() override
Destroy any resources associated with this object. Invoking any other functions after destroying an o...
virtual gz::common::ConnectionPtr ConnectNewRgbPointCloud(std::function< void(const float *, unsigned int, unsigned int, unsigned int, const std::string &)> _subscriber) override
Connect a to the new rgb point cloud signal.
void CreateCamera()
Create the camera.
virtual ~Ogre2DepthCamera()
Destructor.
virtual void CreateDepthTexture() override
Create a texture which will hold the depth data.
virtual void Init() override
Initialize the camera.
virtual void SetNearClipPlane(const double _near) override
Set the near clip distance.
virtual void Render() override
Implementation of the render call.
virtual void CreateRenderTexture()
Create dummy render texture. Needed to satisfy inheritance.
Ogre2.x implementation of the scene class.
Definition: gz/rendering/ogre2/Ogre2Scene.hh:59
Definition: gz/rendering/ogre/OgreCamera.hh:28