Go to the documentation of this file.
17 #ifndef GAZEBO_RENDERING_HEIGHTMAP_HH_
18 #define GAZEBO_RENDERING_HEIGHTMAP_HH_
23 #include <ignition/math/Vector3.hh>
24 #include <ignition/math/Vector2.hh>
26 #include "gazebo/msgs/MessageTypes.hh"
55 class HeightmapPrivate;
76 public:
void LoadFromMsg(ConstVisualPtr &_msg);
83 public:
double Height(
const double _x,
const double _y,
84 const double _z = 1000)
const;
96 const ignition::math::Vector2i &_mousePos,
97 const double _outsideRadius,
98 const double _insideRadius,
99 const double _weight = 0.1);
111 const ignition::math::Vector2i &_mousePos,
112 const double _outsideRadius,
113 const double _insideRadius,
114 const double _weight = 0.1);
126 const ignition::math::Vector2i &_mousePos,
127 const double _outsideRadius,
128 const double _insideRadius,
129 const double _weight = 0.1);
141 const ignition::math::Vector2i &_mousePos,
142 const double _outsideRadius,
143 const double _insideRadius,
144 const double _weight = 0.1);
149 public:
double AvgHeight(
const ignition::math::Vector3d &_pos,
150 const double _brushSize)
const;
154 public:
void SetWireframe(
const bool _show);
158 public: Ogre::TerrainGroup *OgreTerrain()
const;
169 public: Ogre::TerrainGroup::RayResult MouseHit(
CameraPtr _camera,
170 const ignition::math::Vector2i &_mousePos)
const;
176 public:
void SplitHeights(
const std::vector<float> &_heightmap,
177 const int _n, std::vector<std::vector<float> > &_v);
182 public:
unsigned int TerrainSubdivisionCount()
const;
186 public:
void SetMaterial(
const std::string &_materialName);
190 public: std::string MaterialName()
const;
199 public:
void SetLOD(
const unsigned int _value);
203 public:
unsigned int LOD()
const;
208 public:
void SetSkirtLength(
const double _value);
212 public:
double SkirtLength()
const;
216 public:
void SetCastShadows(
const bool _value);
220 public:
bool CastShadows()
const;
226 private:
void CreateMaterial();
235 private:
void ModifyTerrain(Ogre::Vector3 _pos,
236 const double _outsideRadius,
const double _insideRadius,
237 const double _weight,
const std::string &_op);
241 private:
bool InitBlendMaps(Ogre::Terrain *_terrain);
244 private:
void ConfigureTerrainDefaults();
249 private:
void DefineTerrain(
const int _x,
const int _y);
253 private:
void SetupShadows(
const bool _enabled);
262 private:
void UpdateTerrainHash(
const std::string &_hash,
263 const boost::filesystem::path &_terrainDir);
270 private:
bool PrepareTerrain(
271 const boost::filesystem::path &_terrainDirPath);
274 private:
void SaveHeightmap();
278 private: std::unique_ptr<HeightmapPrivate> dataPtr;
Ogre::TerrainGroup * OgreTerrain() const
Get a pointer to the OGRE terrain group object.
void Load()
Load the heightmap.
void SetMaterial(const std::string &_materialName)
Set custom material for the terrain.
Definition: JointMaker.hh:39
virtual ~Heightmap()
Destructor.
Ogre::TerrainGroup::RayResult MouseHit(CameraPtr _camera, const ignition::math::Vector2i &_mousePos) const
Calculate a mouse ray hit on the terrain.
Forward declarations for the common classes.
Definition: Animation.hh:26
void LoadFromMsg(ConstVisualPtr &_msg)
Load the heightmap from a visual message.
bool Smooth(CameraPtr _camera, const ignition::math::Vector2i &_mousePos, const double _outsideRadius, const double _insideRadius, const double _weight=0.1)
Smooth the terrain based on a mouse press.
Rendering a terrain using heightmap information.
Definition: Heightmap.hh:62
void SetSkirtLength(const double _value)
Set the skirt length for the heightmap LOD tiles.
common
Definition: FuelModelDatabase.hh:37
Heightmap(ScenePtr _scene)
Constructor.
Definition: JointMaker.hh:44
double Height(const double _x, const double _y, const double _z=1000) const
Get the height at a location.
bool Flatten(CameraPtr _camera, const ignition::math::Vector2i &_mousePos, const double _outsideRadius, const double _insideRadius, const double _weight=0.1)
Flatten the terrain based on a mouse press.
Encapsulates an image.
Definition: Image.hh:65
void SplitHeights(const std::vector< float > &_heightmap, const int _n, std::vector< std::vector< float > > &_v)
Split a terrain into subterrains.
boost::shared_ptr< Scene > ScenePtr
Definition: RenderTypes.hh:82
rendering
Definition: RenderEngine.hh:31
bool Raise(CameraPtr _camera, const ignition::math::Vector2i &_mousePos, const double _outsideRadius, const double _insideRadius, const double _weight=0.1)
Raise the terrain based on a mouse press.
void SetCastShadows(const bool _value)
Set the heightmap terrain to cast shadows.
common::Image Image() const
Get the heightmap as an image.
std::string MaterialName() const
Get the custom material name used for the terrain.
double AvgHeight(const ignition::math::Vector3d &_pos, const double _brushSize) const
Get the average height around a point.
void SetWireframe(const bool _show)
Set the heightmap to render in wireframe mode.
unsigned int TerrainSubdivisionCount() const
Get the number of subdivision the terrain will be split into.
double SkirtLength() const
Get the skirt length of LOD tiles.
bool CastShadows() const
Get whether the heightmap terrain casts shadows.
boost::shared_ptr< Camera > CameraPtr
Definition: RenderTypes.hh:90
bool Lower(CameraPtr _camera, const ignition::math::Vector2i &_mousePos, const double _outsideRadius, const double _insideRadius, const double _weight=0.1)
Lower the terrain based on a mouse press.
unsigned int LOD() const
Get the heightmap Level of Detail (LOD) value.
void SetLOD(const unsigned int _value)
Set the Level Of Detail (LOD) for the heightmap.