mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 17:56:17 +03:00
72 lines
1.5 KiB
C++
72 lines
1.5 KiB
C++
//
|
|
// Copyright(c) 2016-2017 benikabocha.
|
|
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
//
|
|
|
|
#ifndef SABA_MODEL_OBJ_OBJMODEL_H_
|
|
#define SABA_MODEL_OBJ_OBJMODEL_H_
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
#include <glm/vec2.hpp>
|
|
#include <glm/vec3.hpp>
|
|
|
|
namespace saba
|
|
{
|
|
class OBJModel
|
|
{
|
|
public:
|
|
struct Material
|
|
{
|
|
std::string m_name;
|
|
|
|
glm::vec3 m_ambient;
|
|
glm::vec3 m_diffuse;
|
|
glm::vec3 m_specular;
|
|
float m_specularPower;
|
|
float m_transparency;
|
|
|
|
std::string m_ambientTex;
|
|
std::string m_diffuseTex;
|
|
std::string m_specularTex;
|
|
std::string m_transparencyTex;
|
|
};
|
|
|
|
struct Face
|
|
{
|
|
int m_position[3];
|
|
int m_normal[3];
|
|
int m_uv[3];
|
|
int m_material;
|
|
};
|
|
|
|
public:
|
|
bool Load(const char* filepath);
|
|
void Destroy();
|
|
|
|
const std::vector<glm::vec3>& GetPositions() const { return m_positions; }
|
|
const std::vector<glm::vec3>& GetNormals() const { return m_normals; }
|
|
const std::vector<glm::vec2>& GetUVs() const { return m_uvs; }
|
|
const std::vector<Material>& GetMaterials() const { return m_materials; }
|
|
const std::vector<Face>& GetFaces() const { return m_faces; }
|
|
|
|
const glm::vec3& GetBBoxMin() const { return m_bboxMin; }
|
|
const glm::vec3& GetBBoxMax() const { return m_bboxMax; }
|
|
|
|
private:
|
|
std::vector<glm::vec3> m_positions;
|
|
std::vector<glm::vec3> m_normals;
|
|
std::vector<glm::vec2> m_uvs;
|
|
|
|
glm::vec3 m_bboxMin;
|
|
glm::vec3 m_bboxMax;
|
|
|
|
std::vector<Material> m_materials;
|
|
std::vector<Face> m_faces;
|
|
};
|
|
}
|
|
|
|
#endif // !SABA_MODEL_OBJ_OBJMODEL_H_
|
|
|