|
@ -57,45 +57,45 @@ void generate_ant_rest_pose(::skeleton& skeleton, const ant_bone_set& bones, con |
|
|
const auto inverse_mesosoma_transform = math::inverse(mesosoma_transform); |
|
|
const auto inverse_mesosoma_transform = math::inverse(mesosoma_transform); |
|
|
|
|
|
|
|
|
// Build skeleton rest pose
|
|
|
// Build skeleton rest pose
|
|
|
skeleton.set_bone_transform(*bones.mesosoma, mesosoma_transform); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.procoxa_l, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "procoxa_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.profemur_l, get_bone_transform(legs_skeleton, "profemur_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.protibia_l, get_bone_transform(legs_skeleton, "protibia_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.protarsus_l, get_bone_transform(legs_skeleton, "protarsus1_l")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.procoxa_r, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "procoxa_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.profemur_r, get_bone_transform(legs_skeleton, "profemur_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.protibia_r, get_bone_transform(legs_skeleton, "protibia_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.protarsus_r, get_bone_transform(legs_skeleton, "protarsus1_r")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesocoxa_l, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "mesocoxa_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesofemur_l, get_bone_transform(legs_skeleton, "mesofemur_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesotibia_l, get_bone_transform(legs_skeleton, "mesotibia_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesotarsus_l, get_bone_transform(legs_skeleton, "mesotarsus1_l")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesocoxa_r, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "mesocoxa_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesofemur_r, get_bone_transform(legs_skeleton, "mesofemur_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesotibia_r, get_bone_transform(legs_skeleton, "mesotibia_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mesotarsus_r, get_bone_transform(legs_skeleton, "mesotarsus1_r")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.metacoxa_l, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "metacoxa_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.metafemur_l, get_bone_transform(legs_skeleton, "metafemur_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.metatibia_l, get_bone_transform(legs_skeleton, "metatibia_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.metatarsus_l, get_bone_transform(legs_skeleton, "metatarsus1_l")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.metacoxa_r, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "metacoxa_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.metafemur_r, get_bone_transform(legs_skeleton, "metafemur_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.metatibia_r, get_bone_transform(legs_skeleton, "metatibia_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.metatarsus_r, get_bone_transform(legs_skeleton, "metatarsus1_r")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.head, head_socket_transform * head_transform); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mandible_l, get_bone_transform(head_skeleton, "mandible_l") * get_bone_transform(mandibles_skeleton, "mandible_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.mandible_r, get_bone_transform(head_skeleton, "mandible_r") * get_bone_transform(mandibles_skeleton, "mandible_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.antennomere1_l, get_bone_transform(head_skeleton, "antenna_l") * get_bone_transform(antennae_skeleton, "antennomere1_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.antennomere2_l, get_bone_transform(antennae_skeleton, "antennomere2_l")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.antennomere1_r, get_bone_transform(head_skeleton, "antenna_r") * get_bone_transform(antennae_skeleton, "antennomere1_r")); |
|
|
|
|
|
skeleton.set_bone_transform(*bones.antennomere2_r, get_bone_transform(antennae_skeleton, "antennomere2_r")); |
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.mesosoma, mesosoma_transform); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.procoxa_l, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "procoxa_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.profemur_l, get_bone_transform(legs_skeleton, "profemur_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.protibia_l, get_bone_transform(legs_skeleton, "protibia_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.protarsus_l, get_bone_transform(legs_skeleton, "protarsus1_l")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.procoxa_r, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "procoxa_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.profemur_r, get_bone_transform(legs_skeleton, "profemur_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.protibia_r, get_bone_transform(legs_skeleton, "protibia_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.protarsus_r, get_bone_transform(legs_skeleton, "protarsus1_r")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.mesocoxa_l, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "mesocoxa_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mesofemur_l, get_bone_transform(legs_skeleton, "mesofemur_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mesotibia_l, get_bone_transform(legs_skeleton, "mesotibia_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mesotarsus_l, get_bone_transform(legs_skeleton, "mesotarsus1_l")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.mesocoxa_r, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "mesocoxa_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mesofemur_r, get_bone_transform(legs_skeleton, "mesofemur_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mesotibia_r, get_bone_transform(legs_skeleton, "mesotibia_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mesotarsus_r, get_bone_transform(legs_skeleton, "mesotarsus1_r")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.metacoxa_l, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "metacoxa_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.metafemur_l, get_bone_transform(legs_skeleton, "metafemur_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.metatibia_l, get_bone_transform(legs_skeleton, "metatibia_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.metatarsus_l, get_bone_transform(legs_skeleton, "metatarsus1_l")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.metacoxa_r, inverse_mesosoma_transform * get_bone_transform(legs_skeleton, "metacoxa_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.metafemur_r, get_bone_transform(legs_skeleton, "metafemur_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.metatibia_r, get_bone_transform(legs_skeleton, "metatibia_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.metatarsus_r, get_bone_transform(legs_skeleton, "metatarsus1_r")); |
|
|
|
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.head, head_socket_transform * head_transform); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mandible_l, get_bone_transform(head_skeleton, "mandible_l") * get_bone_transform(mandibles_skeleton, "mandible_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.mandible_r, get_bone_transform(head_skeleton, "mandible_r") * get_bone_transform(mandibles_skeleton, "mandible_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.antennomere1_l, get_bone_transform(head_skeleton, "antenna_l") * get_bone_transform(antennae_skeleton, "antennomere1_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.antennomere2_l, get_bone_transform(antennae_skeleton, "antennomere2_l")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.antennomere1_r, get_bone_transform(head_skeleton, "antenna_r") * get_bone_transform(antennae_skeleton, "antennomere1_r")); |
|
|
|
|
|
skeleton.set_bone_transform(bones.antennomere2_r, get_bone_transform(antennae_skeleton, "antennomere2_r")); |
|
|
|
|
|
|
|
|
if (bones.petiole) |
|
|
if (bones.petiole) |
|
|
{ |
|
|
{ |
|
@ -107,7 +107,7 @@ void generate_ant_rest_pose(::skeleton& skeleton, const ant_bone_set& bones, con |
|
|
skeleton.set_bone_transform(*bones.postpetiole, get_bone_transform(waist_skeleton, "postpetiole")); |
|
|
skeleton.set_bone_transform(*bones.postpetiole, get_bone_transform(waist_skeleton, "postpetiole")); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(*bones.gaster, get_bone_transform(waist_skeleton, "gaster") * get_bone_transform(gaster_skeleton, "gaster")); |
|
|
|
|
|
|
|
|
skeleton.set_bone_transform(bones.gaster, get_bone_transform(waist_skeleton, "gaster") * get_bone_transform(gaster_skeleton, "gaster")); |
|
|
|
|
|
|
|
|
if (bones.sting) |
|
|
if (bones.sting) |
|
|
{ |
|
|
{ |
|
@ -165,14 +165,14 @@ void generate_ant_pupa_pose(skeleton& skeleton, const ant_bone_set& bones) |
|
|
fold_protarsus_l.rotation = math::angle_axis(-protarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_protarsus_l.rotation = math::angle_axis(-protarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_protarsus_r.rotation = math::angle_axis(-protarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_protarsus_r.rotation = math::angle_axis(-protarsus_fold_angle, float3{1, 0, 0}); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.procoxa_l, rest_pose.get_relative_transform(*bones.procoxa_l) * fold_procoxa_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.procoxa_r, rest_pose.get_relative_transform(*bones.procoxa_r) * fold_procoxa_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.profemur_l, rest_pose.get_relative_transform(*bones.profemur_l) * fold_profemur_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.profemur_r, rest_pose.get_relative_transform(*bones.profemur_r) * fold_profemur_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.protibia_l, rest_pose.get_relative_transform(*bones.protibia_l) * fold_protibia_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.protibia_r, rest_pose.get_relative_transform(*bones.protibia_r) * fold_protibia_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.protarsus_l, rest_pose.get_relative_transform(*bones.protarsus_l) * fold_protarsus_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.protarsus_r, rest_pose.get_relative_transform(*bones.protarsus_r) * fold_protarsus_r); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(bones.procoxa_l, rest_pose.get_relative_transform(bones.procoxa_l) * fold_procoxa_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.procoxa_r, rest_pose.get_relative_transform(bones.procoxa_r) * fold_procoxa_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.profemur_l, rest_pose.get_relative_transform(bones.profemur_l) * fold_profemur_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.profemur_r, rest_pose.get_relative_transform(bones.profemur_r) * fold_profemur_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.protibia_l, rest_pose.get_relative_transform(bones.protibia_l) * fold_protibia_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.protibia_r, rest_pose.get_relative_transform(bones.protibia_r) * fold_protibia_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.protarsus_l, rest_pose.get_relative_transform(bones.protarsus_l) * fold_protarsus_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.protarsus_r, rest_pose.get_relative_transform(bones.protarsus_r) * fold_protarsus_r); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Fold midlegs
|
|
|
// Fold midlegs
|
|
@ -203,14 +203,14 @@ void generate_ant_pupa_pose(skeleton& skeleton, const ant_bone_set& bones) |
|
|
fold_mesotarsus_l.rotation = math::angle_axis(-mesotarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_mesotarsus_l.rotation = math::angle_axis(-mesotarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_mesotarsus_r.rotation = math::angle_axis(-mesotarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_mesotarsus_r.rotation = math::angle_axis(-mesotarsus_fold_angle, float3{1, 0, 0}); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesocoxa_l, rest_pose.get_relative_transform(*bones.mesocoxa_l) * fold_mesocoxa_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesocoxa_r, rest_pose.get_relative_transform(*bones.mesocoxa_r) * fold_mesocoxa_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesofemur_l, rest_pose.get_relative_transform(*bones.mesofemur_l) * fold_mesofemur_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesofemur_r, rest_pose.get_relative_transform(*bones.mesofemur_r) * fold_mesofemur_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesotibia_l, rest_pose.get_relative_transform(*bones.mesotibia_l) * fold_mesotibia_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesotibia_r, rest_pose.get_relative_transform(*bones.mesotibia_r) * fold_mesotibia_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesotarsus_l, rest_pose.get_relative_transform(*bones.mesotarsus_l) * fold_mesotarsus_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.mesotarsus_r, rest_pose.get_relative_transform(*bones.mesotarsus_r) * fold_mesotarsus_r); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesocoxa_l, rest_pose.get_relative_transform(bones.mesocoxa_l) * fold_mesocoxa_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesocoxa_r, rest_pose.get_relative_transform(bones.mesocoxa_r) * fold_mesocoxa_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesofemur_l, rest_pose.get_relative_transform(bones.mesofemur_l) * fold_mesofemur_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesofemur_r, rest_pose.get_relative_transform(bones.mesofemur_r) * fold_mesofemur_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesotibia_l, rest_pose.get_relative_transform(bones.mesotibia_l) * fold_mesotibia_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesotibia_r, rest_pose.get_relative_transform(bones.mesotibia_r) * fold_mesotibia_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesotarsus_l, rest_pose.get_relative_transform(bones.mesotarsus_l) * fold_mesotarsus_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.mesotarsus_r, rest_pose.get_relative_transform(bones.mesotarsus_r) * fold_mesotarsus_r); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Fold hindlegs
|
|
|
// Fold hindlegs
|
|
@ -241,14 +241,14 @@ void generate_ant_pupa_pose(skeleton& skeleton, const ant_bone_set& bones) |
|
|
fold_metatarsus_l.rotation = math::angle_axis(-metatarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_metatarsus_l.rotation = math::angle_axis(-metatarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_metatarsus_r.rotation = math::angle_axis(-metatarsus_fold_angle, float3{1, 0, 0}); |
|
|
fold_metatarsus_r.rotation = math::angle_axis(-metatarsus_fold_angle, float3{1, 0, 0}); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metacoxa_l, rest_pose.get_relative_transform(*bones.metacoxa_l) * fold_metacoxa_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metacoxa_r, rest_pose.get_relative_transform(*bones.metacoxa_r) * fold_metacoxa_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metafemur_l, rest_pose.get_relative_transform(*bones.metafemur_l) * fold_metafemur_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metafemur_r, rest_pose.get_relative_transform(*bones.metafemur_r) * fold_metafemur_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metatibia_l, rest_pose.get_relative_transform(*bones.metatibia_l) * fold_metatibia_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metatibia_r, rest_pose.get_relative_transform(*bones.metatibia_r) * fold_metatibia_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metatarsus_l, rest_pose.get_relative_transform(*bones.metatarsus_l) * fold_metatarsus_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.metatarsus_r, rest_pose.get_relative_transform(*bones.metatarsus_r) * fold_metatarsus_r); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metacoxa_l, rest_pose.get_relative_transform(bones.metacoxa_l) * fold_metacoxa_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metacoxa_r, rest_pose.get_relative_transform(bones.metacoxa_r) * fold_metacoxa_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metafemur_l, rest_pose.get_relative_transform(bones.metafemur_l) * fold_metafemur_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metafemur_r, rest_pose.get_relative_transform(bones.metafemur_r) * fold_metafemur_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metatibia_l, rest_pose.get_relative_transform(bones.metatibia_l) * fold_metatibia_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metatibia_r, rest_pose.get_relative_transform(bones.metatibia_r) * fold_metatibia_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metatarsus_l, rest_pose.get_relative_transform(bones.metatarsus_l) * fold_metatarsus_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.metatarsus_r, rest_pose.get_relative_transform(bones.metatarsus_r) * fold_metatarsus_r); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Fold head
|
|
|
// Fold head
|
|
@ -257,7 +257,7 @@ void generate_ant_pupa_pose(skeleton& skeleton, const ant_bone_set& bones) |
|
|
auto fold_head = math::transform<float>::identity(); |
|
|
auto fold_head = math::transform<float>::identity(); |
|
|
fold_head.rotation = math::angle_axis(-head_fold_angle, float3{1, 0, 0}); |
|
|
fold_head.rotation = math::angle_axis(-head_fold_angle, float3{1, 0, 0}); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.head, rest_pose.get_relative_transform(*bones.head) * fold_head); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(bones.head, rest_pose.get_relative_transform(bones.head) * fold_head); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Fold antennae
|
|
|
// Fold antennae
|
|
@ -276,10 +276,10 @@ void generate_ant_pupa_pose(skeleton& skeleton, const ant_bone_set& bones) |
|
|
fold_antennomere2_l.rotation = math::angle_axis(antennomere2_fold_angle_y, float3{0, 1, 0}) * math::angle_axis(-antennomere2_fold_angle_x, float3{1, 0, 0}); |
|
|
fold_antennomere2_l.rotation = math::angle_axis(antennomere2_fold_angle_y, float3{0, 1, 0}) * math::angle_axis(-antennomere2_fold_angle_x, float3{1, 0, 0}); |
|
|
fold_antennomere2_r.rotation = math::angle_axis(-antennomere2_fold_angle_y, float3{0, 1, 0}) * math::angle_axis(-antennomere2_fold_angle_x, float3{1, 0, 0}); |
|
|
fold_antennomere2_r.rotation = math::angle_axis(-antennomere2_fold_angle_y, float3{0, 1, 0}) * math::angle_axis(-antennomere2_fold_angle_x, float3{1, 0, 0}); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.antennomere1_l, rest_pose.get_relative_transform(*bones.antennomere1_l) * fold_antennomere1_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.antennomere1_r, rest_pose.get_relative_transform(*bones.antennomere1_r) * fold_antennomere1_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.antennomere2_l, rest_pose.get_relative_transform(*bones.antennomere2_l) * fold_antennomere2_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.antennomere2_r, rest_pose.get_relative_transform(*bones.antennomere2_r) * fold_antennomere2_r); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(bones.antennomere1_l, rest_pose.get_relative_transform(bones.antennomere1_l) * fold_antennomere1_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.antennomere1_r, rest_pose.get_relative_transform(bones.antennomere1_r) * fold_antennomere1_r); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.antennomere2_l, rest_pose.get_relative_transform(bones.antennomere2_l) * fold_antennomere2_l); |
|
|
|
|
|
pupa_pose.set_relative_transform(bones.antennomere2_r, rest_pose.get_relative_transform(bones.antennomere2_r) * fold_antennomere2_r); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Fold waist + gaster
|
|
|
// Fold waist + gaster
|
|
@ -306,7 +306,7 @@ void generate_ant_pupa_pose(skeleton& skeleton, const ant_bone_set& bones) |
|
|
pupa_pose.set_relative_transform(*bones.postpetiole, rest_pose.get_relative_transform(*bones.postpetiole) * fold_postpetiole); |
|
|
pupa_pose.set_relative_transform(*bones.postpetiole, rest_pose.get_relative_transform(*bones.postpetiole) * fold_postpetiole); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(*bones.gaster, rest_pose.get_relative_transform(*bones.gaster) * fold_gaster); |
|
|
|
|
|
|
|
|
pupa_pose.set_relative_transform(bones.gaster, rest_pose.get_relative_transform(bones.gaster) * fold_gaster); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Invert mesosoma
|
|
|
// Invert mesosoma
|
|
@ -390,42 +390,42 @@ void generate_ant_skeleton(skeleton& skeleton, ant_bone_set& bones, const ant_ph |
|
|
skeleton.add_bones(bone_index + 1); |
|
|
skeleton.add_bones(bone_index + 1); |
|
|
|
|
|
|
|
|
// Assign bone parents
|
|
|
// Assign bone parents
|
|
|
skeleton.set_bone_parent(*bones.mesosoma, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.procoxa_l, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.profemur_l, *bones.procoxa_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.protibia_l, *bones.profemur_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.protarsus_l, *bones.protibia_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.procoxa_r, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.profemur_r, *bones.procoxa_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.protibia_r, *bones.profemur_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.protarsus_r, *bones.protibia_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesocoxa_l, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesofemur_l, *bones.mesocoxa_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesotibia_l, *bones.mesofemur_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesotarsus_l, *bones.mesotibia_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesocoxa_r, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesofemur_r, *bones.mesocoxa_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesotibia_r, *bones.mesofemur_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mesotarsus_r, *bones.mesotibia_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metacoxa_l, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metafemur_l, *bones.metacoxa_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metatibia_l, *bones.metafemur_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metatarsus_l, *bones.metatibia_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metacoxa_r, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metafemur_r, *bones.metacoxa_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metatibia_r, *bones.metafemur_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.metatarsus_r, *bones.metatibia_r); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.head, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mandible_l, *bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.mandible_r, *bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.antennomere1_l, *bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.antennomere2_l, *bones.antennomere1_l); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.antennomere1_r, *bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.antennomere2_r, *bones.antennomere1_r); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(bones.mesosoma, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.procoxa_l, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.profemur_l, bones.procoxa_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.protibia_l, bones.profemur_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.protarsus_l, bones.protibia_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.procoxa_r, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.profemur_r, bones.procoxa_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.protibia_r, bones.profemur_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.protarsus_r, bones.protibia_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesocoxa_l, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesofemur_l, bones.mesocoxa_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesotibia_l, bones.mesofemur_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesotarsus_l, bones.mesotibia_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesocoxa_r, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesofemur_r, bones.mesocoxa_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesotibia_r, bones.mesofemur_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mesotarsus_r, bones.mesotibia_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metacoxa_l, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metafemur_l, bones.metacoxa_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metatibia_l, bones.metafemur_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metatarsus_l, bones.metatibia_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metacoxa_r, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metafemur_r, bones.metacoxa_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metatibia_r, bones.metafemur_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.metatarsus_r, bones.metatibia_r); |
|
|
|
|
|
skeleton.set_bone_parent(bones.head, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mandible_l, bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(bones.mandible_r, bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(bones.antennomere1_l, bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(bones.antennomere2_l, bones.antennomere1_l); |
|
|
|
|
|
skeleton.set_bone_parent(bones.antennomere1_r, bones.head); |
|
|
|
|
|
skeleton.set_bone_parent(bones.antennomere2_r, bones.antennomere1_r); |
|
|
|
|
|
|
|
|
if (bones.petiole) |
|
|
if (bones.petiole) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.petiole, *bones.mesosoma); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(*bones.petiole, bones.mesosoma); |
|
|
} |
|
|
} |
|
|
if (bones.postpetiole) |
|
|
if (bones.postpetiole) |
|
|
{ |
|
|
{ |
|
@ -435,72 +435,72 @@ void generate_ant_skeleton(skeleton& skeleton, ant_bone_set& bones, const ant_ph |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.postpetiole, *bones.mesosoma); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(*bones.postpetiole, bones.mesosoma); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (bones.postpetiole) |
|
|
if (bones.postpetiole) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.gaster, *bones.postpetiole); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(bones.gaster, *bones.postpetiole); |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
if (bones.petiole) |
|
|
if (bones.petiole) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.gaster, *bones.petiole); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(bones.gaster, *bones.petiole); |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.gaster, *bones.mesosoma); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(bones.gaster, bones.mesosoma); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (bones.sting) |
|
|
if (bones.sting) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.sting, *bones.gaster); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(*bones.sting, bones.gaster); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (bones.forewing_l) |
|
|
if (bones.forewing_l) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_parent(*bones.forewing_l, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.forewing_r, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.hindwing_l, *bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.hindwing_r, *bones.mesosoma); |
|
|
|
|
|
|
|
|
skeleton.set_bone_parent(*bones.forewing_l, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.forewing_r, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.hindwing_l, bones.mesosoma); |
|
|
|
|
|
skeleton.set_bone_parent(*bones.hindwing_r, bones.mesosoma); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Assign bone names
|
|
|
// Assign bone names
|
|
|
skeleton.set_bone_name(*bones.mesosoma, "mesosoma"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.procoxa_l, "procoxa_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.profemur_l, "profemur_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.protibia_l, "protibia_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.protarsus_l, "protarsus_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.procoxa_r, "procoxa_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.profemur_r, "profemur_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.protibia_r, "protibia_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.protarsus_r, "protarsus_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesocoxa_l, "mesocoxa_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesofemur_l, "mesofemur_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesotibia_l, "mesotibia_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesotarsus_l, "mesotarsus_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesocoxa_r, "mesocoxa_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesofemur_r, "mesofemur_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesotibia_r, "mesotibia_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mesotarsus_r, "mesotarsus_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metacoxa_l, "metacoxa_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metafemur_l, "metafemur_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metatibia_l, "metatibia_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metatarsus_l, "metatarsus_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metacoxa_r, "metacoxa_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metafemur_r, "metafemur_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metatibia_r, "metatibia_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.metatarsus_r, "metatarsus_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.head, "head"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mandible_l, "mandible_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.mandible_r, "mandible_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.antennomere1_l, "antennomere1_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.antennomere2_l, "antennomere2_l"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.antennomere1_r, "antennomere1_r"); |
|
|
|
|
|
skeleton.set_bone_name(*bones.antennomere2_r, "antennomere2_r"); |
|
|
|
|
|
|
|
|
skeleton.set_bone_name(bones.mesosoma, "mesosoma"); |
|
|
|
|
|
skeleton.set_bone_name(bones.procoxa_l, "procoxa_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.profemur_l, "profemur_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.protibia_l, "protibia_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.protarsus_l, "protarsus_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.procoxa_r, "procoxa_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.profemur_r, "profemur_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.protibia_r, "protibia_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.protarsus_r, "protarsus_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesocoxa_l, "mesocoxa_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesofemur_l, "mesofemur_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesotibia_l, "mesotibia_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesotarsus_l, "mesotarsus_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesocoxa_r, "mesocoxa_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesofemur_r, "mesofemur_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesotibia_r, "mesotibia_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mesotarsus_r, "mesotarsus_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metacoxa_l, "metacoxa_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metafemur_l, "metafemur_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metatibia_l, "metatibia_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metatarsus_l, "metatarsus_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metacoxa_r, "metacoxa_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metafemur_r, "metafemur_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metatibia_r, "metatibia_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.metatarsus_r, "metatarsus_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.head, "head"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mandible_l, "mandible_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.mandible_r, "mandible_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.antennomere1_l, "antennomere1_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.antennomere2_l, "antennomere2_l"); |
|
|
|
|
|
skeleton.set_bone_name(bones.antennomere1_r, "antennomere1_r"); |
|
|
|
|
|
skeleton.set_bone_name(bones.antennomere2_r, "antennomere2_r"); |
|
|
if (bones.petiole) |
|
|
if (bones.petiole) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_name(*bones.petiole, "petiole"); |
|
|
skeleton.set_bone_name(*bones.petiole, "petiole"); |
|
@ -509,7 +509,7 @@ void generate_ant_skeleton(skeleton& skeleton, ant_bone_set& bones, const ant_ph |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_name(*bones.postpetiole, "postpetiole"); |
|
|
skeleton.set_bone_name(*bones.postpetiole, "postpetiole"); |
|
|
} |
|
|
} |
|
|
skeleton.set_bone_name(*bones.gaster, "gaster"); |
|
|
|
|
|
|
|
|
skeleton.set_bone_name(bones.gaster, "gaster"); |
|
|
if (bones.sting) |
|
|
if (bones.sting) |
|
|
{ |
|
|
{ |
|
|
skeleton.set_bone_name(*bones.sting, "sting"); |
|
|
skeleton.set_bone_name(*bones.sting, "sting"); |
|
|