AVasK

3

Nov 25th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.43 KB | None | 0 0
  1. // Importing mesh
  2. bool importer(RTCScene &main_scene) {
  3.     Assimp::Importer importer;
  4.     const char * path = "model.obj";
  5.     auto scene = importer.ReadFile(path, aiProcess_Triangulate
  6.                                | aiProcess_GenSmoothNormals | aiProcess_FlipUVs | aiProcess_JoinIdenticalVertices);
  7.  
  8.  
  9.     // Keeping the data here for now
  10.     unsigned int num_of_vertices = 0;
  11.     unsigned int num_of_faces = 0;
  12.  
  13.     if (!scene) {
  14.         return false;
  15.     }
  16.     else {
  17.    
  18.         //int k;
  19.         auto pmesh = scene -> mMeshes;
  20.         auto mesh = *pmesh;
  21.        
  22.         auto num_of_mashes = scene -> mNumMeshes;
  23.         auto meshes = scene -> mMeshes;
  24.         for (; pmesh < meshes + num_of_mashes; pmesh++) {
  25.             Buff.push_back(Buffer()); // creates buffer for each new mesh;
  26.             auto k = Buff.size() - 1;
  27.             auto geomID = rtcNewTriangleMesh(main_scene, RTC_GEOMETRY_STATIC, mesh->mNumFaces, mesh->mNumVertices);
  28.            
  29.             auto mesh = *pmesh;
  30.             auto vertices = mesh->mVertices;
  31.             num_of_vertices = mesh->mNumVertices;
  32.             //auto num_of_faces = mesh->mNumFaces;
  33.             Buff[Buff.size() - 1].vertices.insert(Buff[Buff.size() - 1].vertices.end(), vertices, vertices + num_of_vertices); // inserting vertices;
  34.             //Buff[k].vertices.insert(Buff[k].vertices.end(), vertices, vertices + num_of_vertices); // inserting vertices;
  35.             num_of_faces = mesh->mNumFaces;
  36.             auto faces = mesh->mFaces;
  37.             for (auto face = faces; face < faces + num_of_faces; face++) {
  38.                 auto idx = face->mIndices;
  39.                 auto p1 = vertices[idx[0]];
  40.                 auto p2 = vertices[idx[1]];
  41.                 auto p3 = vertices[idx[2]];
  42.                 Buff[Buff.size() - 1].indices.insert(Buff[Buff.size() - 1].indices.end(), idx, idx + 3); // inserting indices;
  43.                 printf("%u : {%.2f, %.2f, %.2f}, %u : {%.2f, %.2f, %.2f}, %u : {%.2f, %.2f, %.2f}\n",
  44.                        idx[0], p1.x, p1.y, p1.z, idx[1], p2.x, p2.y, p2.z, idx[2], p3.x, p3.y, p3.z);
  45.             }
  46.            
  47.             rtcSetBuffer(main_scene, geomID, RTC_VERTEX_BUFFER, Buff[Buff.size() - 1].vertices.data(), 0, sizeof(Buff[Buff.size() - 1].vertices[0]));
  48.             rtcSetBuffer(main_scene, geomID, RTC_INDEX_BUFFER, Buff[Buff.size() - 1].indices.data(), 0, sizeof(Buff[Buff.size() - 1].indices[0]));
  49.         }
  50.     }
  51.     return true;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment