|
25 | 25 | #include "color.h" |
26 | 26 | #include "config.h" |
27 | 27 | #include "log_system.h" |
28 | | -#include "matrix.hpp" |
29 | | -#include "vector.hpp" |
| 28 | +#include "log_math.hpp" |
30 | 29 |
|
31 | | -namespace simple_renderer { |
32 | | - |
33 | | -class Material { |
34 | | -public: |
35 | | - Material() = default; |
36 | | - Material(const Material& material) = default; |
37 | | - Material(Material&& material) = default; |
38 | | - auto operator=(const Material& material) -> Material& = default; |
39 | | - auto operator=(Material&& material) -> Material& = default; |
40 | | - ~Material() = default; |
41 | | - |
42 | | - float shininess = 0.0f; |
43 | | - glm::vec3 ambient; |
44 | | - glm::vec3 diffuse; |
45 | | - glm::vec3 specular; |
46 | | -}; |
47 | | - |
48 | | -class Vertex { |
49 | | -public: |
50 | | - explicit Vertex(glm::vec3 coord, glm::vec3 normal, glm::vec2 texture_coord, const Color& color); |
51 | | - Vertex() = default; |
52 | | - Vertex(const Vertex& vertex) = default; |
53 | | - Vertex(Vertex&& vertex) = default; |
54 | | - auto operator=(const Vertex& vertex) -> Vertex& = default; |
55 | | - auto operator=(Vertex&& vertex) -> Vertex& = default; |
56 | | - ~Vertex() = default; |
57 | | - |
58 | | - [[nodiscard]] Vertex operator*(const glm::mat4 &tran) const; |
59 | | - |
60 | | - glm::vec3 coord_; |
61 | | - glm::vec3 normal_; |
62 | | - glm::vec2 texture_coord_; |
63 | | - Color color_; |
64 | | -}; |
| 30 | +#include "vertex.hpp" |
| 31 | +#include "face.hpp" |
65 | 32 |
|
66 | | -class Face { |
67 | | -public: |
68 | | - explicit Face(const Vertex& v0, const Vertex& v1, const Vertex& v2, Material material); |
69 | | - Face() = default; |
70 | | - Face(const Face& face) = default; |
71 | | - Face(Face&& face) = default; |
72 | | - auto operator=(const Face& face) -> Face& = default; |
73 | | - auto operator=(Face&& face) -> Face& = default; |
74 | | - ~Face() = default; |
75 | | - |
76 | | - [[nodiscard]] Face operator*(const glm::mat4 &tran) const; |
77 | | - |
78 | | - Vertex v0_; |
79 | | - Vertex v1_; |
80 | | - Vertex v2_; |
81 | | - glm::vec3 normal_; |
82 | | - Material material_; |
83 | | -}; |
| 33 | +namespace simple_renderer { |
84 | 34 |
|
85 | 35 | class Model { |
86 | 36 | public: |
87 | | - Model(const std::string &model_path); |
| 37 | + |
| 38 | + // Default constructor |
88 | 39 | Model() = default; |
| 40 | + // Default copy constructor |
89 | 41 | Model(const Model& model) = default; |
| 42 | + Model& operator=(const Model& model) = default; |
| 43 | + // Default move constructor |
90 | 44 | Model(Model&& model) = default; |
91 | | - auto operator=(const Model& model) -> Model& = default; |
92 | | - auto operator=(Model&& model) -> Model& = default; |
| 45 | + Model& operator=(Model&& model) = default; |
93 | 46 | ~Model() = default; |
94 | 47 |
|
95 | | - [[nodiscard]] Model operator*(const glm::mat4 &tran) const; |
| 48 | + Model(const std::string &model_path); |
| 49 | + |
| 50 | + void transform(const glm::mat4 &tran); |
96 | 51 |
|
97 | | - const std::vector<Face>& GetFaces() const; |
98 | | - const std::string ModelPath() const; |
| 52 | + const std::vector<Face>& faces() const { return faces_; }; |
| 53 | + const std::string& modelPath() const { return directory_; }; |
99 | 54 |
|
100 | 55 | private: |
101 | 56 | static constexpr const uint8_t kTriangleFaceVertexCount = 3; |
| 57 | + std::string directory_; |
102 | 58 |
|
103 | 59 | std::vector<Face> faces_; |
104 | | - std::string model_path_ = ""; |
105 | 60 |
|
106 | | - std::pair<glm::vec3, glm::vec3> GetMaxMinXYZ() const; |
107 | | - |
108 | | - void NormalizeModel(); |
109 | | - void LoadModel(const std::string& path); |
110 | | - void ProcessNode(aiNode* node, const aiScene* scene); |
111 | | - Face ProcessMesh(aiMesh* mesh, const aiScene* scene); |
| 61 | + void loadModel(const std::string& path); |
| 62 | + void processNode(aiNode* node, const aiScene* scene); |
| 63 | + void processMesh(aiMesh* mesh, const aiScene* scene); |
| 64 | + Material processMaterial(aiMaterial* material); |
112 | 65 | }; |
113 | 66 | } // namespace simple_renderer |
114 | 67 |
|
|
0 commit comments