10 #include <AtomsUtils/Globals.h>
11 #include <AtomsUtils/AtomsMath.h>
12 #include <AtomsUtils/Triangle.h>
29 class ATOMSUTILS_EXPORT
Mesh
42 std::vector<AtomsMath::Vector2f> uvs;
43 std::vector<unsigned int> uvIndices;
59 bool hasGrid() {
return m_grid !=
nullptr; };
62 inline std::vector<AtomsMath::Vector3f>& points();
64 inline const std::vector<AtomsMath::Vector3f>& points()
const;
67 inline std::vector<AtomsMath::Vector3f>& normals();
69 inline const std::vector<AtomsMath::Vector3f>& normals()
const;
72 inline std::vector<unsigned int>& indices();
74 inline const std::vector<unsigned int>& indices()
const;
77 inline std::vector<unsigned int>& vertexCount();
79 inline const std::vector<unsigned int>& vertexCount()
const;
82 inline std::vector<AtomsMath::Vector2f>& uvs();
84 inline const std::vector<AtomsMath::Vector2f>& uvs()
const;
87 inline unsigned int numberOfFaces()
const;
90 inline unsigned int numberOfVertices()
const;
93 inline std::vector<AtomsMath::Vector3f>& jointWeights();
96 inline const std::vector<AtomsMath::Vector3f>& jointWeights()
const;
99 inline std::vector<AtomsMath::Vector3i>& jointIndices();
102 inline const std::vector<AtomsMath::Vector3i>& jointIndices()
const;
105 inline std::vector<UVData>& uvSets();
108 inline const std::vector<UVData>& uvSets()
const;
117 virtual bool intersect(
const AtomsMath::Vector3f &orig,
const AtomsMath::Vector3f &dir,
float ¶m,
unsigned int &outFaceId,
float& outU,
float &outV,
bool bothDirection =
false)
const;
120 virtual bool closestPoint(
const AtomsMath::Vector3f& inP, AtomsMath::Vector3f& outP,
unsigned int& outFaceId,
float& outU,
float& outV,
float& sqrDistance)
const;
123 virtual bool isInside(
const AtomsMath::Vector3f& point)
const;
147 void createPlane(
const AtomsMath::Box2f& b,
const AtomsMath::Vector2i& divisions);
151 static void triangulateMesh(
const Mesh& input,
Mesh& output);
156 std::vector<AtomsMath::Vector3f> m_points;
159 std::vector<AtomsMath::Vector3f> m_normal;
162 std::vector<unsigned int> m_indices;
165 std::vector<unsigned int> m_vertexCount;
168 std::vector<AtomsMath::Vector2f> m_uvs;
171 std::vector<AtomsMath::Vector3f> m_jointWeights;
174 std::vector<AtomsMath::Vector3i> m_jointIndices;
177 std::vector<UVData> m_uvSets;
188 #include "Mesh.impl.h"