Loading src/application.cpp +33 −3 Original line number Diff line number Diff line Loading @@ -30,6 +30,20 @@ Application::Application(size_t initialWidth, size_t initialHeight) { pioneerModelMatrix = glm::scale(pioneerModelMatrix, glm::vec3(0.2f)); pioneerModelMatrix = glm::rotate(pioneerModelMatrix, -3.14159f / 8.0f, glm::vec3(1.0, 0.0, 0.0)); voyagerModelMatrix = glm::mat4(1.0f); voyagerModelMatrix = glm::translate(voyagerModelMatrix, glm::vec3(20.0f, 2.0f, 0.0f)); voyagerModelMatrix = glm::scale(voyagerModelMatrix, glm::vec3(0.1f)); voyagerModelMatrix = glm::rotate(voyagerModelMatrix, 3.14159f / 2.0f, glm::vec3(1.0, 0.0, 0.0)); voyagerModelMatrix = glm::rotate(voyagerModelMatrix, 3.14159f / 2.0f, glm::vec3(0.0, 0.0, 1.0)); ulyssesModelMatrix = glm::mat4(1.0f); galileoModelMatrix = glm::mat4(1.0f); cassiniModelMatrix = glm::mat4(1.0f); junoModelMatrix = glm::mat4(1.0f); glCreateBuffers(1, &cameraBuffer); glNamedBufferStorage(cameraBuffer, sizeof(CameraUBO), &cameraUbo, GL_DYNAMIC_STORAGE_BIT); Loading Loading @@ -69,14 +83,19 @@ void Application::render() { // Update data // -------------------------------------------------------------------------- time = glfwGetTime(); if (lastTime > 0.0) { rotateProbeMatrix(pioneerModelMatrix, 0.2f); rotateProbeMatrix(voyagerModelMatrix, -0.1f); } // Camera glm::vec3 cameraPosition = glm::vec3(pioneerModelMatrix * glm::vec4(camera.get_eye_position(), 1.0f)); glm::vec3 cameraPosition; if (followedProbe) { cameraPosition = glm::vec3(*followedProbe * glm::vec4(camera.get_eye_position(), 1.0f)); } else { cameraPosition = camera.get_eye_position(); } cameraUbo.position = glm::vec4(cameraPosition, 1.0f); cameraUbo.view = glm::lookAt(cameraPosition, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f)); glNamedBufferSubData(cameraBuffer, 0, sizeof(CameraUBO), &cameraUbo); Loading Loading @@ -129,7 +148,7 @@ void Application::render() { glDrawElementsInstanced(teapot.mode(), teapot.indicesCount(), GL_UNSIGNED_INT, nullptr, 2048); drawProbe(pioneer, pioneerModelMatrix); //drawScene(voyager, voyagerModelMatrix); drawProbe(voyager, voyagerModelMatrix); //drawScene(ulysses, ulyssesModelMatrix); //drawScene(galileo, galileoModelMatrix); //drawScene(cassini, cassiniModelMatrix); Loading Loading @@ -184,4 +203,15 @@ void Application::onMousePressed(GLFWwindow *window, int button, int action, int camera.on_mouse_button(button, action, mods); } void Application::onKeyPressed(GLFWwindow *window, int key, int scancode, int action, int mods) { switch (key) { case GLFW_KEY_0: followedProbe = nullptr; break; case GLFW_KEY_1: followedProbe = &pioneerModelMatrix; break; case GLFW_KEY_2: followedProbe = &voyagerModelMatrix; break; } } No newline at end of file src/application.hpp +7 −6 Original line number Diff line number Diff line Loading @@ -65,16 +65,16 @@ private: Scene pioneer = Scene("objects/pioneer/pioneer.obj"); glm::mat4 pioneerModelMatrix; //Scene voyager = Scene("objects/voyager/voyager.obj"); //glm::mat4 voyagerModelMatrix; Scene voyager = Scene("objects/voyager/voyager.obj"); glm::mat4 voyagerModelMatrix; //Scene ulysses = Scene("objects/ulysses/ulysses.obj"); //glm::mat4 ulyssesModelMatrix; glm::mat4 ulyssesModelMatrix; //Scene galileo = Scene("objects/galileo/galileo.obj"); //glm::mat4 galileoModelMatrix; glm::mat4 galileoModelMatrix; //Scene cassini = Scene("objects/cassini/cassini.obj"); //glm::mat4 cassiniModelMatrix; glm::mat4 cassiniModelMatrix; //Scene juno = Scene("objects/juno/Juno.obj"); //glm::mat4 junoModelMatrix; glm::mat4 junoModelMatrix; Material jupiterMaterial; glm::mat4 jupiterModelMatrix; Loading Loading @@ -103,6 +103,7 @@ private: double lastTime = 0.0f; double music[Playback::magicCount] = { 0 }; const double musicStepDown = -0.03; glm::mat4 *followedProbe = nullptr; void rotateProbeMatrix(glm::mat4 &modelMatrix, float velocity); void drawProbe(Scene &scene, const glm::mat4 &modelMatrix); Loading Loading
src/application.cpp +33 −3 Original line number Diff line number Diff line Loading @@ -30,6 +30,20 @@ Application::Application(size_t initialWidth, size_t initialHeight) { pioneerModelMatrix = glm::scale(pioneerModelMatrix, glm::vec3(0.2f)); pioneerModelMatrix = glm::rotate(pioneerModelMatrix, -3.14159f / 8.0f, glm::vec3(1.0, 0.0, 0.0)); voyagerModelMatrix = glm::mat4(1.0f); voyagerModelMatrix = glm::translate(voyagerModelMatrix, glm::vec3(20.0f, 2.0f, 0.0f)); voyagerModelMatrix = glm::scale(voyagerModelMatrix, glm::vec3(0.1f)); voyagerModelMatrix = glm::rotate(voyagerModelMatrix, 3.14159f / 2.0f, glm::vec3(1.0, 0.0, 0.0)); voyagerModelMatrix = glm::rotate(voyagerModelMatrix, 3.14159f / 2.0f, glm::vec3(0.0, 0.0, 1.0)); ulyssesModelMatrix = glm::mat4(1.0f); galileoModelMatrix = glm::mat4(1.0f); cassiniModelMatrix = glm::mat4(1.0f); junoModelMatrix = glm::mat4(1.0f); glCreateBuffers(1, &cameraBuffer); glNamedBufferStorage(cameraBuffer, sizeof(CameraUBO), &cameraUbo, GL_DYNAMIC_STORAGE_BIT); Loading Loading @@ -69,14 +83,19 @@ void Application::render() { // Update data // -------------------------------------------------------------------------- time = glfwGetTime(); if (lastTime > 0.0) { rotateProbeMatrix(pioneerModelMatrix, 0.2f); rotateProbeMatrix(voyagerModelMatrix, -0.1f); } // Camera glm::vec3 cameraPosition = glm::vec3(pioneerModelMatrix * glm::vec4(camera.get_eye_position(), 1.0f)); glm::vec3 cameraPosition; if (followedProbe) { cameraPosition = glm::vec3(*followedProbe * glm::vec4(camera.get_eye_position(), 1.0f)); } else { cameraPosition = camera.get_eye_position(); } cameraUbo.position = glm::vec4(cameraPosition, 1.0f); cameraUbo.view = glm::lookAt(cameraPosition, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f)); glNamedBufferSubData(cameraBuffer, 0, sizeof(CameraUBO), &cameraUbo); Loading Loading @@ -129,7 +148,7 @@ void Application::render() { glDrawElementsInstanced(teapot.mode(), teapot.indicesCount(), GL_UNSIGNED_INT, nullptr, 2048); drawProbe(pioneer, pioneerModelMatrix); //drawScene(voyager, voyagerModelMatrix); drawProbe(voyager, voyagerModelMatrix); //drawScene(ulysses, ulyssesModelMatrix); //drawScene(galileo, galileoModelMatrix); //drawScene(cassini, cassiniModelMatrix); Loading Loading @@ -184,4 +203,15 @@ void Application::onMousePressed(GLFWwindow *window, int button, int action, int camera.on_mouse_button(button, action, mods); } void Application::onKeyPressed(GLFWwindow *window, int key, int scancode, int action, int mods) { switch (key) { case GLFW_KEY_0: followedProbe = nullptr; break; case GLFW_KEY_1: followedProbe = &pioneerModelMatrix; break; case GLFW_KEY_2: followedProbe = &voyagerModelMatrix; break; } } No newline at end of file
src/application.hpp +7 −6 Original line number Diff line number Diff line Loading @@ -65,16 +65,16 @@ private: Scene pioneer = Scene("objects/pioneer/pioneer.obj"); glm::mat4 pioneerModelMatrix; //Scene voyager = Scene("objects/voyager/voyager.obj"); //glm::mat4 voyagerModelMatrix; Scene voyager = Scene("objects/voyager/voyager.obj"); glm::mat4 voyagerModelMatrix; //Scene ulysses = Scene("objects/ulysses/ulysses.obj"); //glm::mat4 ulyssesModelMatrix; glm::mat4 ulyssesModelMatrix; //Scene galileo = Scene("objects/galileo/galileo.obj"); //glm::mat4 galileoModelMatrix; glm::mat4 galileoModelMatrix; //Scene cassini = Scene("objects/cassini/cassini.obj"); //glm::mat4 cassiniModelMatrix; glm::mat4 cassiniModelMatrix; //Scene juno = Scene("objects/juno/Juno.obj"); //glm::mat4 junoModelMatrix; glm::mat4 junoModelMatrix; Material jupiterMaterial; glm::mat4 jupiterModelMatrix; Loading Loading @@ -103,6 +103,7 @@ private: double lastTime = 0.0f; double music[Playback::magicCount] = { 0 }; const double musicStepDown = -0.03; glm::mat4 *followedProbe = nullptr; void rotateProbeMatrix(glm::mat4 &modelMatrix, float velocity); void drawProbe(Scene &scene, const glm::mat4 &modelMatrix); Loading