add a little animation
This commit is contained in:
parent
c600fa082c
commit
82638f7ad3
19
src/lib.rs
19
src/lib.rs
|
|
@ -1,6 +1,9 @@
|
||||||
use std::{error::Error, f32::consts::FRAC_PI_2};
|
use std::{
|
||||||
|
error::Error,
|
||||||
|
f32::consts::{FRAC_PI_2, PI},
|
||||||
|
};
|
||||||
|
|
||||||
use glam::{Affine3A, Mat4, Quat, UVec2, Vec3, Vec4, vec3, vec4};
|
use glam::{Affine3A, FloatExt, Mat4, Quat, UVec2, Vec3, Vec4, vec3, vec4};
|
||||||
|
|
||||||
use crate::render::mesh::GpuParams;
|
use crate::render::mesh::GpuParams;
|
||||||
|
|
||||||
|
|
@ -71,6 +74,7 @@ pub struct Core {
|
||||||
bevel_gear_desc: bevel_gear::BevelGearDesc,
|
bevel_gear_desc: bevel_gear::BevelGearDesc,
|
||||||
bevel_gear_shape: bevel_gear::BevelGearShape,
|
bevel_gear_shape: bevel_gear::BevelGearShape,
|
||||||
crown_gear_desc: crown_gear::CrownGearDesc,
|
crown_gear_desc: crown_gear::CrownGearDesc,
|
||||||
|
t: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn srgb_to_linear(color: Vec3) -> Vec3 {
|
fn srgb_to_linear(color: Vec3) -> Vec3 {
|
||||||
|
|
@ -162,6 +166,7 @@ impl Core {
|
||||||
bevel_gear_desc,
|
bevel_gear_desc,
|
||||||
bevel_gear_shape,
|
bevel_gear_shape,
|
||||||
crown_gear_desc,
|
crown_gear_desc,
|
||||||
|
t: 0.,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -195,6 +200,12 @@ impl Core {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let turn_teeth = self.t;
|
||||||
|
let bevel_turns = turn_teeth / self.bevel_gear_desc.teeth as f32;
|
||||||
|
let crown_skip_teeth = self.crown_gear_desc.pitch_radius.floor();
|
||||||
|
let crown_turns =
|
||||||
|
(turn_teeth.fract_gl() + crown_skip_teeth) / (2. * self.crown_gear_desc.pitch_radius);
|
||||||
|
|
||||||
set_params(
|
set_params(
|
||||||
&self.params_gear,
|
&self.params_gear,
|
||||||
vec4(0.2, 0.8, 0.1, 1.0),
|
vec4(0.2, 0.8, 0.1, 1.0),
|
||||||
|
|
@ -204,7 +215,8 @@ impl Core {
|
||||||
&self.params_cutter,
|
&self.params_cutter,
|
||||||
vec4(0.8, 0.2, 0.1, 1.0),
|
vec4(0.8, 0.2, 0.1, 1.0),
|
||||||
Affine3A::from_rotation_translation(
|
Affine3A::from_rotation_translation(
|
||||||
Quat::from_rotation_y(FRAC_PI_2 + self.bevel_gear_desc.cone_halfangle),
|
Quat::from_rotation_y(FRAC_PI_2 + self.bevel_gear_desc.cone_halfangle)
|
||||||
|
* Quat::from_rotation_z(2. * PI * crown_turns),
|
||||||
vec3(0., 0., self.bevel_gear_desc.pitch_distance()),
|
vec3(0., 0., self.bevel_gear_desc.pitch_distance()),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -290,6 +302,7 @@ impl Core {
|
||||||
let output = self.surface.get_current_texture().unwrap();
|
let output = self.surface.get_current_texture().unwrap();
|
||||||
self.render(&output.texture, args);
|
self.render(&output.texture, args);
|
||||||
output.present();
|
output.present();
|
||||||
|
self.t += 1. / 60.;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ void Viewport::paintEvent(QPaintEvent* event) {
|
||||||
if (!core)
|
if (!core)
|
||||||
recreate();
|
recreate();
|
||||||
core->redraw(args);
|
core->redraw(args);
|
||||||
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Viewport::resizeEvent(QResizeEvent* event) {
|
void Viewport::resizeEvent(QResizeEvent* event) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user