17 #ifndef _GAZEBO_MESH_HH_
18 #define _GAZEBO_MESH_HH_
23 #include <ignition/math/Vector3.hh>
24 #include <ignition/math/Vector2.hh>
44 class GZ_COMMON_VISIBLE
Mesh
50 public:
virtual ~
Mesh();
54 public:
void SetPath(
const std::string &_path);
58 public: std::string GetPath()
const;
62 public:
void SetName(
const std::string &_n);
66 public: std::string GetName()
const;
70 public: ignition::math::Vector3d Max()
const;
74 public: ignition::math::Vector3d Min()
const;
78 public:
unsigned int GetVertexCount()
const;
82 public:
unsigned int GetNormalCount()
const;
86 public:
unsigned int GetIndexCount()
const;
90 public:
unsigned int GetTexCoordCount()
const;
95 public:
void AddSubMesh(
SubMesh *_child);
99 public:
unsigned int GetSubMeshCount()
const;
104 public:
int AddMaterial(
Material *_mat);
108 public:
unsigned int GetMaterialCount()
const;
113 public:
const Material *GetMaterial(
int _index)
const;
118 public:
int GetMaterialIndex(
const Material *_mat)
const;
124 public:
const SubMesh *GetSubMesh(
unsigned int _i)
const;
129 public:
const SubMesh *GetSubMesh(
const std::string &_name)
const;
134 public:
void FillArrays(
float **_vertArr,
int **_indArr)
const;
138 public:
void RecalculateNormals();
144 public:
void GetAABB(ignition::math::Vector3d &_center,
145 ignition::math::Vector3d &_minXYZ,
146 ignition::math::Vector3d &_maxXYZ)
const;
151 public:
void GenSphericalTexCoord(
152 const ignition::math::Vector3d &_center);
156 public:
Skeleton* GetSkeleton()
const;
159 public:
void SetSkeleton(
Skeleton *_skel);
162 public:
bool HasSkeleton()
const;
166 public:
void Scale(
double _factor);
170 public:
void SetScale(
const ignition::math::Vector3d &_factor);
175 public:
void Center(
const ignition::math::Vector3d &_center =
176 ignition::math::Vector3d::Zero);
180 public:
void Translate(
const ignition::math::Vector3d &_vec);
183 private: std::string name;
186 private: std::string path;
189 private: std::vector<SubMesh *> submeshes;
192 private: std::vector<Material *> materials;
233 public:
void SetName(
const std::string &_n);
237 public: std::string GetName()
const;
241 public:
void SetPrimitiveType(PrimitiveType _type);
245 public: PrimitiveType GetPrimitiveType()
const;
249 public:
void CopyVertices(
250 const std::vector<ignition::math::Vector3d> &_verts);
254 public:
void CopyNormals(
255 const std::vector<ignition::math::Vector3d> &_norms);
259 public:
void SetVertexCount(
unsigned int _count);
263 public:
void SetIndexCount(
unsigned int _count);
267 public:
void SetNormalCount(
unsigned int _count);
271 public:
void SetTexCoordCount(
unsigned int _count);
275 public:
void AddIndex(
unsigned int _i);
279 public:
void AddVertex(
const ignition::math::Vector3d &_v);
285 public:
void AddVertex(
double _x,
double _y,
double _z);
289 public:
void AddNormal(
const ignition::math::Vector3d &_n);
295 public:
void AddNormal(
double _x,
double _y,
double _z);
300 public:
void AddTexCoord(
double _u,
double _v);
306 public:
void AddNodeAssignment(
unsigned int _vertex,
unsigned int _node,
312 public: ignition::math::Vector3d Vertex(
unsigned int _i)
const;
317 public:
void SetVertex(
unsigned int _i,
318 const ignition::math::Vector3d &_v);
323 public: ignition::math::Vector3d Normal(
unsigned int _i)
const;
328 public:
void SetNormal(
unsigned int _i,
329 const ignition::math::Vector3d &_n);
334 public: ignition::math::Vector2d TexCoord(
unsigned int _i)
const;
343 public:
void SetTexCoord(
unsigned int _i,
344 const ignition::math::Vector2d &_t);
348 public:
unsigned int GetIndex(
unsigned int _i)
const;
352 public: ignition::math::Vector3d Max()
const;
356 public: ignition::math::Vector3d Min()
const;
359 public:
unsigned int GetVertexCount()
const;
362 public:
unsigned int GetNormalCount()
const;
365 public:
unsigned int GetIndexCount()
const;
368 public:
unsigned int GetTexCoordCount()
const;
371 public:
unsigned int GetNodeAssignmentsCount()
const;
374 public:
unsigned int GetMaxIndex()
const;
379 public:
void SetMaterialIndex(
unsigned int _index);
382 public:
unsigned int GetMaterialIndex()
const;
387 public:
bool HasVertex(
const ignition::math::Vector3d &_v)
const;
392 public:
unsigned int GetVertexIndex(
393 const ignition::math::Vector3d &_v)
const;
398 public:
void FillArrays(
float **_vertArr,
int **_indArr)
const;
401 public:
void RecalculateNormals();
406 public:
void GenSphericalTexCoord(
407 const ignition::math::Vector3d &_center);
411 public:
void Scale(
double _factor);
416 public:
void Center(
const ignition::math::Vector3d &_center =
417 ignition::math::Vector3d::Zero);
421 public:
void Translate(
const ignition::math::Vector3d &_vec);
425 public:
void SetScale(
const ignition::math::Vector3d &_factor);
428 private: std::vector<ignition::math::Vector3d> vertices;
431 private: std::vector<ignition::math::Vector3d> normals;
434 private: std::vector<ignition::math::Vector2d> texCoords;
437 private: std::vector<unsigned int> indices;
440 private: std::vector<NodeAssignment> nodeAssignments;
443 private: PrimitiveType primitiveType;
447 private:
int materialIndex;
450 private: std::string name;
A 3D mesh.
Definition: Mesh.hh:44
PrimitiveType
An enumeration of the geometric mesh primitives.
Definition: Mesh.hh:219
A skeleton.
Definition: Skeleton.hh:53
Encapsulates description of a material.
Definition: common/Material.hh:34
A child mesh.
Definition: Mesh.hh:216
float weight
the weight (between 0 and 1)
Definition: Mesh.hh:212
unsigned int nodeIndex
node (or bone) index
Definition: Mesh.hh:209
Vertex to node weighted assignement for skeleton animation visualization.
Definition: Mesh.hh:200
unsigned int vertexIndex
index of the vertex
Definition: Mesh.hh:206