slight cleaning
This commit is contained in:
@@ -30,7 +30,7 @@ fn main() {
|
|||||||
.add_systems(Startup, setup)
|
.add_systems(Startup, setup)
|
||||||
.add_systems(Update, proto_locomotion)
|
.add_systems(Update, proto_locomotion)
|
||||||
.add_systems(Startup, spawn_controllers_example)
|
.add_systems(Startup, spawn_controllers_example)
|
||||||
.add_systems(Update, draw_skeleton_hands)
|
.add_systems(Update, update_emulated_hand_skeletons)
|
||||||
.add_systems(PreUpdate, update_hand_states)
|
.add_systems(PreUpdate, update_hand_states)
|
||||||
.add_systems(PostUpdate, draw_hand_entities)
|
.add_systems(PostUpdate, draw_hand_entities)
|
||||||
.add_systems(Startup, spawn_hand_entities)
|
.add_systems(Startup, spawn_hand_entities)
|
||||||
@@ -245,8 +245,7 @@ pub fn update_hand_states(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_skeleton_hands(
|
fn update_emulated_hand_skeletons(
|
||||||
mut gizmos: Gizmos,
|
|
||||||
right_controller_query: Query<(&GlobalTransform, With<OpenXRRightController>)>,
|
right_controller_query: Query<(&GlobalTransform, With<OpenXRRightController>)>,
|
||||||
left_controller_query: Query<(&GlobalTransform, With<OpenXRLeftController>)>,
|
left_controller_query: Query<(&GlobalTransform, With<OpenXRLeftController>)>,
|
||||||
hand_states_option: Option<ResMut<HandStatesResource>>,
|
hand_states_option: Option<ResMut<HandStatesResource>>,
|
||||||
@@ -259,8 +258,7 @@ fn draw_skeleton_hands(
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.0
|
.0
|
||||||
.compute_transform();
|
.compute_transform();
|
||||||
draw_hand_bones(
|
update_hand_bones_emulated(
|
||||||
&mut gizmos,
|
|
||||||
left_hand_transform,
|
left_hand_transform,
|
||||||
Hand::Left,
|
Hand::Left,
|
||||||
hands.left,
|
hands.left,
|
||||||
@@ -271,9 +269,7 @@ fn draw_skeleton_hands(
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.0
|
.0
|
||||||
.compute_transform();
|
.compute_transform();
|
||||||
// draw_hand(&mut gizmos, right_hand_transform, Hand::Right);
|
update_hand_bones_emulated(
|
||||||
draw_hand_bones(
|
|
||||||
&mut gizmos,
|
|
||||||
right_hand_transform,
|
right_hand_transform,
|
||||||
Hand::Right,
|
Hand::Right,
|
||||||
hands.right,
|
hands.right,
|
||||||
@@ -448,8 +444,7 @@ fn get_bone_gizmo_style(hand_bone: &HandBone) -> (f32, Color) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_hand_bones(
|
fn update_hand_bones_emulated(
|
||||||
mut gizmos: &mut Gizmos,
|
|
||||||
controller_transform: Transform,
|
controller_transform: Transform,
|
||||||
hand: Hand,
|
hand: Hand,
|
||||||
hand_state: HandState,
|
hand_state: HandState,
|
||||||
@@ -477,49 +472,26 @@ fn draw_hand_bones(
|
|||||||
let grip_curl = hand_state.grip;
|
let grip_curl = hand_state.grip;
|
||||||
let index_curl = hand_state.get_index_curl();
|
let index_curl = hand_state.get_index_curl();
|
||||||
let thumb_curl = hand_state.get_thumb_curl();
|
let thumb_curl = hand_state.get_thumb_curl();
|
||||||
//get paml quat
|
//get palm quat
|
||||||
let y = Quat::from_rotation_y(-90.0 * PI / 180.0);
|
let y = Quat::from_rotation_y(-90.0 * PI / 180.0);
|
||||||
let x = Quat::from_rotation_x(-90.0 * PI / 180.0);
|
let x = Quat::from_rotation_x(-90.0 * PI / 180.0);
|
||||||
let palm_quat = controller_quat.mul_quat(y).mul_quat(x);
|
let palm_quat = controller_quat.mul_quat(y).mul_quat(x);
|
||||||
//draw debug rays
|
|
||||||
// gizmos.ray(
|
|
||||||
// hand_translation,
|
|
||||||
// palm_quat.mul_vec3(Vec3::Z * 0.2),
|
|
||||||
// Color::BLUE,
|
|
||||||
// );
|
|
||||||
// gizmos.ray(
|
|
||||||
// hand_translation,
|
|
||||||
// palm_quat.mul_vec3(Vec3::Y * 0.2),
|
|
||||||
// Color::GREEN,
|
|
||||||
// );
|
|
||||||
// gizmos.ray(
|
|
||||||
// hand_translation,
|
|
||||||
// palm_quat.mul_vec3(Vec3::X * 0.2),
|
|
||||||
// Color::RED,
|
|
||||||
// );
|
|
||||||
//get simulated bones
|
//get simulated bones
|
||||||
let hand_transform_array: [Transform; 26] = get_simulated_open_hand_transforms(hand);
|
let hand_transform_array: [Transform; 26] = get_simulated_open_hand_transforms(hand);
|
||||||
//draw controller-palm bone(should be zero length)
|
//palm
|
||||||
let palm = hand_transform_array[HandJoint::PALM];
|
let palm = hand_transform_array[HandJoint::PALM];
|
||||||
gizmos.ray(hand_translation, palm.translation, Color::WHITE);
|
|
||||||
calc_transforms[HandJoint::PALM] = Transform {
|
calc_transforms[HandJoint::PALM] = Transform {
|
||||||
translation: hand_translation + palm.translation,
|
translation: hand_translation + palm.translation,
|
||||||
..default()
|
..default()
|
||||||
};
|
};
|
||||||
//draw palm-wrist
|
//wrist
|
||||||
let wrist = hand_transform_array[HandJoint::WRIST];
|
let wrist = hand_transform_array[HandJoint::WRIST];
|
||||||
gizmos.ray(
|
|
||||||
hand_translation + palm.translation,
|
|
||||||
palm_quat.mul_vec3(wrist.translation),
|
|
||||||
Color::GRAY,
|
|
||||||
);
|
|
||||||
calc_transforms[HandJoint::WRIST] = Transform {
|
calc_transforms[HandJoint::WRIST] = Transform {
|
||||||
translation: hand_translation + palm.translation + palm_quat.mul_vec3(wrist.translation),
|
translation: hand_translation + palm.translation + palm_quat.mul_vec3(wrist.translation),
|
||||||
..default()
|
..default()
|
||||||
};
|
};
|
||||||
|
|
||||||
//thumb
|
//thumb
|
||||||
//better finger drawing?
|
|
||||||
let thumb_joints = [
|
let thumb_joints = [
|
||||||
HandJoint::THUMB_METACARPAL,
|
HandJoint::THUMB_METACARPAL,
|
||||||
HandJoint::THUMB_PROXIMAL,
|
HandJoint::THUMB_PROXIMAL,
|
||||||
@@ -529,7 +501,6 @@ fn draw_hand_bones(
|
|||||||
let mut prior_start: Option<Vec3> = None;
|
let mut prior_start: Option<Vec3> = None;
|
||||||
let mut prior_quat: Option<Quat> = None;
|
let mut prior_quat: Option<Quat> = None;
|
||||||
let mut prior_vector: Option<Vec3> = None;
|
let mut prior_vector: Option<Vec3> = None;
|
||||||
let color = Color::RED;
|
|
||||||
let splay = Quat::from_rotation_y(splay_direction * 30.0 * PI / 180.0);
|
let splay = Quat::from_rotation_y(splay_direction * 30.0 * PI / 180.0);
|
||||||
let huh = Quat::from_rotation_x(-35.0 * PI / 180.0);
|
let huh = Quat::from_rotation_x(-35.0 * PI / 180.0);
|
||||||
let splay_quat = palm_quat.mul_quat(huh).mul_quat(splay);
|
let splay_quat = palm_quat.mul_quat(huh).mul_quat(splay);
|
||||||
@@ -542,7 +513,6 @@ fn draw_hand_bones(
|
|||||||
let thumb_prox = hand_transform_array[*bone];
|
let thumb_prox = hand_transform_array[*bone];
|
||||||
let tp_start = start + prior_vector.unwrap();
|
let tp_start = start + prior_vector.unwrap();
|
||||||
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
||||||
gizmos.ray(tp_start, tp_vector, color);
|
|
||||||
prior_start = Some(tp_start);
|
prior_start = Some(tp_start);
|
||||||
prior_quat = Some(tp_quat);
|
prior_quat = Some(tp_quat);
|
||||||
prior_vector = Some(tp_vector);
|
prior_vector = Some(tp_vector);
|
||||||
@@ -558,7 +528,6 @@ fn draw_hand_bones(
|
|||||||
+ palm_quat.mul_vec3(palm.translation)
|
+ palm_quat.mul_vec3(palm.translation)
|
||||||
+ palm_quat.mul_vec3(wrist.translation);
|
+ palm_quat.mul_vec3(wrist.translation);
|
||||||
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
||||||
gizmos.ray(tm_start, tm_vector, color);
|
|
||||||
prior_start = Some(tm_start);
|
prior_start = Some(tm_start);
|
||||||
prior_quat = Some(splay_quat);
|
prior_quat = Some(splay_quat);
|
||||||
prior_vector = Some(tm_vector);
|
prior_vector = Some(tm_vector);
|
||||||
@@ -572,7 +541,6 @@ fn draw_hand_bones(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//index
|
//index
|
||||||
//better finger drawing?
|
|
||||||
let thumb_joints = [
|
let thumb_joints = [
|
||||||
HandJoint::INDEX_METACARPAL,
|
HandJoint::INDEX_METACARPAL,
|
||||||
HandJoint::INDEX_PROXIMAL,
|
HandJoint::INDEX_PROXIMAL,
|
||||||
@@ -583,7 +551,6 @@ fn draw_hand_bones(
|
|||||||
let mut prior_start: Option<Vec3> = None;
|
let mut prior_start: Option<Vec3> = None;
|
||||||
let mut prior_quat: Option<Quat> = None;
|
let mut prior_quat: Option<Quat> = None;
|
||||||
let mut prior_vector: Option<Vec3> = None;
|
let mut prior_vector: Option<Vec3> = None;
|
||||||
let color = Color::ORANGE;
|
|
||||||
let splay = Quat::from_rotation_y(splay_direction * 10.0 * PI / 180.0);
|
let splay = Quat::from_rotation_y(splay_direction * 10.0 * PI / 180.0);
|
||||||
let splay_quat = palm_quat.mul_quat(splay);
|
let splay_quat = palm_quat.mul_quat(splay);
|
||||||
for bone in thumb_joints.iter() {
|
for bone in thumb_joints.iter() {
|
||||||
@@ -595,7 +562,6 @@ fn draw_hand_bones(
|
|||||||
let thumb_prox = hand_transform_array[*bone];
|
let thumb_prox = hand_transform_array[*bone];
|
||||||
let tp_start = start + prior_vector.unwrap();
|
let tp_start = start + prior_vector.unwrap();
|
||||||
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
||||||
gizmos.ray(tp_start, tp_vector, color);
|
|
||||||
prior_start = Some(tp_start);
|
prior_start = Some(tp_start);
|
||||||
prior_quat = Some(tp_quat);
|
prior_quat = Some(tp_quat);
|
||||||
prior_vector = Some(tp_vector);
|
prior_vector = Some(tp_vector);
|
||||||
@@ -611,7 +577,6 @@ fn draw_hand_bones(
|
|||||||
+ palm_quat.mul_vec3(palm.translation)
|
+ palm_quat.mul_vec3(palm.translation)
|
||||||
+ palm_quat.mul_vec3(wrist.translation);
|
+ palm_quat.mul_vec3(wrist.translation);
|
||||||
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
||||||
gizmos.ray(tm_start, tm_vector, color);
|
|
||||||
prior_start = Some(tm_start);
|
prior_start = Some(tm_start);
|
||||||
prior_quat = Some(splay_quat);
|
prior_quat = Some(splay_quat);
|
||||||
prior_vector = Some(tm_vector);
|
prior_vector = Some(tm_vector);
|
||||||
@@ -624,7 +589,7 @@ fn draw_hand_bones(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//better finger drawing?
|
//middle
|
||||||
let thumb_joints = [
|
let thumb_joints = [
|
||||||
HandJoint::MIDDLE_METACARPAL,
|
HandJoint::MIDDLE_METACARPAL,
|
||||||
HandJoint::MIDDLE_PROXIMAL,
|
HandJoint::MIDDLE_PROXIMAL,
|
||||||
@@ -635,7 +600,6 @@ fn draw_hand_bones(
|
|||||||
let mut prior_start: Option<Vec3> = None;
|
let mut prior_start: Option<Vec3> = None;
|
||||||
let mut prior_quat: Option<Quat> = None;
|
let mut prior_quat: Option<Quat> = None;
|
||||||
let mut prior_vector: Option<Vec3> = None;
|
let mut prior_vector: Option<Vec3> = None;
|
||||||
let color = Color::YELLOW;
|
|
||||||
let splay = Quat::from_rotation_y(splay_direction * 0.0 * PI / 180.0);
|
let splay = Quat::from_rotation_y(splay_direction * 0.0 * PI / 180.0);
|
||||||
let splay_quat = palm_quat.mul_quat(splay);
|
let splay_quat = palm_quat.mul_quat(splay);
|
||||||
for bone in thumb_joints.iter() {
|
for bone in thumb_joints.iter() {
|
||||||
@@ -647,7 +611,6 @@ fn draw_hand_bones(
|
|||||||
let thumb_prox = hand_transform_array[*bone];
|
let thumb_prox = hand_transform_array[*bone];
|
||||||
let tp_start = start + prior_vector.unwrap();
|
let tp_start = start + prior_vector.unwrap();
|
||||||
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
||||||
gizmos.ray(tp_start, tp_vector, color);
|
|
||||||
prior_start = Some(tp_start);
|
prior_start = Some(tp_start);
|
||||||
prior_quat = Some(tp_quat);
|
prior_quat = Some(tp_quat);
|
||||||
prior_vector = Some(tp_vector);
|
prior_vector = Some(tp_vector);
|
||||||
@@ -663,7 +626,6 @@ fn draw_hand_bones(
|
|||||||
+ palm_quat.mul_vec3(palm.translation)
|
+ palm_quat.mul_vec3(palm.translation)
|
||||||
+ palm_quat.mul_vec3(wrist.translation);
|
+ palm_quat.mul_vec3(wrist.translation);
|
||||||
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
||||||
gizmos.ray(tm_start, tm_vector, color);
|
|
||||||
prior_start = Some(tm_start);
|
prior_start = Some(tm_start);
|
||||||
prior_quat = Some(splay_quat);
|
prior_quat = Some(splay_quat);
|
||||||
prior_vector = Some(tm_vector);
|
prior_vector = Some(tm_vector);
|
||||||
@@ -675,7 +637,7 @@ fn draw_hand_bones(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//better finger drawing?
|
//ring
|
||||||
let thumb_joints = [
|
let thumb_joints = [
|
||||||
HandJoint::RING_METACARPAL,
|
HandJoint::RING_METACARPAL,
|
||||||
HandJoint::RING_PROXIMAL,
|
HandJoint::RING_PROXIMAL,
|
||||||
@@ -686,7 +648,6 @@ fn draw_hand_bones(
|
|||||||
let mut prior_start: Option<Vec3> = None;
|
let mut prior_start: Option<Vec3> = None;
|
||||||
let mut prior_quat: Option<Quat> = None;
|
let mut prior_quat: Option<Quat> = None;
|
||||||
let mut prior_vector: Option<Vec3> = None;
|
let mut prior_vector: Option<Vec3> = None;
|
||||||
let color = Color::GREEN;
|
|
||||||
let splay = Quat::from_rotation_y(splay_direction * -10.0 * PI / 180.0);
|
let splay = Quat::from_rotation_y(splay_direction * -10.0 * PI / 180.0);
|
||||||
let splay_quat = palm_quat.mul_quat(splay);
|
let splay_quat = palm_quat.mul_quat(splay);
|
||||||
for bone in thumb_joints.iter() {
|
for bone in thumb_joints.iter() {
|
||||||
@@ -698,7 +659,6 @@ fn draw_hand_bones(
|
|||||||
let thumb_prox = hand_transform_array[*bone];
|
let thumb_prox = hand_transform_array[*bone];
|
||||||
let tp_start = start + prior_vector.unwrap();
|
let tp_start = start + prior_vector.unwrap();
|
||||||
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
||||||
gizmos.ray(tp_start, tp_vector, color);
|
|
||||||
prior_start = Some(tp_start);
|
prior_start = Some(tp_start);
|
||||||
prior_quat = Some(tp_quat);
|
prior_quat = Some(tp_quat);
|
||||||
prior_vector = Some(tp_vector);
|
prior_vector = Some(tp_vector);
|
||||||
@@ -714,7 +674,6 @@ fn draw_hand_bones(
|
|||||||
+ palm_quat.mul_vec3(palm.translation)
|
+ palm_quat.mul_vec3(palm.translation)
|
||||||
+ palm_quat.mul_vec3(wrist.translation);
|
+ palm_quat.mul_vec3(wrist.translation);
|
||||||
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
||||||
gizmos.ray(tm_start, tm_vector, color);
|
|
||||||
prior_start = Some(tm_start);
|
prior_start = Some(tm_start);
|
||||||
prior_quat = Some(splay_quat);
|
prior_quat = Some(splay_quat);
|
||||||
prior_vector = Some(tm_vector);
|
prior_vector = Some(tm_vector);
|
||||||
@@ -727,7 +686,7 @@ fn draw_hand_bones(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//better finger drawing?
|
//little
|
||||||
let thumb_joints = [
|
let thumb_joints = [
|
||||||
HandJoint::LITTLE_METACARPAL,
|
HandJoint::LITTLE_METACARPAL,
|
||||||
HandJoint::LITTLE_PROXIMAL,
|
HandJoint::LITTLE_PROXIMAL,
|
||||||
@@ -738,7 +697,6 @@ fn draw_hand_bones(
|
|||||||
let mut prior_start: Option<Vec3> = None;
|
let mut prior_start: Option<Vec3> = None;
|
||||||
let mut prior_quat: Option<Quat> = None;
|
let mut prior_quat: Option<Quat> = None;
|
||||||
let mut prior_vector: Option<Vec3> = None;
|
let mut prior_vector: Option<Vec3> = None;
|
||||||
let color = Color::BLUE;
|
|
||||||
let splay = Quat::from_rotation_y(splay_direction * -20.0 * PI / 180.0);
|
let splay = Quat::from_rotation_y(splay_direction * -20.0 * PI / 180.0);
|
||||||
let splay_quat = palm_quat.mul_quat(splay);
|
let splay_quat = palm_quat.mul_quat(splay);
|
||||||
for bone in thumb_joints.iter() {
|
for bone in thumb_joints.iter() {
|
||||||
@@ -750,7 +708,6 @@ fn draw_hand_bones(
|
|||||||
let thumb_prox = hand_transform_array[*bone];
|
let thumb_prox = hand_transform_array[*bone];
|
||||||
let tp_start = start + prior_vector.unwrap();
|
let tp_start = start + prior_vector.unwrap();
|
||||||
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
let tp_vector = tp_quat.mul_vec3(thumb_prox.translation);
|
||||||
gizmos.ray(tp_start, tp_vector, color);
|
|
||||||
prior_start = Some(tp_start);
|
prior_start = Some(tp_start);
|
||||||
prior_quat = Some(tp_quat);
|
prior_quat = Some(tp_quat);
|
||||||
prior_vector = Some(tp_vector);
|
prior_vector = Some(tp_vector);
|
||||||
@@ -766,7 +723,6 @@ fn draw_hand_bones(
|
|||||||
+ palm_quat.mul_vec3(palm.translation)
|
+ palm_quat.mul_vec3(palm.translation)
|
||||||
+ palm_quat.mul_vec3(wrist.translation);
|
+ palm_quat.mul_vec3(wrist.translation);
|
||||||
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
let tm_vector = palm_quat.mul_vec3(thumb_meta.translation);
|
||||||
gizmos.ray(tm_start, tm_vector, color);
|
|
||||||
prior_start = Some(tm_start);
|
prior_start = Some(tm_start);
|
||||||
prior_quat = Some(splay_quat);
|
prior_quat = Some(splay_quat);
|
||||||
prior_vector = Some(tm_vector);
|
prior_vector = Some(tm_vector);
|
||||||
|
|||||||
Reference in New Issue
Block a user