diff --git a/modules/camera/include/vkcv/camera/Camera.hpp b/modules/camera/include/vkcv/camera/Camera.hpp
index ce32d3f8a0c6ee3e0dd882f24a9ac2d12c14a024..8a8c5df5d74cf1402bd8810172657ba77ddb2d56 100644
--- a/modules/camera/include/vkcv/camera/Camera.hpp
+++ b/modules/camera/include/vkcv/camera/Camera.hpp
@@ -3,6 +3,8 @@
 #include <glm/glm.hpp>
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/matrix_access.hpp>
+#include <glm/vec3.hpp>
+#include <glm/mat4x4.hpp>
 
 namespace vkcv::camera {
 
@@ -20,9 +22,6 @@ namespace vkcv::camera {
 		glm::vec3 m_up;
         glm::vec3 m_position;
         glm::vec3 m_center;
-
-        float m_pitch;
-        float m_yaw;
 	
 		/**
 		 * @brief Sets the view matrix of the camera to @p view
@@ -156,6 +155,20 @@ namespace vkcv::camera {
          * @param[in] center The new center point.
          */
         void setCenter(const glm::vec3& center);
+        
+        /**
+         * @brief Gets the angles of the camera.
+         * @param[out] pitch The pitch value in radians
+         * @param[out] yaw The yaw value in radians
+         */
+		void getAngles(float& pitch, float& yaw);
+  
+		/**
+		 * @brief Sets the angles of the camera.
+		 * @param pitch The new pitch value in radians
+		 * @param yaw The new yaw value in radians
+		 */
+		void setAngles(float pitch, float yaw);
 
         /**
          * @brief Gets the pitch value of the camera in degrees.
diff --git a/modules/camera/src/vkcv/camera/Camera.cpp b/modules/camera/src/vkcv/camera/Camera.cpp
index e78974e6a02b7928d1f2b8dd1cd8a1ae372dea71..87d09aa9a6e3e7dc80d5de9a95f3e1e3b72e9205 100644
--- a/modules/camera/src/vkcv/camera/Camera.cpp
+++ b/modules/camera/src/vkcv/camera/Camera.cpp
@@ -10,8 +10,6 @@ namespace vkcv::camera {
 			glm::vec3(0.0f, 0.0f, 0.0f),
 			glm::vec3(0.0f, 1.0f, 0.0f)
 		);
-  
-		setFront(glm::normalize(m_center - m_position));
     }
 
     Camera::~Camera() = default;
@@ -93,16 +91,11 @@ namespace vkcv::camera {
     }
 
     glm::vec3 Camera::getFront() const {
-        glm::vec3 direction;
-        direction.x = std::sin(glm::radians(m_yaw)) * std::cos(glm::radians(m_pitch));
-        direction.y = std::sin(glm::radians(m_pitch));
-        direction.z = std::cos(glm::radians(m_yaw)) * std::cos(glm::radians(m_pitch));
-        return glm::normalize(direction);
+        return glm::normalize(m_center - m_position);
     }
     
     void Camera::setFront(const glm::vec3 &front) {
-		m_pitch = std::atan2(front.y, std::sqrt(front.x * front.x + front.z * front.z));
-		m_yaw = std::atan2(front.x, front.z);
+		setCenter(m_position + front);
     }
 
     const glm::vec3& Camera::getPosition() const {
@@ -128,21 +121,47 @@ namespace vkcv::camera {
 	void Camera::setUp(const glm::vec3 &up) {
 		lookAt(m_position, m_center, up);
 	}
-
-    float Camera::getPitch() const {
-        return m_pitch;
+	
+	void Camera::getAngles(float& pitch, float& yaw) {
+		const auto front = getFront();
+		
+		pitch = std::atan2(front[1], std::sqrt(
+				front[0] * front[0] + front[2] * front[2]
+		));
+		
+		yaw = std::atan2(front[0], front[2]);
+	}
+	
+	void Camera::setAngles(float pitch, float yaw) {
+		float cosPitch = std::cos(pitch);
+		
+		setFront(glm::vec3(
+				std::sin(yaw) * cosPitch,
+				std::sin(pitch),
+				std::cos(yaw) * cosPitch
+		));
+	}
+	
+	float Camera::getPitch() const {
+    	const auto front = getFront();
+    	
+        return glm::degrees(std::atan2(front[1], std::sqrt(
+        		front[0] * front[0] + front[2] * front[2]
+		)));
     }
 
     void Camera::setPitch(float pitch) {
-        m_pitch = pitch;
+		setAngles(glm::radians(pitch), glm::radians(getYaw()));
     }
 
     float Camera::getYaw() const {
-        return m_yaw;
+		const auto front = getFront();
+	
+		return glm::degrees(std::atan2(front[0], front[2]));
     }
 
     void Camera::setYaw(float yaw) {
-        m_yaw = yaw;
+		setAngles(glm::radians(getPitch()), glm::radians(yaw));
     }
 
 }
\ No newline at end of file
diff --git a/modules/scene/src/vkcv/scene/Mesh.cpp b/modules/scene/src/vkcv/scene/Mesh.cpp
index 38e42666d4134b87c2c292e0ae3207a3581923c5..c7ba1e0f184eae8dca6e61cdff4087b023a049ae 100644
--- a/modules/scene/src/vkcv/scene/Mesh.cpp
+++ b/modules/scene/src/vkcv/scene/Mesh.cpp
@@ -82,6 +82,8 @@ namespace vkcv::scene {
 	static glm::vec3 projectPoint(const glm::mat4& transform, const glm::vec3& point) {
 		const glm::vec4 position = transform * glm::vec4(point, 1.0f);
 		
+		//std::cout << "POS: " << position.x << " " << position.y << " " << position.z << " " << position.w << std::endl;
+		
 		return glm::vec3(
 				position[0] / position[3],
 				position[1] / position[3],
@@ -95,7 +97,7 @@ namespace vkcv::scene {
 				glm::vec3(+1.0f, +1.0f, +1.0f)
 		);
 		
-		return frustum.intersects(bounds);
+		return bounds.intersects(frustum);
 	}
 	
 	void Mesh::recordDrawcalls(const glm::mat4& viewProjection,
@@ -118,6 +120,7 @@ namespace vkcv::scene {
 			}
 			
 			if (!checkFrustum(aabb)) {
+				m_drawcalls[i].instanceCount = 2;
 				continue;
 			}
 			
diff --git a/modules/scene/src/vkcv/scene/Scene.cpp b/modules/scene/src/vkcv/scene/Scene.cpp
index aa8c83b4a5f9f280c81c4e78f01f5f3d52615c5d..e85bb5c900815e7a19e703ea48c645f0b28b5467 100644
--- a/modules/scene/src/vkcv/scene/Scene.cpp
+++ b/modules/scene/src/vkcv/scene/Scene.cpp
@@ -66,6 +66,10 @@ namespace vkcv::scene {
 		return m_materials[index].m_data;
 	}
 	
+	std::ostream& operator << (std::ostream& out, const glm::vec3& vec) {
+		return out << vec.x << " " << vec.y << " " << vec.z;
+	}
+	
 	void Scene::recordDrawcalls(CommandStreamHandle       		&cmdStream,
 								const camera::Camera			&camera,
 								const PassHandle                &pass,
@@ -74,6 +78,8 @@ namespace vkcv::scene {
 		std::vector<glm::mat4> matrices;
 		std::vector<DrawcallInfo> drawcalls;
 		
+		std::cout << camera.getPosition() << " | " << camera.getFront() << std::endl;
+		
 		const glm::mat4 viewProjection = camera.getMVP();
 		
 		for (auto& node : m_nodes) {
diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp
index 28de0add70ec9e91c87ed714165b0401f2737be1..37d3d35b7f0c3cbed09d6c472cc07ea561e16d27 100644
--- a/projects/first_scene/src/main.cpp
+++ b/projects/first_scene/src/main.cpp
@@ -25,8 +25,13 @@ int main(int argc, const char** argv) {
 	vkcv::camera::CameraManager cameraManager(window);
 	uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
 	uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
-
-	cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3));
+	
+	glm::vec3 pos (-7.96175f, 0.889579f, -0.514462f);
+	glm::vec3 front (-0.504636f, -0.603207f, 0.617643f);
+	cameraManager.getCamera(camIndex0).setPosition(pos);
+	cameraManager.getCamera(camIndex0).setFront(front);
+	
+	//cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3));
 	cameraManager.getCamera(camIndex0).setNearFar(0.1f, 30.0f);
 	
 	cameraManager.getCamera(camIndex1).setNearFar(0.1f, 30.0f);