From 659d366ec44090f30bc367c31e98b5d897b2671c Mon Sep 17 00:00:00 2001
From: Josh Morgenstern <josh@morgenstern.dev>
Date: Mon, 28 Jun 2021 18:07:53 +0200
Subject: [PATCH] [#54] add simple example for linear camera interpolation

---
 projects/first_mesh/src/main.cpp | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index dc43c905..c559955a 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -2,6 +2,7 @@
 #include <vkcv/Core.hpp>
 #include <GLFW/glfw3.h>
 #include <vkcv/camera/CameraManager.hpp>
+#include <vkcv/camera/InterpolationLinear.hpp>
 #include <chrono>
 #include <vkcv/asset/asset_loader.hpp>
 
@@ -152,11 +153,21 @@ int main(int argc, const char** argv) {
 	vkcv::DrawcallInfo          drawcall(renderMesh, { descriptorUsage });
 
     vkcv::camera::CameraManager cameraManager(window);
-    uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
-	uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
+    uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::NONE);
+	uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
+	uint32_t camIndex2 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
 	
 	cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3));
 
+	vkcv::camera::InterpolationLinear interp(cameraManager.getCamera(camIndex0));
+
+	interp.addPosition(glm::vec3(5,5,-5));
+	interp.addPosition(glm::vec3(0,5,-5));
+	interp.addPosition(glm::vec3(0,-3,-3));
+	interp.addPosition(glm::vec3(3,0,-6));
+	interp.addPosition(glm::vec3(5,5,5));
+	interp.addPosition(glm::vec3(5,5,-5));
+
     auto start = std::chrono::system_clock::now();
     
 	while (window.isWindowOpen()) {
@@ -182,6 +193,7 @@ int main(int argc, const char** argv) {
 		
 		start = end;
 		cameraManager.update(0.000001 * static_cast<double>(deltatime.count()));
+		interp.updateCamera();
         glm::mat4 mvp = cameraManager.getActiveCamera().getMVP();
 
 		vkcv::PushConstantData pushConstantData((void*)&mvp, sizeof(glm::mat4));
-- 
GitLab