diff --git a/modules/camera/include/vkcv/camera/Camera.hpp b/modules/camera/include/vkcv/camera/Camera.hpp
index a41d37525e0313e35f2e571428b9838eeeb0d055..f84cf2c2a6ad9fe0688e7a157361126029b59bb3 100644
--- a/modules/camera/include/vkcv/camera/Camera.hpp
+++ b/modules/camera/include/vkcv/camera/Camera.hpp
@@ -36,6 +36,8 @@ namespace vkcv {
         bool m_backward;
         bool m_left;
         bool m_right;
+        bool m_top;
+        bool m_bottom;
 
     public:
 
@@ -229,6 +231,18 @@ namespace vkcv {
          */
         void moveRight(int action);
 
+        /**
+         * @brief Indicates top movement of the camera depending on the performed @p action
+         * @param[in] action The performed action
+         */
+        void moveTop(int action);
+
+        /**
+         * @brief Indicates bottom movement of the camera depending on the performed @p action
+         * @param[in] action The performed action
+         */
+        void moveBottom(int action);
+
     };
 
 }
diff --git a/modules/camera/include/vkcv/camera/CameraManager.hpp b/modules/camera/include/vkcv/camera/CameraManager.hpp
index 1ee3a31c165cec457a7c6379852b01993bc86532..b9ffdb9ed17827532818371d94639124c8baeec1 100644
--- a/modules/camera/include/vkcv/camera/CameraManager.hpp
+++ b/modules/camera/include/vkcv/camera/CameraManager.hpp
@@ -30,7 +30,7 @@ namespace vkcv{
         void bindCamera();
 
         /**
-         * @brief A callback function for key events. Currently, camera movement via W, A, S, D and window closure via Escape are supported
+         * @brief A callback function for key events. Currently, 3D camera movement via W, A, S, D, E, Q and window closure via Escape are supported
          * @param[in] key The keyboard key
          * @param[in] scancode The platform-specific scancode
          * @param[in] action The key action
diff --git a/modules/camera/src/vkcv/camera/Camera.cpp b/modules/camera/src/vkcv/camera/Camera.cpp
index d69596cf7ca1954451676784baa8ea4ba7ecb9a3..908d681a4503d908dd6b08e20dca04b1e2a493c7 100644
--- a/modules/camera/src/vkcv/camera/Camera.cpp
+++ b/modules/camera/src/vkcv/camera/Camera.cpp
@@ -19,6 +19,8 @@ namespace vkcv {
         m_backward = false;
         m_left = false;
         m_right = false;
+        m_top = false;
+        m_bottom = false;
     }
 
     Camera::~Camera() = default;
@@ -163,6 +165,8 @@ namespace vkcv {
         m_position -= (m_cameraSpeed * getFront() * static_cast<float> (m_backward) * static_cast<float>(deltaTime));
         m_position -= (glm::normalize(glm::cross(getFront(), m_up)) * m_cameraSpeed * static_cast<float> (m_left) * static_cast<float>(deltaTime));
         m_position += (glm::normalize(glm::cross(getFront(), m_up)) * m_cameraSpeed * static_cast<float> (m_right) * static_cast<float>(deltaTime));
+        m_position -= m_up * m_cameraSpeed * static_cast<float> (m_top) * static_cast<float>(deltaTime);
+        m_position += m_up * m_cameraSpeed * static_cast<float> (m_bottom) * static_cast<float>(deltaTime);
     }
 
     void Camera::moveForward(int action){
@@ -180,4 +184,12 @@ namespace vkcv {
     void Camera::moveRight(int action){
         m_right = static_cast<bool>(action);
     }
+
+    void Camera::moveTop(int action){
+        m_top = static_cast<bool>(action);
+    }
+
+    void Camera::moveBottom(int action){
+        m_bottom = static_cast<bool>(action);
+    }
 }
\ No newline at end of file
diff --git a/modules/camera/src/vkcv/camera/CameraManager.cpp b/modules/camera/src/vkcv/camera/CameraManager.cpp
index efbbaa2723548a8abfebb4a841a681b60e8a3d0d..a08684ec260ef098fe122498a51aeaf50cc74b1b 100644
--- a/modules/camera/src/vkcv/camera/CameraManager.cpp
+++ b/modules/camera/src/vkcv/camera/CameraManager.cpp
@@ -72,6 +72,12 @@ namespace vkcv{
             case GLFW_KEY_D:
                 m_camera.moveRight(action);
                 break;
+            case GLFW_KEY_E:
+                m_camera.moveTop(action);
+                break;
+            case GLFW_KEY_Q:
+                m_camera.moveBottom(action);
+                break;
             case GLFW_KEY_ESCAPE:
                 glfwSetWindowShouldClose(m_window.getWindow(), 1);
                 break;