Adding model loading and bvh generation
This commit is contained in:
@@ -8,22 +8,28 @@
|
||||
std::vector<PModel> ModelLoader::loadModel(std::string_view filename)
|
||||
{
|
||||
Assimp::Importer importer;
|
||||
const aiScene* scene = importer.ReadFile(filename, 0);
|
||||
const aiScene* scene = importer.ReadFile(std::string(filename), aiProcess_Triangulate);
|
||||
std::vector<PModel> result;
|
||||
for (int m = 0; m < scene->mNumMeshes; ++m)
|
||||
{
|
||||
PModel result = std::make_unique<Model>();
|
||||
PModel model = std::make_unique<Model>();
|
||||
const aiMesh* mesh = scene->mMeshes[m];
|
||||
AABB aabb;
|
||||
for (int v = 0; v < mesh->mNumVertices; ++v)
|
||||
{
|
||||
auto aiVert = mesh->mVertices[v];
|
||||
result->positions.add(glm::vec3(aiVert.x, aiVert.y, aiVert.z));
|
||||
model->positions.push_back(glm::vec3(aiVert.x, aiVert.y, aiVert.z));
|
||||
aabb.adjust(model->positions.back());
|
||||
}
|
||||
for (int i = 0; i < mesh->mNumFaces; ++i)
|
||||
{
|
||||
auto face = mesh->mFaces[i];
|
||||
result->indices.add(face.mIndices[0]);
|
||||
result->indices.add(face.mIndices[1]);
|
||||
result->indices.add(face.mIndices[2]);
|
||||
model->indices.push_back(face.mIndices[0]);
|
||||
model->indices.push_back(face.mIndices[1]);
|
||||
model->indices.push_back(face.mIndices[2]);
|
||||
}
|
||||
model->boundingBox = aabb;
|
||||
result.push_back(std::move(model));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user