separated mesh data from Mesh class

This commit is contained in:
devZoGok
2022-03-15 07:25:20 +02:00
parent 8551823dd8
commit 993dddb130
10 changed files with 144 additions and 121 deletions
+10 -5
View File
@@ -12,10 +12,12 @@ namespace vb01{
AssimpModelReader::AssimpModelReader(Model *model, string path) : ModelReader(model, path){
Importer importer;
const aiScene *scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_GenNormals | aiProcess_CalcTangentSpace);
if(!scene || scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode){
cout<<"Failed to load model:"<<importer.GetErrorString()<<endl;
exit(-1);
}
processNode(scene->mRootNode, scene, model);
}
@@ -24,6 +26,7 @@ namespace vb01{
aiMesh *mesh = scene->mMeshes[node->mMeshes[i]];
processMesh(mesh, scene, currentNode);
}
for(int i = 0;i < node->mNumChildren; i++){
Node *childNode = new Node();
currentNode->attachChild(childNode);
@@ -33,10 +36,11 @@ namespace vb01{
void AssimpModelReader::processMesh(aiMesh *mesh, const aiScene *scene, Node *currentNode){
const int numTris = mesh->mNumFaces;
Mesh::Vertex *vertices = new Mesh::Vertex[3 * numTris];
MeshData::Vertex *vertices = new MeshData::Vertex[3 * numTris];
u32 *indices = new u32[3 * numTris];
for(int i = 0; i < 3 * numTris; i++){
Mesh::Vertex v;
MeshData::Vertex v;
v.pos.x = mesh->mVertices[i].x;
v.pos.y = mesh->mVertices[i].y;
v.pos.z = mesh->mVertices[i].z;
@@ -61,18 +65,19 @@ namespace vb01{
v.uv = Vector2::VEC_ZERO;
vertices[i] = v;
}
for(int i = 0; i < numTris; i++){
int numFaceIndices = mesh->mFaces[i].mNumIndices;
for(int j = 0; j < numFaceIndices; j++){
for(int j = 0; j < numFaceIndices; j++)
indices[numFaceIndices * i + j] = mesh->mFaces[i].mIndices[j];
}
}
/*
if(mesh->mMaterialIndex>=0){
aiMaterial *material=scene->mMaterial[mesh->mMaterialIndex];
}
*/
Mesh *vbMesh = new Mesh(vertices, indices, numTris);
Mesh *vbMesh = new Mesh(MeshData(vertices, indices, numTris));
vbMesh ->construct();
currentNode->attachMesh(vbMesh);
}