12#include <assimp/Importer.hpp>
13#include <assimp/scene.h>
14#include <assimp/postprocess.h>
15#include "assimp/material.h"
22#define MAX_BONE_INFLUENCE 4
48 Texture(
const std::string& filepath,
const aiTextureType&
type);
92 const std::vector<Vertex>& vertices,
93 const std::vector<unsigned int>&
indices,
94 const std::vector<Texture>&
textures,
114 std::vector<Vertex> vertices;
115 std::vector<unsigned int>
indices;
120 void setupNormalMaps();
133 explicit Model(
const std::string& filepath,
bool flip_uvs);
182 virtual void scaleAbsolute(
const float& new_factor)
override;
223 void rotateAbsolute(
const glm::vec3& dir,
bool is_player =
false,
const glm::vec3& axis = glm::vec3(0.0f, 1.0f, 0.0f))
override;
233 void rotateAbsolute(
const float& angle,
const glm::vec3& axis = glm::vec3(0.0f, 1.0f, 0.0f))
override;
243 void rotateRelative(
const glm::vec3& dir,
const glm::vec3& axis = glm::vec3(0.0f, 1.0f, 0.0f))
override;
249 void clear()
override;
286 std::vector<Mesh> meshes;
288 glm::vec3 dimensions;
290 std::map<std::string, BoneInfo> m_boneInfoMap;
291 int m_boneCounter = 0;
294 void processNode(aiNode* node,
const aiScene* scene);
295 Mesh processMesh(aiMesh* mesh,
const aiScene* scene);
296 void setDefaultVertexBoneData(
Vertex& vertex);
297 void setVertexBoneData(
Vertex& vertex,
int boneID,
float weight);
298 void extractBoneWeight(std::vector<Vertex>& vertices, aiMesh* mesh,
const aiScene* scene);
300 std::vector<Texture> loadMaterialTextures(aiMaterial* mat,
const aiTextureType&
type);
305 std::string directory;
Material material
Definition: model.hpp:112
void draw(Shader *shader, glm::vec3 camPos, bool fill) override
Definition: model.cpp:139
std::optional< glm::vec3 > solidColor
Definition: model.hpp:111
Definition: model.hpp:124
glm::vec3 getDimensions()
Definition: model.cpp:333
void rotateAbsolute(const glm::vec3 &dir, bool is_player=false, const glm::vec3 &axis=glm::vec3(0.0f, 1.0f, 0.0f)) override
Rotates the item along the specified axis. If no axis is specified, then assumes a rotation on the y-...
Definition: model.cpp:291
void rotateRelative(const glm::vec3 &dir, const glm::vec3 &axis=glm::vec3(0.0f, 1.0f, 0.0f)) override
Rotates the item along the specified axis. If no axis is specified, then assumes a rotation on the y-...
Definition: model.cpp:305
void translateAbsolute(const glm::vec3 &new_pos) override
Definition: model.cpp:249
virtual void scaleAbsolute(const float &new_factor) override
Definition: model.cpp:263
void scaleRelative(const float &new_factor) override
Definition: model.cpp:277
void setDimensions(const glm::vec3 &dimensions)
Definition: model.cpp:337
int & getBoneCount()
Definition: model.hpp:282
void clearPosition() override
Definition: model.cpp:326
void translateRelative(const glm::vec3 &delta) override
Definition: model.cpp:256
void overrideSolidColor(std::optional< glm::vec3 > color)
Definition: model.cpp:523
void draw(Shader *shader, glm::vec3 camPos, bool fill) override
Definition: model.cpp:227
auto & getBoneInfoMap()
Definition: model.hpp:281
void clear() override
Definition: model.cpp:312
void clearScale() override
Definition: model.cpp:319
Definition: renderable.hpp:22
Definition: shader.hpp:12
GLuint getID() const
Definition: model.cpp:579
std::string getType() const
Definition: model.cpp:583
GLuint shader
Definition: glad.h:1843
GLsizei GLenum const void * indices
Definition: glad.h:1649
unsigned int GLuint
Definition: glad.h:115
GLuint color
Definition: glad.h:2250
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glad.h:1531
const GLuint * textures
Definition: glad.h:1676
#define MAX_BONE_INFLUENCE
Definition: model.hpp:22
glm::mat4 offset
Definition: model.hpp:76
int id
Definition: model.hpp:73
glm::vec3 diffuse
Definition: model.hpp:66
float shininess
Definition: model.hpp:68
glm::vec3 specular
Definition: model.hpp:67
glm::vec3 ambient
Definition: model.hpp:65
glm::vec3 position
Definition: model.hpp:29
glm::vec2 textureCoords
Definition: model.hpp:31
glm::vec3 normal
Definition: model.hpp:30
glm::vec3 tangent
Definition: model.hpp:34
glm::vec3 bitangent
Definition: model.hpp:35
int m_boneIDs[MAX_BONE_INFLUENCE]
Definition: model.hpp:32
float m_weights[MAX_BONE_INFLUENCE]
Definition: model.hpp:33