From 7679ca4e5bf6adb7fcdc67aca843821e420855c5 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 24 Aug 2020 00:41:37 -0400 Subject: [PATCH] flip the objects to face the camera --- src/assets/positionable_object.rs | 17 ++++++++++++++++- src/assets/renderable_object.rs | 7 +++++-- src/point_cloud/point_cloud_renderer.rs | 9 ++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/assets/positionable_object.rs b/src/assets/positionable_object.rs index 8f0bf785a6..aa028b316f 100644 --- a/src/assets/positionable_object.rs +++ b/src/assets/positionable_object.rs @@ -1,6 +1,6 @@ use crate::assets::renderable_object::RenderableObject; use gl::types::*; -use nalgebra::{Vector4, Rotation3, Translation3, Matrix4, Vector3}; +use nalgebra::{Vector4, Rotation3, Translation3, Matrix4, Vector3, RealField}; use std::ffi::CString; use std::os::raw::c_char; use crate::opengl::wrapper::uniform::Uniform; @@ -51,6 +51,21 @@ impl PositionableObject { self.rotation.z = z; } + /// Add pi to x rotation + pub fn flip_x(&mut self) { + self.rotation.x += f32::pi(); + } + + /// Add pi to y rotation + pub fn flip_y(&mut self) { + self.rotation.y += f32::pi(); + } + + /// Add pi to z rotation + pub fn flip_z(&mut self) { + self.rotation.z += f32::pi(); + } + pub fn scale_nonuniform(&mut self, x: f32, y: f32, z: f32) { self.scale.x = x; self.scale.y = y; diff --git a/src/assets/renderable_object.rs b/src/assets/renderable_object.rs index dd55473844..ca3e173533 100644 --- a/src/assets/renderable_object.rs +++ b/src/assets/renderable_object.rs @@ -142,8 +142,11 @@ impl RenderableObject { let width = rgba_image.width(); let height = rgba_image.height(); - let flat_samples = rgba_image.into_flat_samples(); - let pixel_data = flat_samples.samples.as_ptr() as *const c_void; + //let flat_samples = rgba_image.into_flat_samples(); + //let pixel_data = flat_samples.samples.as_ptr() as *const c_void; + + let img_data = rgba_image.into_raw(); + let pixel_data = img_data.as_ptr() as *const c_void; self.texture.bind_as_texture_2d(); diff --git a/src/point_cloud/point_cloud_renderer.rs b/src/point_cloud/point_cloud_renderer.rs index 45b676c612..8af3803b02 100644 --- a/src/point_cloud/point_cloud_renderer.rs +++ b/src/point_cloud/point_cloud_renderer.rs @@ -279,8 +279,9 @@ impl PointCloudRenderer { let mut positionable_object = PositionableObject::new(renderable_object); - positionable_object.translate(0.0, 0.0, 15.0); - positionable_object.rotate(10.0, 8.0, 50.0); + positionable_object.translate(-5.0, 0.0, 15.0); + positionable_object.flip_y(); // flipping y and z rights the model. + positionable_object.flip_z(); positionable_object.scale_nonuniform(2.0, 1.0, 0.5); self.renderable_objects.push(positionable_object); @@ -330,7 +331,9 @@ impl PointCloudRenderer { let mut positionable_object = PositionableObject::new(renderable_object); - positionable_object.translate(6.0, 6.0, 20.0); + positionable_object.translate(5.0, 2.0, 20.0); + positionable_object.flip_y(); // flipping y and z rights the model. + positionable_object.flip_z(); positionable_object.scale(0.05); self.renderable_objects.push(positionable_object);