group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
AssetLoader.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
6#include "Asset.hpp"
7#include "assimp/Importer.hpp"
8#include "assimp/postprocess.h"
9#include "assimp/scene.h"
10#include "glm/glm.hpp"
11
12#include <string>
13#include <unordered_map>
14
17{
18public:
26 static bool loadModel(const ModelIdInt id,
27 const std::string& modelFileName,
28 const std::vector<std::string>& texFileNames,
29 const bool k_flatten,
30 const bool flipUVs);
31
32 static void updateModelTransformCache(const ModelIdInt id);
33
34private:
39 static bool loadMesh(MeshIdInt id, const aiMesh& asimpMeshResult);
40
46 static const aiScene* loadAsset(Assimp::Importer& importer, const std::string& fileName, const bool flipUVs);
47
51 static glm::mat4 glmFromAiTransform(const aiMatrix4x4& transformAi);
52
59 static void pushAiNodeMeshesToModelElements(const std::string& meshNameSpace,
60 const aiNode& nodeAi,
61 const aiScene& sceneAi,
62 const ModelIdInt k_modelId,
63 const uint32_t modelIndexNode);
64};
GPU asset types and global registries for the new renderer.
uint32_t MeshIdInt
Definition Asset.hpp:19
uint32_t ModelIdInt
Definition Asset.hpp:20
Loads 3D models via Assimp and populates the global Asset registries.
Definition AssetLoader.hpp:17
static void pushAiNodeMeshesToModelElements(const std::string &meshNameSpace, const aiNode &nodeAi, const aiScene &sceneAi, const ModelIdInt k_modelId, const uint32_t modelIndexNode)
Recursively extract meshes from an Assimp node and add them as ModelElements.
Definition AssetLoader.cpp:279
static void updateModelTransformCache(const ModelIdInt id)
Definition AssetLoader.cpp:325
static glm::mat4 glmFromAiTransform(const aiMatrix4x4 &transformAi)
Convert an Assimp 4x4 matrix to a glm::mat4.
Definition AssetLoader.cpp:360
static bool loadMesh(MeshIdInt id, const aiMesh &asimpMeshResult)
Import a single Assimp mesh into the global Asset::meshes_ registry.
Definition AssetLoader.cpp:27
static bool loadModel(const ModelIdInt id, const std::string &modelFileName, const std::vector< std::string > &texFileNames, const bool k_flatten, const bool flipUVs)
Load a single model from file and register it in Asset::models_.
Definition AssetLoader.cpp:98
static const aiScene * loadAsset(Assimp::Importer &importer, const std::string &fileName, const bool flipUVs)
Read a file from disk through Assimp and return the parsed scene.
Definition AssetLoader.cpp:14