From 7e8781024bf7985c1d284c12c879820efc9d080d Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 2 Mar 2019 17:41:34 -0500 Subject: [PATCH] quadruped testing Former-commit-id: 50340b74d803ec84b6af43ae6d787d72bf2c2d57 --- voxygen/src/anim/character/mod.rs | 18 ++++++------ voxygen/src/anim/character/run.rs | 36 +++++++++++++----------- voxygen/src/scene/mod.rs | 46 ++++++++----------------------- 3 files changed, 40 insertions(+), 60 deletions(-) diff --git a/voxygen/src/anim/character/mod.rs b/voxygen/src/anim/character/mod.rs index 367cdf32ed..06850b38dc 100644 --- a/voxygen/src/anim/character/mod.rs +++ b/voxygen/src/anim/character/mod.rs @@ -15,10 +15,10 @@ use super::{ pub struct CharacterSkeleton { head: Bone, chest: Bone, - belt: Bone, - shorts: Bone, - l_hand: Bone, + bl_foot: Bone, + br_foot: Bone, r_hand: Bone, + l_hand: Bone, l_foot: Bone, r_foot: Bone, back: Bone, @@ -29,10 +29,10 @@ impl CharacterSkeleton { Self { head: Bone::default(), chest: Bone::default(), - belt: Bone::default(), - shorts: Bone::default(), - l_hand: Bone::default(), + br_foot: Bone::default(), + bl_foot: Bone::default(), r_hand: Bone::default(), + l_hand: Bone::default(), l_foot: Bone::default(), r_foot: Bone::default(), back: Bone::default(), @@ -47,10 +47,10 @@ impl Skeleton for CharacterSkeleton { [ FigureBoneData::new(self.head.compute_base_matrix()), FigureBoneData::new(chest_mat), - FigureBoneData::new(self.belt.compute_base_matrix()), - FigureBoneData::new(self.shorts.compute_base_matrix()), - FigureBoneData::new(self.l_hand.compute_base_matrix()), + FigureBoneData::new(self.bl_foot.compute_base_matrix()), + FigureBoneData::new(self.br_foot.compute_base_matrix()), FigureBoneData::new(self.r_hand.compute_base_matrix()), + FigureBoneData::new(self.l_hand.compute_base_matrix()), FigureBoneData::new(self.l_foot.compute_base_matrix()), FigureBoneData::new(self.r_foot.compute_base_matrix()), FigureBoneData::new(chest_mat * self.back.compute_base_matrix()), diff --git a/voxygen/src/anim/character/run.rs b/voxygen/src/anim/character/run.rs index 015feb8d89..3ad70cb68b 100644 --- a/voxygen/src/anim/character/run.rs +++ b/voxygen/src/anim/character/run.rs @@ -21,30 +21,34 @@ impl Animation for RunAnimation { time: f64, ) { let wave = (time as f32 * 12.0).sin(); + let wavecos = (time as f32 * 12.0).cos(); let wave_slow = (time as f32 * 6.0 + PI).sin(); + let wavecos_slow = (time as f32 * 6.0 + PI).cos(); let wave_dip = (wave_slow.abs() - 0.5).abs(); - skeleton.head.offset = Vec3::unit_z() * 13.0; - skeleton.head.ori = Quaternion::rotation_z(wave * 0.3); + skeleton.head.offset = Vec3::new(0.0, 0.0, 0.0); + skeleton.head.ori = Quaternion::rotation_x(0.0); - skeleton.chest.offset = Vec3::unit_z() * 9.0; - skeleton.chest.ori = Quaternion::rotation_z(wave * 0.3); + skeleton.chest.offset = Vec3::new(0.0, 0.0, 0.0); + skeleton.chest.ori = Quaternion::rotation_x(0.0); - skeleton.belt.offset = Vec3::unit_z() * 7.0; - skeleton.belt.ori = Quaternion::rotation_z(wave * 0.2); + //skeleton.br_foot.offset = Vec3::new(0.0, wavecos_slow * 1.0, wave_slow * 2.0 + wave_dip * 1.0); + //skeleton.br_foot.ori = Quaternion::rotation_x(0.0 + wave_slow * 10.1); - skeleton.shorts.offset = Vec3::unit_z() * 4.0; - skeleton.shorts.ori = Quaternion::rotation_z(wave * 0.1); + skeleton.bl_foot.offset = Vec3::new(0.0, 0.0, 80.0); + skeleton.bl_foot.ori = Quaternion::rotation_x(wave_slow * 2.0); + //skeleton.bl_foot.offset = Vec3::new(0.0, wavecos_slow * 1.0, wave_slow * 2.0 + wave_dip * 1.0); + //skeleton.bl_foot.ori = Quaternion::rotation_x(0.5 + wave_slow * 0.1); - skeleton.l_hand.offset = Vec3::new(-6.0 - wave_dip * 6.0, wave * 5.0, 11.0 - wave_dip * 6.0); - skeleton.r_hand.offset = Vec3::new(6.0 + wave_dip * 6.0, -wave * 5.0, 11.0 - wave_dip * 6.0); + //skeleton.r_hand.offset = Vec3::new(0.0, wavecos_slow * 1.0, wave_slow * 2.0 + wave_dip * 1.0); + //skeleton.r_hand.ori = Quaternion::rotation_x(0.5 + wave_slow * 0.1); + + skeleton.l_hand.offset = Vec3::new(0.0, 0.0, 0.0); + skeleton.l_hand.ori = Quaternion::rotation_x(wave_slow * 2.0); + + //skeleton.l_hand.offset = Vec3::new(0.0, wavecos_slow * 1.0, wave_slow * 2.0 + wave_dip * 1.0); + //skeleton.l_hand.ori = Quaternion::rotation_x(0.5 + wave_slow * 0.1); - skeleton.l_foot.offset = Vec3::new(-3.5, 1.0 - wave * 8.0, 3.5 - wave_dip * 4.0); - skeleton.l_foot.ori = Quaternion::rotation_x(-wave + 1.0); - skeleton.r_foot.offset = Vec3::new(3.5, 1.0 + wave * 8.0, 3.5 - wave_dip * 4.0); - skeleton.r_foot.ori = Quaternion::rotation_x(wave + 1.0); - skeleton.back.offset = Vec3::new(-9.0, 5.0, 18.0); - skeleton.back.ori = Quaternion::rotation_y(2.5); } } diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index f62fc2b8c8..5792d30ac7 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -7,8 +7,8 @@ use vek::*; use dot_vox; // Project +use common::figure::Segment; use client::Client; -use common::{comp::phys::Pos as PosComp, figure::Segment}; // Crate use crate::{ @@ -82,15 +82,12 @@ impl Scene { test_figure: Figure::new( renderer, [ - Some(load_segment("head.vox").generate_mesh(Vec3::new(-7.0, -5.5, -1.0))), - Some(load_segment("chest.vox").generate_mesh(Vec3::new(-6.0, -3.0, 0.0))), - Some(load_segment("belt.vox").generate_mesh(Vec3::new(-5.0, -3.0, 0.0))), - Some(load_segment("pants.vox").generate_mesh(Vec3::new(-5.0, -3.0, 0.0))), - Some(load_segment("hand.vox").generate_mesh(Vec3::new(-2.0, -2.0, -1.0))), - Some(load_segment("hand.vox").generate_mesh(Vec3::new(-2.0, -2.0, -1.0))), - Some(load_segment("foot.vox").generate_mesh(Vec3::new(-2.5, -3.0, -2.0))), - Some(load_segment("foot.vox").generate_mesh(Vec3::new(-2.5, -3.0, -2.0))), - Some(load_segment("sword.vox").generate_mesh(Vec3::new(-6.5, -1.0, 0.0))), + Some(load_segment("dragonhead.vox").generate_mesh(Vec3::new(2.0, -12.0, 2.0))), + Some(load_segment("dragon_body.vox").generate_mesh(Vec3::new(0.0, 0.0, 0.0))), + Some(load_segment("dragon_lfoot.vox").generate_mesh(Vec3::new(10.0, 10.0, -80.0))), + Some(load_segment("dragon_rfoot.vox").generate_mesh(Vec3::new(0.0, 10.0, -4.0))), + Some(load_segment("dragon_rfoot.vox").generate_mesh(Vec3::new(0.0, -10.0, -4.0))), + Some(load_segment("dragon_lfoot.vox").generate_mesh(Vec3::new(0.0, 0.0, 0.0))), None, None, None, @@ -98,6 +95,9 @@ impl Scene { None, None, None, + None, + None, + None, ], CharacterSkeleton::new(), ) @@ -138,22 +138,6 @@ impl Scene { /// Maintain data such as GPU constant buffers, models, etc. To be called once per tick. pub fn maintain(&mut self, renderer: &mut Renderer, client: &Client) { - // Get player position - let player_pos = match client.player() { - Some(entity) => { - client - .state() - .ecs_world() - .read_storage::() - .get(entity) - .expect("There was no position component on the player entity!") - .0 - } - None => Vec3::default(), - }; - // Alter camera position to match player - self.camera.set_focus_pos(player_pos); - // Compute camera matrices let (view_mat, proj_mat, cam_pos) = self.camera.compute_dependents(); @@ -177,15 +161,7 @@ impl Scene { &mut self.test_figure.skeleton, client.state().get_time(), ); - - // Calculate entity model matrix - let model_mat = Mat4::::translation_3d(player_pos); - //* Mat4::rotation_z(PI - entity.look_dir().x) - //* Mat4::rotation_x(entity.look_dir().y); - - self.test_figure - .update_locals(renderer, FigureLocals::new(model_mat)) - .unwrap(); + self.test_figure.update_locals(renderer, FigureLocals::default()).unwrap(); self.test_figure.update_skeleton(renderer).unwrap(); }