From c8baadc24cdc8d43d73992609ed3c412d895a122 Mon Sep 17 00:00:00 2001 From: _ <_@_> Date: Thu, 23 Dec 2021 00:43:58 +0000 Subject: [PATCH] :construction: wip: matrices are giving me grief again --- src/bin/platformer/graphics.rs | 17 +++++++++++++++-- src/bin/platformer/main.rs | 4 ++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/bin/platformer/graphics.rs b/src/bin/platformer/graphics.rs index feb5ef7..dc9bfd3 100644 --- a/src/bin/platformer/graphics.rs +++ b/src/bin/platformer/graphics.rs @@ -2,6 +2,11 @@ use std::{ collections::HashMap, }; +use glam::{ + Quat, + Vec4, +}; + use opengl_rust::{ prelude::*, gl_state::{ @@ -184,7 +189,15 @@ impl Graphics { let proj_mat = Mat4::perspective_rh_gl (fov.to_radians (), screen_size.0 / screen_size.1, 0.125, 200.0); - let view_mat = proj_mat * camera.mat; + let ( + cam_trans, + cam_rot, + _ + ) = camera.transform.clone ().decomposed (); + + let view_mat = proj_mat * + Mat4::from_quat (Quat::from_array (cam_rot).inverse ()); + //Mat4::from_translation (cam_trans.into ()) * let world_model_mat = Mat4::IDENTITY; self.passes [0].with (gl_state, || { @@ -319,7 +332,7 @@ impl Graphics { } } - if false { + if true { let sky_mvp_mat = view_mat * Mat4::from_scale ((64.0, 64.0, 64.0).into ()); self.texture_sky.bind (); diff --git a/src/bin/platformer/main.rs b/src/bin/platformer/main.rs index 602daab..a78052b 100644 --- a/src/bin/platformer/main.rs +++ b/src/bin/platformer/main.rs @@ -75,7 +75,7 @@ async fn main () -> Result <()> { for node in scene.nodes () { if let Some (c) = node.camera () { camera = Some (Camera { - mat: gltf_node_get_mat4 (&node).inverse (), + transform: node.transform ().clone (), }); } @@ -412,7 +412,7 @@ struct TriangleStream { } struct Camera { - mat: Mat4, + transform: gltf::scene::Transform, } fn gltf_node_get_mat4 (node: &gltf::Node) -> Mat4 {