camera, add robot

This commit is contained in:
Piotr 2020-09-24 19:16:58 +02:00
parent 1ce8b44b7d
commit 7047300ca8
5 changed files with 6079 additions and 8 deletions

View File

@ -0,0 +1,13 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl Robot_01_mat
Ns 179.999996
Ka 1.000000 1.000000 1.000000
Kd 1.000000 1.000000 1.000000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
map_Kd Robot_01_Diffuse.png

File diff suppressed because it is too large Load Diff

View File

@ -12,22 +12,26 @@ pub struct ExampleClient {
camera: Camera, camera: Camera,
shader: shader::Shader, shader: shader::Shader,
show_object_info: bool, show_object_info: bool,
show_camera_info: bool,
} }
impl ExampleClient { impl ExampleClient {
pub fn create() -> ExampleClient { pub fn create() -> ExampleClient {
let mut t = Transform::default();
t.position = vec3(3.0, -1.75, -1.25);
t.scale = vec3(0.2, 0.1, 0.2);
let model = ModelComponent { let model = ModelComponent {
transform: t, transform: Transform::default(),
model: model::Model::new("resources/objects/nanosuit/nanosuit.obj"), model: model::Model::new("resources/objects/robot/robot.obj"),
}; };
ExampleClient { ExampleClient {
show_object_info: true, show_camera_info: true,
show_object_info: false,
model: model, model: model,
camera: Camera { camera: Camera {
position: Point3::new(0.0, 0.0, 3.0), position: Point3::new(0.0, 8.0, 13.0),
front: vec3(0.0, -0.4, -1.0),
up: vec3(0.0, 1.0, -0.4),
right: vec3(1.0, 0.0, 0.0),
yaw: -90.0,
pitch: -20.0,
..Camera::default() ..Camera::default()
}, },
shader: shader::Shader::from_file( shader: shader::Shader::from_file(
@ -74,6 +78,9 @@ impl Client for ExampleClient {
} }
self.camera self.camera
.enable_mouse_movement(window.get_key(Key::LeftControl) != Action::Press); .enable_mouse_movement(window.get_key(Key::LeftControl) != Action::Press);
if window.get_key(Key::O) == Action::Press {
println!("{:?}",self.camera);
}
} }
fn debug_draw(&mut self, ui: &imgui_glfw_rs::imgui::Ui) { fn debug_draw(&mut self, ui: &imgui_glfw_rs::imgui::Ui) {
@ -87,6 +94,12 @@ impl Client for ExampleClient {
{ {
self.show_object_info = !self.show_object_info; self.show_object_info = !self.show_object_info;
} }
if MenuItem::new(im_str!("Show camera info"))
.selected(self.show_camera_info)
.build(ui)
{
self.show_camera_info = !self.show_camera_info;
}
menu.end(ui); menu.end(ui);
} }
if let Some(menu) = ui.begin_menu(im_str!("Edit"), true) { if let Some(menu) = ui.begin_menu(im_str!("Edit"), true) {
@ -111,6 +124,22 @@ impl Client for ExampleClient {
} }
menu_bar.end(ui); menu_bar.end(ui);
} }
if self.show_camera_info {
let text = format!("{:?}", self.camera).replace("{","{\n").replace("}","\n}").replace("],","],\n");
Window::new(im_str!("CameraInfo"))
.size([300.0,300.0], Condition::Always)
.position(
[50.0, 50.0],
Condition::Always,
).title_bar(false)
.scroll_bar(false)
.collapsible(false)
.build(&ui, || {
ui.text(im_str!("Camera info"));
ui.separator();
ui.text(text);
});
}
if self.show_object_info { if self.show_object_info {
let mut show_window = self.show_object_info; let mut show_window = self.show_object_info;
Window::new(im_str!("Object info")) Window::new(im_str!("Object info"))

View File

@ -25,6 +25,7 @@ const SPEED: f32 = 2.5;
const SENSITIVTY: f32 = 0.1; const SENSITIVTY: f32 = 0.1;
const ZOOM: f32 = 45.0; const ZOOM: f32 = 45.0;
#[derive(Debug,Clone,Copy)]
pub struct Camera { pub struct Camera {
// Camera Attributes // Camera Attributes
pub position: Point3, pub position: Point3,

View File

@ -8,7 +8,6 @@ use imgui_glfw_rs::glfw;
use imgui_glfw_rs::glfw::{Action, Context, Key}; use imgui_glfw_rs::glfw::{Action, Context, Key};
use imgui_glfw_rs::imgui; use imgui_glfw_rs::imgui;
use imgui_glfw_rs::ImguiGLFW; use imgui_glfw_rs::ImguiGLFW;
use imgui_inspect::InspectArgsStruct;
pub struct Engine { pub struct Engine {
pub camera: Camera, pub camera: Camera,