\r
IMesh::IMesh(const aiMesh* _mesh, const vec3& _scale) : modelpath("IMesh")\r
{\r
- loadMesh(_mesh, numvertices, numfaces, vertex, uvs, normals, index, name, _scale);\r
+ loadMesh(_mesh, _scale);\r
\r
//bindModel();\r
\r
//}\r
\r
\r
-bool Model::loadMesh(const string& _modelpath, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index, string& name, uint _mindex)\r
+bool Model::loadMesh(const string& _modelpath, uint _mindex)\r
{\r
Assimp::Importer importer;\r
\r
return false;\r
}\r
\r
- return loadMesh(scene->mMeshes[_mindex], numvertices, numfaces, vertex, uvs, normals, index, name);\r
+ return loadMesh(scene->mMeshes[_mindex]);\r
}\r
\r
-bool Model::loadMesh(const aiMesh* mesh, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index, string& name, const vec3& _scale)\r
+bool Model::loadMesh(const aiMesh* mesh, const vec3& _scale)\r
{\r
\r
name = std::string((char*) (mesh->mName.data),(uint) (mesh->mName.length));\r
}\r
\r
//load normals from Mesh\r
- if (mesh->mNormals != NULL)\r
+ if (mesh->mNormals != NULL) //TODO Normals may be wrong\r
{\r
+ vec3 tmp;\r
normals = new float[numvertices * 3];\r
for (uint i = 0; i < numvertices; i++)\r
{\r
- normals[3 * i] = mesh->mNormals[i].x;// / _scale.x;\r
- normals[3 * i + 1] = mesh->mNormals[i].y;// / _scale.y;\r
- normals[3 * i + 2] = mesh->mNormals[i].z;// / _scale.z;\r
+ tmp = vec3(mesh->mNormals[i].x / _scale.x, mesh->mNormals[i].y / _scale.y, mesh->mNormals[i].z / _scale.z);\r
+ tmp = normalize(tmp);\r
+ \r
+ normals[3 * i] = tmp.x;\r
+ normals[3 * i + 1] = tmp.y;\r
+ normals[3 * i + 2] = tmp.z;\r
+ \r
}\r
\r
}\r
virtual void bt_setMargin(btScalar margin);\r
\r
// Mesh Speichern?\r
- static bool loadMesh(const std::string& modelpath, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index, std::string& name, uint mindex = 0);\r
- static bool loadMesh(const aiMesh* mesh, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index, std::string& name, const vec3& scale = vec3(1.f));\r
+ bool loadMesh(const std::string& modelpath, uint mindex = 0);\r
+ bool loadMesh(const aiMesh* mesh, const vec3& scale = vec3(1.f));\r
\r
protected:\r
Model();\r
float *vertex = nullptr, *normals = nullptr, *uvs = nullptr;\r
uint *index = nullptr;\r
\r
+ vec3 center;\r
+ float radius;\r
+\r
std::unordered_map<uint, uint> shader_map;\r
\r
\r