]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
MeshLoader ignoriert fehlende Normals & UV's
authorPeter Schaefer <schaeferpm@gmail.com>
Wed, 27 Apr 2016 15:38:21 +0000 (17:38 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Wed, 27 Apr 2016 15:38:21 +0000 (17:38 +0200)
Weave/Graphix/Model/Model.cpp
Weave/Scene/SceneObject.cpp

index 8289d91ab9192f17d71ad57288f2c3084d16f255..bb0db48df471ffa399ceba595c07de61a61d56bd 100644 (file)
@@ -384,14 +384,9 @@ bool Model::loadMesh(const aiMesh* mesh, uint& numvertices, uint& numfaces, floa
        name = std::string((char*) (mesh->mName.data),(uint) (mesh->mName.length));\r
        numvertices = mesh->mNumVertices;\r
        numfaces = mesh->mNumFaces;\r
-       vertex = new float[numvertices * 3];\r
-       uvs = new float[numvertices * 2];\r
-       index = new uint[numfaces * 3];\r
-       normals = new float[numvertices * 3];\r
-       //aiFace* faces = mesh->mFaces;\r
-\r
 \r
        //load vertices from Mesh\r
+       vertex = new float[numvertices * 3];\r
        for (uint i = 0; i < numvertices; i++)\r
        {\r
                vertex[3 * i] = _scale.x *  mesh->mVertices[i].x;\r
@@ -399,14 +394,8 @@ bool Model::loadMesh(const aiMesh* mesh, uint& numvertices, uint& numfaces, floa
                vertex[3 * i + 2] = _scale.z * mesh->mVertices[i].z;\r
        }\r
 \r
-       //load UVs from Mesh\r
-       for (uint i = 0; i < numvertices; i++)\r
-       {\r
-               uvs[2 * i] = mesh->mTextureCoords[0][i].x;//[i]->x;\r
-               uvs[2 * i + 1] = mesh->mTextureCoords[0][i].y;//[i]->y;\r
-       }\r
-\r
        //load indices from Mesh\r
+       index = new uint[numfaces * 3];\r
        for (uint i = 0; i < numfaces; i++)\r
        {\r
                index[3 * i] = mesh->mFaces[i].mIndices[0];\r
@@ -414,12 +403,28 @@ bool Model::loadMesh(const aiMesh* mesh, uint& numvertices, uint& numfaces, floa
                index[3 * i + 2] = mesh->mFaces[i].mIndices[2];\r
        }\r
 \r
+       //load UVs from Mesh\r
+       if (mesh->mTextureCoords[0] != NULL)\r
+       {\r
+               uvs = new float[numvertices * 2];\r
+               for (uint i = 0; i < numvertices; i++)\r
+               {\r
+                       uvs[2 * i] = mesh->mTextureCoords[0][i].x;//[i]->x;\r
+                       uvs[2 * i + 1] = mesh->mTextureCoords[0][i].y;//[i]->y;\r
+               }\r
+       }\r
+\r
        //load normals from Mesh\r
-       for (uint i = 0; i < numvertices; i++)\r
+       if (mesh->mNormals != NULL)\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
+               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
+               }\r
+\r
        }\r
 \r
        return true;\r
index fa685ebf1a378084fa176266cd81eeeba91a4fd3..f1684d2c1de3f3efa00bf43ecd44f119593e9fd5 100644 (file)
@@ -101,9 +101,11 @@ move_delta(0)
        {
                /* BADHACK */
                collision = model;
-               collision->bt_init();
+               
        }
 
+       collision->bt_init();
+
        btTransform btModelMat;
        btModelMat.setFromOpenGLMatrix(value_ptr(modelMat));