22 #ifndef _RENDERING_CAMERA_HH_
23 #define _RENDERING_CAMERA_HH_
25 #include <boost/enable_shared_from_this.hpp>
40 #include "msgs/MessageTypes.hh"
53 class CompositorInstance;
65 class GaussianNoiseCompositorListener;
75 class Camera :
public boost::enable_shared_from_this<Camera>
82 bool _autoRender =
true);
92 public:
virtual void Load();
95 public:
virtual void Init();
121 public:
virtual void Update();
126 public:
virtual void Fini();
205 public:
void SetImageSize(
unsigned int _w,
unsigned int _h);
249 unsigned int _height,
250 const std::string &_format);
257 public:
double GetZValue(
int _x,
int _y);
278 public:
bool SaveFrame(
const std::string &_filename);
337 public:
virtual const unsigned char *
GetImageData(
unsigned int i = 0);
341 public: std::string
GetName()
const;
345 public:
void SetName(
const std::string &_name);
402 bool _inheritOrientation,
403 double _minDist = 0.0,
double _maxDist = 0.0);
407 public:
void TrackVisual(
const std::string &_visualName);
421 public:
template<
typename T>
438 public:
static bool SaveFrame(
const unsigned char *_image,
439 unsigned int _width,
unsigned int _height,
int _depth,
440 const std::string &_format,
441 const std::string &_filename);
458 public:
bool IsVisible(
const std::string &_visualName);
479 boost::function<
void()> _onComplete =
NULL);
508 bool _inheritOrientation,
509 double _minDist = 0,
double _maxDist = 0);
521 bool _inheritOrientation,
522 double _minDist = 0,
double _maxDist = 0);
539 private:
void ConvertRGBToBAYER(
unsigned char *_dst,
unsigned char *_src,
540 std::string _format,
int _width,
int _height);
543 private:
void SetClipDist();
548 private:
static int GetOgrePixelFormat(
const std::string &_format);
552 private:
void CreateCamera();
625 unsigned int,
unsigned int,
unsigned int,
653 private:
static unsigned int cameraCounter;
656 private: Ogre::CompositorInstance *dsGBufferInstance;
659 private: Ogre::CompositorInstance *dsMergeInstance;
662 private: Ogre::CompositorInstance *dlGBufferInstance;
665 private: Ogre::CompositorInstance *dlMergeInstance;
668 private: Ogre::CompositorInstance *ssaoInstance;
671 private: Ogre::CompositorInstance *gaussianNoiseInstance;
674 private: boost::shared_ptr<GaussianNoiseCompositorListener>
675 gaussianNoiseCompositorListener;
678 private: std::deque<std::pair<math::Pose, double> > moveToPositionQueue;
684 private:
enum NoiseModelType
692 private:
bool noiseActive;
695 private:
enum NoiseModelType noiseType;
699 private:
double noiseMean;
703 private:
double noiseStdDev;