17#ifndef _GAZEBO_MESHMANAGER_HH_
18#define _GAZEBO_MESHMANAGER_HH_
24#include <boost/thread/mutex.hpp>
26#include <ignition/math/Plane.hh>
27#include <ignition/math/Matrix3.hh>
28#include <ignition/math/Matrix4.hh>
29#include <ignition/math/Vector2.hh>
43 class ColladaExporter;
68 public:
const Mesh *
Load(
const std::string &_filename);
76 public:
void Export(
const Mesh *_mesh,
const std::string &_filename,
77 const std::string &_extension,
bool _exportTextures =
false);
89 ignition::math::Vector3d &_center,
90 ignition::math::Vector3d &_min_xyz,
91 ignition::math::Vector3d &_max_xyz);
97 const ignition::math::Vector3d &_center);
113 public:
bool HasMesh(
const std::string &_name)
const;
121 int _rings,
int _segments);
128 const ignition::math::Vector3d &_sides,
129 const ignition::math::Vector2d &_uvCoords);
144 const std::vector<std::vector<ignition::math::Vector2d> >
145 &_vertices,
double _height);
188 double _arc = 2.0 * M_PI);
196 const ignition::math::Planed &_plane,
197 const ignition::math::Vector2d &_segments,
198 const ignition::math::Vector2d &_uvTile);
208 const ignition::math::Vector3d &_normal,
210 const ignition::math::Vector2d &_size,
211 const ignition::math::Vector2d &_segments,
212 const ignition::math::Vector2d &_uvTile);
221 private:
void Tesselate2DMesh(
SubMesh *_sm,
238 public:
void CreateBoolean(
const std::string &_name,
const Mesh *_m1,
239 const Mesh *_m2,
const int _operation,
240 const ignition::math::Pose3d &_offset = ignition::math::Pose3d::Zero);
250 private:
static void ConvertPolylinesToVerticesAndEdges(
251 const std::vector<std::vector<ignition::math::Vector2d> >
254 std::vector<ignition::math::Vector2d> &_vertices,
255 std::vector<ignition::math::Vector2i> &_edges);
264 private:
static size_t AddUniquePointToVerticesTable(
265 std::vector<ignition::math::Vector2d> &_vertices,
266 const ignition::math::Vector2d &_p,
280 private: FBXLoader *fbxLoader =
nullptr;
283 private: std::map<std::string, Mesh*> meshes;
286 private: std::vector<std::string> fileExtensions;
288 private: boost::mutex mutex;
common
Definition FuelModelDatabase.hh:37
gazebo
Definition MeshManager.hh:36
common
Definition MeshManager.hh:36
Singleton template class.
Definition SingletonT.hh:34
Class used to export Collada mesh files.
Definition ColladaExporter.hh:43
Class used to load Collada mesh files.
Definition ColladaLoader.hh:47
Maintains and manages all meshes.
Definition MeshManager.hh:56
void CreateExtrudedPolyline(const std::string &_name, const std::vector< std::vector< ignition::math::Vector2d > > &_vertices, double _height)
Create an extruded mesh from polylines.
void CreateSphere(const std::string &_name, float _radius, int _rings, int _segments)
Create a sphere mesh.
void CreateCamera(const std::string &_name, float _scale)
Create a Camera mesh.
void CreatePlane(const std::string &_name, const ignition::math::Planed &_plane, const ignition::math::Vector2d &_segments, const ignition::math::Vector2d &_uvTile)
Create mesh for a plane.
void CreateCone(const std::string &_name, float _radius, float _height, int _rings, int _segments)
Create a cone mesh.
void AddMesh(Mesh *_mesh)
Add a mesh to the manager.
void CreatePlane(const std::string &_name, const ignition::math::Vector3d &_normal, const double _d, const ignition::math::Vector2d &_size, const ignition::math::Vector2d &_segments, const ignition::math::Vector2d &_uvTile)
Create mesh for a plane.
void Export(const Mesh *_mesh, const std::string &_filename, const std::string &_extension, bool _exportTextures=false)
Export a mesh to a file.
void CreateBox(const std::string &_name, const ignition::math::Vector3d &_sides, const ignition::math::Vector2d &_uvCoords)
Create a Box mesh.
void GetMeshAABB(const Mesh *_mesh, ignition::math::Vector3d &_center, ignition::math::Vector3d &_min_xyz, ignition::math::Vector3d &_max_xyz)
Get mesh aabb and center.
const Mesh * GetMesh(const std::string &_name) const
Get a mesh by name.
bool IsValidFilename(const std::string &_filename)
Checks a path extension against the list of valid extensions.
bool HasMesh(const std::string &_name) const
Return true if the mesh exists.
void CreateTube(const std::string &_name, float _innerRadius, float _outterRadius, float _height, int _rings, int _segments, double _arc=2.0 *M_PI)
Create a tube mesh.
void GenSphericalTexCoord(const Mesh *_mesh, const ignition::math::Vector3d &_center)
generate spherical texture coordinates
void CreateCylinder(const std::string &_name, float _radius, float _height, int _rings, int _segments)
Create a cylinder mesh.
const Mesh * Load(const std::string &_filename)
Load a mesh from a file.
A 3D mesh.
Definition Mesh.hh:43
Class used to load STL mesh files.
Definition STLLoader.hh:41
A child mesh.
Definition Mesh.hh:215
#define GZ_SINGLETON_DECLARE(visibility, n1, n2, singletonType)
Helper to declare typed SingletonT.
Definition SingletonT.hh:58
Forward declarations for the common classes.
Definition Animation.hh:27