StereoCameraSensor.hh
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef STEREOCAMERASENSOR_HH
00028 #define STEREOCAMERASENSOR_HH
00029
00030 #include <OgrePrerequisites.h>
00031 #include <OgreTexture.h>
00032 #include <OgreMaterial.h>
00033
00034 #include "CameraSensor.hh"
00035
00036
00037 namespace Ogre
00038 {
00039 class RenderTarget;
00040 class Camera;
00041 class Viewport;
00042 class SceneNode;
00043 }
00044
00045 namespace gazebo
00046 {
00052
00053
00054
00058 class StereoCameraSensor : public CameraSensor
00059 {
00060
00061 enum Sides {LEFT, RIGHT, D_LEFT, D_RIGHT};
00062
00064 public: StereoCameraSensor(Body *body);
00065
00067 public: virtual ~StereoCameraSensor();
00068
00071 protected: virtual void LoadChild( XMLConfigNode *node );
00072
00074 protected: virtual void InitChild();
00075
00077 protected: virtual void UpdateChild(UpdateParams ¶ms);
00078
00080 protected: virtual void FiniChild();
00081
00083 public: virtual std::string GetMaterialName() const;
00084
00087 public: virtual const unsigned char *GetImageData(unsigned int i=0);
00088
00091 public: const float *GetDisparityData(unsigned int i=0);
00092
00094 public: double GetBaseline() const;
00095
00096
00097 protected: virtual void SaveFrame();
00098
00100 private: void FillBuffers();
00101
00102 private: Ogre::TexturePtr CreateRTT( const std::string &name, bool depth);
00103
00104
00105
00106 private: Ogre::TexturePtr renderTexture[4];
00107 private: Ogre::RenderTarget *renderTarget[4];
00108 private: Ogre::MaterialPtr depthMaterial;
00109
00110 private: std::string textureName[4];
00111 private: std::string materialName[4];
00112
00113 private: unsigned int depthBufferSize;
00114 private: unsigned int rgbBufferSize;
00115 private: float *depthBuffer[2];
00116 private: unsigned char *rgbBuffer[2];
00117 private: double baseline;
00118
00119 private: Ogre::Camera *depthCamera;
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 };
00142
00145 }
00146 #endif
00147