aboutsummaryrefslogtreecommitdiff
path: root/src/camera/camera.cpp
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2023-12-13 14:53:30 -0500
committersotech117 <michael_foiani@brown.edu>2023-12-13 14:53:30 -0500
commit0cc651b784afef1200b34af1f6248c7f4ac75b44 (patch)
treefdcba9b347de6a7eccc1e2e8b3d819a289edc5c5 /src/camera/camera.cpp
parente118c821460043c97e856eb780bd60f17570f278 (diff)
add way to modify camera based on settings slider
Diffstat (limited to 'src/camera/camera.cpp')
-rw-r--r--src/camera/camera.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/camera/camera.cpp b/src/camera/camera.cpp
index 704be7e..fb63d77 100644
--- a/src/camera/camera.cpp
+++ b/src/camera/camera.cpp
@@ -5,28 +5,32 @@
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp> // Include this header for glm::rotate
+void Camera::updateViewMatrix(SceneCameraData cameraData) {
+ m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.look, cameraData.up, cameraData.over);
+ // add settings.xy rotation
+ m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xy), glm::vec3(0.f, 1.f, 0.f));
+ m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.yz), glm::vec3(1.f, 0.f, 0.f));
+ m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xz), glm::vec3(0.f, 0.f, 1.f));
+
+ m_translationVector = -cameraData.pos;
+
+ m_inverseViewMatrix = glm::inverse(m_viewMatrix);
+ m_inverseTranslationVector = -m_translationVector;
+ m_controlPoints = {
+ {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]},
+ {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f},
+ {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f},
+ {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]}
+ };
+}
+
Camera::Camera(SceneCameraData cameraData) :
m_pos(cameraData.pos),
m_heightAngle(cameraData.heightAngle),
m_focalLength(cameraData.focalLength),
m_aperture(cameraData.aperture)
{
- m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.look, cameraData.up, cameraData.over);
- // add settings.xy rotation
- m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xy), glm::vec3(0.f, 1.f, 0.f));
- m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.yz), glm::vec3(1.f, 0.f, 0.f));
- m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xz), glm::vec3(0.f, 0.f, 1.f));
-
- m_translationVector = -cameraData.pos;
-
- m_inverseViewMatrix = glm::inverse(m_viewMatrix);
- m_inverseTranslationVector = -m_translationVector;
- m_controlPoints = {
- {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]},
- {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f},
- {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f},
- {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]}
- };
+ updateViewMatrix(cameraData);
}
glm::mat4 Camera::getViewMatrix() const {