Ignition Rendering

API Reference

7.0.0~pre1
OgreDepthCamera.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 IGNITION_RENDERING_OGRE_OGREDEPTHCAMERA_HH_
19 #define IGNITION_RENDERING_OGRE_OGREDEPTHCAMERA_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 
40 
41 #include "ignition/common/Event.hh"
43 
44 
45 namespace Ogre
46 {
47  class Material;
48  class RenderTarget;
49  class Texture;
50  class Viewport;
51 }
52 
53 namespace ignition
54 {
55  namespace rendering
56  {
57  inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
58  //
59  // forward declaration
60  class OgreDepthCameraPrivate;
61 
65  class IGNITION_RENDERING_OGRE_VISIBLE OgreDepthCamera :
67  public virtual BaseDepthCamera<OgreSensor>,
68  public virtual OgreObjectInterface
69  {
71  protected: OgreDepthCamera();
72 
74  public: virtual ~OgreDepthCamera();
75 
77  public: virtual void Init() override;
78 
80  public: virtual void CreateDepthTexture() override;
81 
83  public: virtual void PostRender() override;
84 
87  public: virtual const float *DepthData() const override;
88 
92  public: virtual ignition::common::ConnectionPtr ConnectNewDepthFrame(
93  std::function<void(const float *, unsigned int, unsigned int,
94  unsigned int, const std::string &)> _subscriber) override;
95 
99  public: virtual ignition::common::ConnectionPtr ConnectNewRgbPointCloud(
100  std::function<void(const float *, unsigned int, unsigned int,
101  unsigned int, const std::string &)> _subscriber) override;
102 
103  // Documentation inherited.
104  public: virtual void PreRender() override;
105 
107  public: virtual void Render() override;
108 
111  public: virtual void SetFarClipPlane(const double _far) override;
112 
115  public: virtual void SetNearClipPlane(const double _near) override;
116 
120  public: double NearClipPlane() const override;
121 
125  public: double FarClipPlane() const override;
126 
127  // Documentation inherited
128  public: virtual void Destroy() override;
129 
130  // Documentation inherited.
131  public: virtual Ogre::Camera *Camera() const override;
132 
137  protected: void UpdateRenderTarget(OgreRenderTexturePtr _target,
138  Ogre::Material *_material,
139  const std::string &_matName);
140 
143  protected: virtual RenderTargetPtr RenderTarget() const override;
144 
149  protected: static double LimitFOV(const double _fov);
150 
152  protected: void CreateCamera();
153 
155  private: void CreatePointCloudTexture();
156 
158  protected: bool newData = false;
159 
160  protected: bool captureData = false;
161 
164 
166  protected: Ogre::Viewport *depthViewport = nullptr;
167 
169  protected: Ogre::Camera *ogreCamera;
170 
174 
175  private: friend class OgreScene;
176  private: friend class OgreRayQuery;
177  };
178  }
179  }
180 }
181 #endif
shared_ptr< RenderTarget > RenderTargetPtr
Shared pointer to RenderTarget.
Definition: RenderTypes.hh:230
Ogre::Camera * ogreCamera
Pointer to the ogre camera.
Definition: OgreDepthCamera.hh:169
OgreRenderTexturePtr depthTexture
Pointer to the depth texture.
Definition: OgreDepthCamera.hh:163
STL class.
A Ray Query class used for computing ray object intersections.
Definition: OgreRayQuery.hh:39
shared_ptr< OgreRenderTexture > OgreRenderTexturePtr
Definition: OgreRenderTypes.hh:115
Definition: OgreCamera.hh:28
Definition: OgreScene.hh:39