Here is some example code:
#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>
Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(("./res/models/" + fileName).c_str(), aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs | aiProcess_CalcTangentSpace);
if(!scene) {
std::cout << "Mesh load failed!" << std::endl;
}
const aiMesh* model = scene->mMeshes[0];
std::vector<Vector3f> positions;
std::vector<Vector2f> texCoords;
std::vector<Vector3f> normals;
std::vector<Vector3f> tangents;
std::vector<unsigned int> indices;
for(unsigned int i = 0; i < model->mNumVertices; i++) {
const aiVector3D pos = model->mVertices[i];
const aiVector3D normal = model->mNormals[i];
const aiVector3D texCoord = model->HasTextureCoords(0) ? model->mTextureCoords[0][i] : aiVector3D(0.0f, 0.0f, 0.0f);
const aiVector3D tangent = model->mTangents[i];
positions.push_back(Vector3f(pos.x, pos.y, pos.z));
texCoords.push_back(Vector2f(texCoord.x, texCoord.y));
normals.push_back(Vector3f(normal.x, normal.y, normal.z));
tangents.push_back(Vector3f(tangent.x, tangent.y, tangent.z));
}
for(unsigned int i = 0; i < model->mNumFaces; i++) {
const aiFace& face = model->mFaces[i];
assert(face.mNumIndices == 3);
indices.push_back(face.mIndices[0]);
indices.push_back(face.mIndices[1]);
indices.push_back(face.mIndices[2]);
}