jump anim, quad med

This commit is contained in:
jshipsey 2022-01-16 14:06:13 -05:00
parent 5008dba413
commit ed9de26f27
3 changed files with 31 additions and 5 deletions

View File

@ -152,7 +152,9 @@ impl Animation for MountAnimation {
next.lantern.orientation = next.hand_r.orientation.inverse()
* Quaternion::rotation_x(fast * 0.1)
* Quaternion::rotation_y(fast2 * 0.1);
}
} else {
next.lantern.position = Vec3::new(s_a.lantern.0, s_a.lantern.1, s_a.lantern.2);
};
next.glider.position = Vec3::new(0.0, 0.0, 10.0);
next.glider.scale = Vec3::one() * 0.0;

View File

@ -6,7 +6,7 @@ use super::{
pub struct JumpAnimation;
impl Animation for JumpAnimation {
type Dependency<'a> = f32;
type Dependency<'a> = (f32, Vec3<f32>, Vec3<f32>);
type Skeleton = QuadrupedMediumSkeleton;
#[cfg(feature = "use-dyn-lib")]
@ -15,7 +15,7 @@ impl Animation for JumpAnimation {
#[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_jump")]
fn update_skeleton_inner<'a>(
skeleton: &Self::Skeleton,
_global_time: Self::Dependency<'a>,
(_global_time, velocity, avg_vel): Self::Dependency<'a>,
_anim_time: f32,
_rate: &mut f32,
s_a: &SkeletonAttr,
@ -33,38 +33,62 @@ impl Animation for JumpAnimation {
next.foot_bl.scale = Vec3::one() * 0.96;
next.foot_br.scale = Vec3::one() * 0.96;
next.ears.scale = Vec3::one() * 1.02;
let speed = Vec2::<f32>::from(velocity).magnitude();
let velocityalt = speed.max(1.0);
let normalize = velocityalt / 22.0;
let x_tilt = (avg_vel.z.atan2(avg_vel.xy().magnitude()) * normalize).max(-0.35);
let x_tilt = if velocityalt < 2.0 {
x_tilt.abs()
} else {
x_tilt
};
println!("{} days", x_tilt);
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
next.head.orientation = Quaternion::rotation_x(x_tilt * -0.5);
next.neck.position = Vec3::new(0.0, s_a.neck.0, s_a.neck.1);
next.neck.orientation = Quaternion::rotation_x(x_tilt * -1.0);
next.jaw.position = Vec3::new(0.0, s_a.jaw.0, s_a.jaw.1);
next.jaw.orientation = Quaternion::rotation_x(0.0);
next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1);
next.tail.orientation = Quaternion::rotation_x(-0.6 * normalize + x_tilt * 2.0);
next.torso_front.position = Vec3::new(0.0, s_a.torso_front.0, s_a.torso_front.1);
next.torso_front.orientation = Quaternion::rotation_y(0.0);
next.torso_front.orientation = Quaternion::rotation_x(x_tilt * 1.9);
next.torso_back.position = Vec3::new(0.0, s_a.torso_back.0, s_a.torso_back.1);
next.torso_back.orientation = Quaternion::rotation_x(x_tilt * -1.2);
next.ears.position = Vec3::new(0.0, s_a.ears.0, s_a.ears.1);
next.ears.orientation = Quaternion::rotation_x(x_tilt * 1.5);
next.leg_fl.position = Vec3::new(-s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2);
next.leg_fl.orientation = Quaternion::rotation_x(1.2 * normalize + x_tilt * 0.8);
next.leg_fr.position = Vec3::new(s_a.leg_f.0, s_a.leg_f.1, s_a.leg_f.2);
next.leg_fr.orientation = Quaternion::rotation_x(1.2 * normalize + x_tilt * 0.8);
next.leg_bl.position = Vec3::new(-s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2);
next.leg_bl.orientation = Quaternion::rotation_x(-0.8 * normalize + x_tilt * -0.8);
next.leg_br.position = Vec3::new(s_a.leg_b.0, s_a.leg_b.1, s_a.leg_b.2);
next.leg_br.orientation = Quaternion::rotation_x(-0.8 * normalize + x_tilt * -0.8);
next.foot_fl.position = Vec3::new(-s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2);
next.foot_fl.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
next.foot_fr.position = Vec3::new(s_a.feet_f.0, s_a.feet_f.1, s_a.feet_f.2);
next.foot_fr.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
next.foot_bl.position = Vec3::new(-s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2);
next.foot_bl.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
next.foot_br.position = Vec3::new(s_a.feet_b.0, s_a.feet_b.1, s_a.feet_b.2);
next.foot_br.orientation = Quaternion::rotation_x(-0.4 * normalize + x_tilt * -0.4);
next
}

View File

@ -1989,7 +1989,7 @@ impl FigureMgr {
(false, _, false) => {
anim::quadruped_medium::JumpAnimation::update_skeleton(
&QuadrupedMediumSkeleton::default(),
time,
(time, rel_vel, rel_avg_vel),
state.state_time,
&mut state_animation_rate,
skeleton_attr,