From 65a9c3f6c4635bf81976fc8df98eb4fef0c2b1dd Mon Sep 17 00:00:00 2001 From: Woohyung Choi <201421062@sce212.ajou.ac.kr> Date: Fri, 13 Dec 2019 04:51:04 +0900 Subject: [PATCH] =?UTF-8?q?Transfrom=EC=9E=88=EB=8D=98=EA=B1=B0=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LearnOpenGL/OpenGLWrapper.cpp | 84 +---------------------------------- LearnOpenGL/OpenGLWrapper.h | 29 ------------ 2 files changed, 1 insertion(+), 112 deletions(-) diff --git a/LearnOpenGL/OpenGLWrapper.cpp b/LearnOpenGL/OpenGLWrapper.cpp index a55ac04..aa25f8e 100644 --- a/LearnOpenGL/OpenGLWrapper.cpp +++ b/LearnOpenGL/OpenGLWrapper.cpp @@ -75,93 +75,11 @@ GLuint RenderObject::get_vertex_count() return mesh->get_vertex_count(); } -Transform::Transform() -{ - translate = glm::vec3(0.0f, 0.0f, 0.0f); - rotate = glm::vec3(0.0f, 0.0f, 0.0f); - scale = glm::vec3(1.0f, 1.0f, 1.0f); - - update_model_matrix(); - update_directional_vector(); -} - -glm::mat4 Transform::get_model_matrix() -{ - return model; -} - -void Transform::update_model_matrix() -{ - model = glm::mat4(1.0f); - model = glm::translate(model, translate); - - model = glm::rotate(model, glm::radians(rotate.x), glm::vec3(1.0f, 0.0f, 0.0f)); - model = glm::rotate(model, glm::radians(rotate.y), glm::vec3(0.0f, 1.0f, 0.0f)); - model = glm::rotate(model, glm::radians(rotate.z), glm::vec3(0.0f, 0.0f, 1.0f)); - - model = glm::scale(model, scale); -} - -void Transform::update_directional_vector() -{ - glm::vec3 front; - glm::vec3 up; - glm::vec3 right; - - glm::vec3 _front; - front.x = cos(glm::radians(rotate.y)) * cos(glm::radians(rotate.x)); - front.y = sin(glm::radians(rotate.x)); - front.z = sin(glm::radians(rotate.y)) * cos(glm::radians(rotate.x)); - front = glm::normalize(_front); - - right = glm::normalize(glm::cross(front, glm::vec3(0, 1, 0))); - - up = glm::normalize(glm::cross(right, front)); -} - Transform *RenderObject::get_transform() { return &transform; } -void Transform::set_translate(glm::vec3 _translate) -{ - translate = _translate; - - update_model_matrix(); - update_directional_vector(); -} - -void Transform::set_rotate(glm::vec3 _rotate) -{ - rotate = _rotate; - - update_model_matrix(); - update_directional_vector(); -} - -void Transform::set_scale(glm::vec3 _scale) -{ - scale = _scale; - - update_model_matrix(); -} - -void Transform::move(glm::vec3 _delta) -{ - translate += _delta; - - update_model_matrix(); - update_directional_vector(); -} - -void Transform::move(glm::vec3 _direction, glm::vec1 _velocity) -{ - translate += glm::vec3(_velocity *_direction.x, _velocity *_direction.y, _velocity *_direction.z); - - update_model_matrix(); -} - void RenderObject::set_material(Material *_material) { material = _material; @@ -214,7 +132,7 @@ void RenderObject::projective_render(Camera &camera) 0.0f, 0.0f, 0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f }; - glm::mat4 projector_view = glm::lookAt(camera.Position, camera.Position + camera.Front, camera.Up); + glm::mat4 projector_view = glm::lookAt(camera.transform.get_translate(), camera.transform.get_translate() + camera.transform.get_front(), camera.transform.get_up()); glm::mat4 projector_projection = glm::perspective(glm::radians(camera.Zoom), 1.0f, 0.1f, 100.0f); auto prog = material->get_program(); diff --git a/LearnOpenGL/OpenGLWrapper.h b/LearnOpenGL/OpenGLWrapper.h index df4d0ae..15f591d 100644 --- a/LearnOpenGL/OpenGLWrapper.h +++ b/LearnOpenGL/OpenGLWrapper.h @@ -50,35 +50,6 @@ public: GLuint get_specularMap(); }; -class Transform -{ -private: - glm::mat4 model; - - glm::vec3 translate; - glm::vec3 rotate; - glm::vec3 scale; - - glm::vec3 front; - glm::vec3 up; - glm::vec3 right; - - void update_model_matrix(); - void update_directional_vector(); - -public: - Transform(); - glm::mat4 get_model_matrix(); - glm::vec3 get_front(); - - void set_translate(glm::vec3 _translate); - void set_rotate(glm::vec3 _rotate); - void set_scale(glm::vec3 _scale); - - void move(glm::vec3 _delta); - void move(glm::vec3 _direction, glm::vec1 _velocity); -}; - class RenderObject { private: -- GitLab