From: Clifton Palmer Date: Wed, 4 Dec 2024 10:41:36 +0000 (+0200) Subject: Squashed commit of the following: X-Git-Url: http://git.purplebirdman.com/william-skin.git/commitdiff_plain/35a4c6f3a69fe09240d6edc885c0d63539e4fe82 Squashed commit of the following: * Moved tracking collision shape for more realistic head movement * Refactored TrackingBone3D * Refactored TrackingBone3D_head * Reparenting ORG-face and ORG-hair bones in blender created a proper hierarchy for the head rotation --- diff --git a/TrackingBone3D.gd b/TrackingBone3D.gd index a4ba007..2f74d14 100644 --- a/TrackingBone3D.gd +++ b/TrackingBone3D.gd @@ -4,14 +4,16 @@ class_name TrackingBone3D extends SkeletonModifier3D enum Axis { - X_plus, Y_plus, Z_plus + X_plus, Y_plus, Z_plus, X_minus, Y_minus, Z_minus } @export_enum(" ") var bone: String @export var aim_axis := Axis.Z_plus -@export var pivot_axis := Axis.Y_plus @export var target: Vector3 = Vector3(0, 0, 0) +var _skeleton: Skeleton3D +var _bone_idx: int + func _validate_property(property: Dictionary) -> void: if property.name == "bone": @@ -21,36 +23,42 @@ func _validate_property(property: Dictionary) -> void: property.hint_string = skeleton.get_concatenated_bone_names() -func _process_modification() -> void: - var skeleton: Skeleton3D = get_skeleton() - if !skeleton: - return # Never happen, but for the safety. - var bone_idx: int = skeleton.find_bone(bone) - var _parent_idx: int = skeleton.get_bone_parent(bone_idx) - var pose: Transform3D = skeleton.global_transform * skeleton.get_bone_global_pose(bone_idx) +func _ready() -> void: + # for tweening bone poses + _skeleton = get_skeleton() + if not _skeleton: + push_error("Expected a skeleton!") + _bone_idx = _skeleton.find_bone(bone) + +func _process_modification() -> void: + var pose: Transform3D = _skeleton.global_transform * _skeleton.get_bone_global_pose(_bone_idx) var looked_at: Transform3D = _w_look_at(pose) - #var looked_at: Transform3D = pose.looking_at(target, Vector3.UP) - #var axis: Vector3 = looked_at.basis.y - #looked_at = looked_at.rotated(axis, PI) - skeleton.set_bone_global_pose( - bone_idx, + _skeleton.set_bone_global_pose( + _bone_idx, Transform3D( - (skeleton.global_transform.affine_inverse() * looked_at).basis.orthonormalized(), - skeleton.get_bone_global_pose(bone_idx).origin + (_skeleton.global_transform.affine_inverse() * looked_at).basis.orthonormalized(), + _skeleton.get_bone_global_pose(_bone_idx).origin ) ) func _w_look_at(from: Transform3D) -> Transform3D: - # y look is default - var w: Vector3 = from.basis.x + var w: Vector3 - if aim_axis == Axis.X_plus: + if aim_axis == Axis.Y_plus: + w = from.basis.x + elif aim_axis == Axis.X_plus: w = from.basis.z elif aim_axis == Axis.Z_plus: w = from.basis.y + elif aim_axis == Axis.Y_minus: + w = w.inverse() + elif aim_axis == Axis.X_minus: + w = from.basis.y.inverse() + elif aim_axis == Axis.Z_minus: + w = from.basis.y.inverse() var t_v: Vector3 = target - from.origin var v_y: Vector3 = t_v.normalized() diff --git a/TrackingBone3D_head.gd b/TrackingBone3D_head.gd index 04e6938..c1d3913 100644 --- a/TrackingBone3D_head.gd +++ b/TrackingBone3D_head.gd @@ -5,7 +5,13 @@ extends SkeletonModifier3D @export_enum(" ") var bone: String @export var target: Vector3 = Vector3(0, 0, 0) +@export var influence_lerp_seconds: float = 0.5 +@export var rotation_lerp_weight: float = 0.5 +var _skeleton: Skeleton3D +var _bone_idx: int + +var old_current_pose: Transform3D = Transform3D.IDENTITY func _validate_property(property: Dictionary) -> void: if property.name == "bone": @@ -15,23 +21,55 @@ func _validate_property(property: Dictionary) -> void: property.hint_string = skeleton.get_concatenated_bone_names() +func _ready() -> void: + # for tweening influence + influence = 0 + + # for tweening bone poses + _skeleton = get_skeleton() + if not _skeleton: + push_error("Expected a skeleton!") + _bone_idx = _skeleton.find_bone(bone) + + # for smooth rotations + old_current_pose = _skeleton.global_transform * _skeleton.get_bone_global_pose(_bone_idx) + + +func tween_influence(goal_weight: float) -> void: + create_tween().tween_method( + _interpolate_influence, influence, goal_weight, influence_lerp_seconds + ).set_trans(Tween.TRANS_EXPO) + + +func _interpolate_influence(weight: float) -> void: + influence = weight + + + func _process_modification() -> void: - var skeleton: Skeleton3D = get_skeleton() - if !skeleton: - return # Never happen, but for the safety. - var bone_idx: int = skeleton.find_bone(bone) - var _parent_idx: int = skeleton.get_bone_parent(bone_idx) - var pose: Transform3D = skeleton.global_transform * skeleton.get_bone_global_pose(bone_idx) + var current_pose: Transform3D = _skeleton.global_transform * _skeleton.get_bone_global_pose(_bone_idx) + current_pose.basis = old_current_pose.basis + var target_pose: Transform3D = current_pose.looking_at(target, Vector3.UP) + + # TODO: replace this specific code with general purpose modifier + var axis: Vector3 = target_pose.basis.y + target_pose = target_pose.rotated(axis, PI) + + # https://docs.godotengine.org/en/latest/tutorials/3d/using_transforms.html#interpolating-with-quaternions + if rotation_lerp_weight > 0: + var from := Quaternion(current_pose.basis.orthonormalized()) + var to := Quaternion(target_pose.basis.orthonormalized()) + var rot_target := from.slerp(to, rotation_lerp_weight) + target_pose.basis = Basis(rot_target) - #var looked_at: Transform3D = _w_look_at(pose, target) - var looked_at: Transform3D = pose.looking_at(target, Vector3.UP) - var axis: Vector3 = looked_at.basis.y - looked_at = looked_at.rotated(axis, PI) + # remember this! + old_current_pose = target_pose - skeleton.set_bone_global_pose( - bone_idx, + # yield until target pose has changed, then apply it? + _skeleton.set_bone_global_pose( + _bone_idx, Transform3D( - (skeleton.global_transform.affine_inverse() * looked_at).basis.orthonormalized(), - skeleton.get_bone_global_pose(bone_idx).origin + (_skeleton.global_transform.affine_inverse() * target_pose).basis.orthonormalized(), + _skeleton.get_bone_global_pose(_bone_idx).origin ) ) diff --git a/animation/hips.res b/animation/hips.res index 58b1c80..af6b17e 100644 Binary files a/animation/hips.res and b/animation/hips.res differ diff --git a/animation/idle.res b/animation/idle.res index 7397c6e..f30bd7a 100644 Binary files a/animation/idle.res and b/animation/idle.res differ diff --git a/animation/move.res b/animation/move.res index d12cbed..c91efc7 100644 Binary files a/animation/move.res and b/animation/move.res differ diff --git a/model/william.glb b/model/william.glb index 42ed896..ae6ad81 100644 Binary files a/model/william.glb and b/model/william.glb differ diff --git a/player/player.tscn b/player/player.tscn index 2aa179c..d9bcc61 100644 --- a/player/player.tscn +++ b/player/player.tscn @@ -8,15 +8,15 @@ [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_2yjd0"] +[sub_resource type="CylinderShape3D" id="CylinderShape3D_ntdse"] +radius = 4.0 + [sub_resource type="SphereShape3D" id="SphereShape3D_4dtvp"] [sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_frf40"] dof_blur_far_enabled = true dof_blur_far_distance = 20.0 -[sub_resource type="CylinderShape3D" id="CylinderShape3D_ntdse"] -radius = 5.0 - [node name="player" type="CharacterBody3D"] script = ExtResource("1_h17j6") camera_mode = "unlocked" @@ -29,6 +29,13 @@ shape = SubResource("CapsuleShape3D_2yjd0") unique_name_in_owner = true transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +[node name="headTurn" type="Area3D" parent="WilliamSkin"] +transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WilliamSkin/headTurn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -3.91559) +shape = SubResource("CylinderShape3D_ntdse") + [node name="cameraPivot" type="Node3D" parent="."] [node name="SpringArm3D" type="SpringArm3D" parent="cameraPivot"] @@ -39,14 +46,9 @@ shape = SubResource("SphereShape3D_4dtvp") attributes = SubResource("CameraAttributesPractical_frf40") fov = 80.0 -[node name="headTurn" type="Area3D" parent="."] - -[node name="CollisionShape3D" type="CollisionShape3D" parent="headTurn"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) -shape = SubResource("CylinderShape3D_ntdse") - [node name="DebugOverlay" type="CanvasLayer" parent="."] unique_name_in_owner = true +visible = false script = ExtResource("3_lokna") [node name="DebugDraw3D" type="Control" parent="DebugOverlay"] @@ -64,5 +66,5 @@ script = ExtResource("5_n0cdm") [node name="VBoxContainer" type="VBoxContainer" parent="DebugOverlay/DebugStats"] layout_mode = 2 -[connection signal="area_entered" from="headTurn" to="." method="_on_head_turn_area_entered"] -[connection signal="area_exited" from="headTurn" to="." method="_on_head_turn_area_exited"] +[connection signal="area_entered" from="WilliamSkin/headTurn" to="." method="_on_head_turn_area_entered"] +[connection signal="area_exited" from="WilliamSkin/headTurn" to="." method="_on_head_turn_area_exited"] diff --git a/william.gd b/william.gd index d0d86be..253ac50 100644 --- a/william.gd +++ b/william.gd @@ -3,17 +3,16 @@ extends Node3D @export_category("Tracking") -@export var head_influence: float = 0.5 +@export var head_influence: float = 0.6 @export var eye_influence: float = 1.0 @onready var _animation_tree: AnimationTree = $AnimationTree -@onready var _head: TrackingBone3D_head = $base/rig/Skeleton3D/head -@onready var _eye_L: TrackingBone3D = $base/rig/Skeleton3D/eye_L -@onready var _eye_R: TrackingBone3D = $base/rig/Skeleton3D/eye_R +@onready var _head: TrackingBone3D_head = $base/rig/Skeleton3D/track_head +@onready var _eye_L: TrackingBone3D = $base/rig/Skeleton3D/track_eye_L +@onready var _eye_R: TrackingBone3D = $base/rig/Skeleton3D/track_eye_R -# TODO: eye tracking func set_eyes_target(target: Vector3) -> void: for eye in [ _eye_L, _eye_R ]: eye.target = target @@ -21,11 +20,10 @@ func set_eyes_target(target: Vector3) -> void: eye.influence = eye_influence -# TODO: head tracking func set_head_target(target: Vector3) -> void: _head.target = target - _head.active = target != Vector3.ZERO - _head.influence = head_influence + _head.active = 1 + _head.tween_influence(0.0 if target == Vector3.ZERO else head_influence) # manage talking and expressions diff --git a/william.tscn b/william.tscn index 2ec47bd..689c0d4 100644 --- a/william.tscn +++ b/william.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=34 format=3 uid="uid://2tvylmtejq0u"] +[gd_scene load_steps=35 format=3 uid="uid://2tvylmtejq0u"] [ext_resource type="PackedScene" uid="uid://cd5n7um55x8ph" path="res://model/william.glb" id="1_adkxn"] [ext_resource type="Script" path="res://william.gd" id="2_0p3og"] @@ -6,6 +6,7 @@ [ext_resource type="AnimationLibrary" uid="uid://lf126l263jjc" path="res://animation/idle.res" id="3_pbx3f"] [ext_resource type="AnimationLibrary" uid="uid://i7clqa7yt16v" path="res://animation/face.res" id="5_ted5p"] [ext_resource type="AnimationLibrary" uid="uid://b5kyg75fbtsis" path="res://animation/hips.res" id="6_jmeds"] +[ext_resource type="Script" path="res://william_skeleton.gd" id="7_2sr7c"] [ext_resource type="Script" path="res://TrackingBone3D_head.gd" id="7_h7lx0"] [ext_resource type="Script" path="res://TrackingBone3D.gd" id="9_00p5l"] @@ -145,7 +146,6 @@ input_2/break_loop_at_end = true input_2/reset = true [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_uygj1"] -graph_offset = Vector2(-363.553, 124.743) nodes/Animation/node = SubResource("AnimationNodeAnimation_3lsfi") nodes/Animation/position = Vector2(-230, -100) "nodes/Animation 2/node" = SubResource("AnimationNodeAnimation_wa16o") @@ -181,7 +181,6 @@ node_connections = [&"hips_add2", 0, &"hips_direction", &"hips_add2", 1, &"motio [node name="william" instance=ExtResource("1_adkxn")] script = ExtResource("2_0p3og") -head_influence = 0.35 [node name="AnimationTree" type="AnimationTree" parent="." index="0"] tree_root = SubResource("AnimationNodeBlendTree_uygj1") @@ -207,392 +206,392 @@ libraries = { } [node name="Skeleton3D" parent="base/rig" index="0"] -bones/0/position = Vector3(-0.0241401, 0.952495, -0.106978) -bones/0/rotation = Quaternion(0.0914478, -0.0723527, -0.0300117, 0.992724) -bones/1/rotation = Quaternion(-0.0644763, -6.13824e-09, -1.28759e-08, 0.997919) +bones/0/position = Vector3(-0.0321247, 0.951928, -0.102163) +bones/0/rotation = Quaternion(0.0943431, -0.0636061, -0.0273294, 0.99313) +bones/1/rotation = Quaternion(-0.0644764, -6.13826e-09, -1.28759e-08, 0.997919) bones/1/scale = Vector3(1, 1, 1) -bones/2/rotation = Quaternion(-0.077464, -2.43602e-08, -6.62117e-08, 0.996995) +bones/2/rotation = Quaternion(-0.077464, 3.50653e-08, -6.15945e-08, 0.996995) bones/2/scale = Vector3(1, 1, 1) -bones/3/rotation = Quaternion(0.00162721, -6.33677e-08, 3.14188e-08, 0.999999) +bones/3/rotation = Quaternion(0.00162711, -1.22272e-07, 2.23079e-08, 0.999999) bones/3/scale = Vector3(1, 1, 1) -bones/4/rotation = Quaternion(0.284236, -0.00107728, 0.120708, 0.951125) +bones/4/rotation = Quaternion(0.23372, -0.00210448, 0.125811, 0.964128) bones/4/scale = Vector3(1, 1, 1) -bones/5/rotation = Quaternion(-0.0948532, 0.00936985, -0.00089289, 0.995447) -bones/6/rotation = Quaternion(-0.0932967, 0.0172724, -0.0991372, 0.99054) -bones/8/position = Vector3(-0.02414, 0.952495, -0.106978) -bones/8/rotation = Quaternion(-0.107345, -0.794182, -0.38248, 0.459849) -bones/9/position = Vector3(-0.0241401, 0.952495, -0.106978) -bones/9/rotation = Quaternion(-0.101041, 0.728719, 0.32947, 0.591786) -bones/9/scale = Vector3(1, 1, 1) -bones/10/position = Vector3(0.0935993, 0.92035, -0.0827007) -bones/10/rotation = Quaternion(-0.763665, -0.0192897, -0.0794302, 0.640417) -bones/11/position = Vector3(-0.147552, 0.938232, -0.11673) -bones/11/rotation = Quaternion(-0.763738, -0.019281, -0.0794327, 0.640331) -bones/12/position = Vector3(-0.0245438, 0.901728, 0.0847831) -bones/12/rotation = Quaternion(0.997455, -0.0172435, 0.0678393, 0.0135423) -bones/13/rotation = Quaternion(0.0130405, -9.79403e-05, -0.0116687, 0.999847) -bones/14/rotation = Quaternion(0.00256098, -1.45351e-06, -0.00176052, 0.999995) -bones/15/position = Vector3(-0.0838028, 0.906105, 0.076463) -bones/15/rotation = Quaternion(0.997455, -0.0172472, 0.0678303, 0.0135964) -bones/16/rotation = Quaternion(0.0130441, -0.000102283, -0.0116674, 0.999847) -bones/17/rotation = Quaternion(0.00146066, -1.78238e-06, -0.00237303, 0.999996) -bones/18/position = Vector3(-0.0510469, 0.903521, 0.0581472) -bones/18/rotation = Quaternion(-0.0223953, 0.630381, 0.773106, 0.0665273) -bones/19/rotation = Quaternion(-0.292066, -0.00684047, 0.0230746, 0.956095) -bones/20/rotation = Quaternion(-0.157709, -0.00232282, 0.0138456, 0.987386) -bones/21/rotation = Quaternion(-0.0727671, -0.000543609, 0.0060834, 0.99733) -bones/22/rotation = Quaternion(-0.0328932, -0.000121362, 0.00344026, 0.999453) -bones/23/position = Vector3(0.102398, 0.915809, -0.0515408) -bones/23/rotation = Quaternion(0.978064, 0.117945, 0.0545176, 0.162809) -bones/23/scale = Vector3(1.00685, 0.986434, 1.00685) -bones/24/rotation = Quaternion(-6.78789e-08, -0.073966, -5.56804e-08, 0.997261) -bones/25/rotation = Quaternion(0.165341, -0.0746736, 0.0123368, 0.983328) -bones/25/scale = Vector3(1.00031, 0.997293, 1.00249) -bones/26/rotation = Quaternion(8.55573e-08, -0.00625028, -9.57228e-09, 0.999981) -bones/27/rotation = Quaternion(-0.472916, -0.00679234, 0.0819472, 0.877262) -bones/27/scale = Vector3(0.993689, 0.998483, 1.00809) -bones/28/rotation = Quaternion(2.505e-05, 0.965918, -0.258849, -0.000225018) -bones/28/scale = Vector3(0.99967, 1.00041, 0.999919) -bones/29/position = Vector3(-0.165173, 0.935628, -0.0893493) -bones/29/rotation = Quaternion(0.995764, 0.0652217, 0.0642719, 0.00838582) -bones/29/scale = Vector3(1.00528, 0.989527, 1.00528) -bones/30/rotation = Quaternion(-7.15313e-08, 0.0400576, -9.66641e-09, 0.999197) -bones/31/rotation = Quaternion(0.141724, 0.0392182, -0.00554554, 0.989114) -bones/31/scale = Vector3(1.00027, 0.998094, 1.00168) -bones/32/rotation = Quaternion(9.83965e-09, 0.010462, 9.35165e-09, 0.999945) -bones/33/rotation = Quaternion(-0.607064, 0.0108167, 0.0710152, 0.791399) -bones/33/scale = Vector3(0.994753, 0.995047, 1.01032) -bones/34/rotation = Quaternion(0.000114935, 0.960117, -0.279598, 0.000186262) -bones/34/scale = Vector3(0.999826, 1.0002, 0.999978) -bones/35/position = Vector3(-0.00478829, 1.71771, -0.0601972) -bones/35/rotation = Quaternion(0.047597, -0.0486006, -0.00706033, 0.997659) -bones/36/rotation = Quaternion(0.168184, 0.569008, 0.588719, 0.548958) -bones/36/scale = Vector3(0.999996, 1.00001, 0.999996) -bones/37/rotation = Quaternion(-0.24113, 0.018465, -0.0778845, 0.967186) -bones/37/scale = Vector3(1, 0.999996, 1) -bones/38/rotation = Quaternion(-0.314065, 0.00747548, -0.080739, 0.945933) -bones/39/rotation = Quaternion(-0.223789, -0.00784304, 0.148644, 0.963204) -bones/39/scale = Vector3(0.999994, 1.00001, 0.999994) -bones/40/rotation = Quaternion(-0.367355, 0.26356, 0.891404, -0.0313908) -bones/40/scale = Vector3(0.999998, 1, 0.999999) -bones/41/rotation = Quaternion(0.139165, -0.122498, 0.254064, 0.949252) -bones/41/scale = Vector3(1, 0.999997, 1) -bones/42/rotation = Quaternion(0.168186, -0.569004, -0.588725, 0.548954) -bones/42/scale = Vector3(0.999999, 1, 0.999999) -bones/43/rotation = Quaternion(-0.241116, -0.0184587, 0.0779053, 0.967188) -bones/43/scale = Vector3(0.999999, 1, 0.999998) -bones/44/rotation = Quaternion(-0.314075, -0.00748114, 0.0807247, 0.94593) -bones/45/rotation = Quaternion(-0.223792, 0.00784366, -0.148643, 0.963203) -bones/45/scale = Vector3(0.999988, 1.00002, 0.999989) -bones/46/rotation = Quaternion(0.367354, 0.263563, 0.891403, 0.0313916) -bones/46/scale = Vector3(1, 0.999994, 1) -bones/47/rotation = Quaternion(0.139162, 0.122499, -0.254062, 0.949253) -bones/47/scale = Vector3(0.999998, 1, 0.999997) -bones/48/rotation = Quaternion(0.291647, -0.362609, 0.0203699, 0.884896) -bones/50/rotation = Quaternion(0.235822, 0.0209278, 0.288052, 0.927888) -bones/50/scale = Vector3(1, 1, 1) -bones/52/rotation = Quaternion(0.291647, 0.362609, -0.0203699, 0.884896) -bones/54/rotation = Quaternion(0.235828, -0.0209298, -0.288052, 0.927887) -bones/54/scale = Vector3(1, 1, 1) -bones/56/position = Vector3(0.0443385, -0.0154335, 0.157378) -bones/56/rotation = Quaternion(-0.542164, -0.1825, -0.149659, 0.806446) -bones/56/scale = Vector3(0.999999, 1, 0.999999) -bones/57/rotation = Quaternion(0.270944, -0.0956789, -0.0183004, 0.957653) -bones/57/scale = Vector3(1, 0.999997, 1) -bones/58/position = Vector3(-0.0443385, -0.0154334, 0.157378) -bones/58/rotation = Quaternion(-0.542165, 0.1825, 0.14966, 0.806445) -bones/58/scale = Vector3(0.999999, 1, 0.999999) -bones/59/rotation = Quaternion(0.270946, 0.0956789, 0.0183004, 0.957653) -bones/59/scale = Vector3(1, 1, 1) -bones/60/rotation = Quaternion(0.746153, -0.445832, -0.405328, 0.283195) +bones/5/rotation = Quaternion(-0.0948522, 0.0101894, -0.000970624, 0.995439) +bones/6/rotation = Quaternion(-0.032103, 0.0184053, -0.0968195, 0.994614) +bones/8/rotation = Quaternion(0.168183, 0.569008, 0.588719, 0.548958) +bones/8/scale = Vector3(0.999996, 1.00001, 0.999996) +bones/9/rotation = Quaternion(-0.241127, 0.0184639, -0.0778872, 0.967187) +bones/9/scale = Vector3(1, 0.999996, 1) +bones/10/rotation = Quaternion(-0.314069, 0.00747746, -0.0807343, 0.945932) +bones/11/rotation = Quaternion(-0.223787, -0.0078436, 0.14864, 0.963205) +bones/11/scale = Vector3(0.999994, 1.00001, 0.999994) +bones/12/rotation = Quaternion(-0.367354, 0.263563, 0.891403, -0.0313918) +bones/12/scale = Vector3(1, 0.999995, 1) +bones/13/rotation = Quaternion(0.139163, -0.122498, 0.254063, 0.949252) +bones/13/scale = Vector3(0.999999, 1, 0.999999) +bones/14/rotation = Quaternion(0.168186, -0.569002, -0.588728, 0.548953) +bones/14/scale = Vector3(0.999999, 1, 1) +bones/15/rotation = Quaternion(-0.241116, -0.0184588, 0.0779042, 0.967188) +bones/15/scale = Vector3(1, 1, 0.999999) +bones/16/rotation = Quaternion(-0.314071, -0.00747956, 0.0807286, 0.945931) +bones/17/rotation = Quaternion(-0.223795, 0.00784322, -0.148647, 0.963202) +bones/17/scale = Vector3(0.999989, 1.00002, 0.99999) +bones/18/rotation = Quaternion(0.367354, 0.263564, 0.891403, 0.0313917) +bones/18/scale = Vector3(1, 0.999995, 1) +bones/19/rotation = Quaternion(0.139163, 0.122498, -0.254063, 0.949252) +bones/19/scale = Vector3(1, 1, 0.999999) +bones/20/scale = Vector3(1, 1, 1) +bones/21/rotation = Quaternion(0.635867, -0.326458, 0.156479, 0.681625) +bones/21/scale = Vector3(1, 1, 1) +bones/22/rotation = Quaternion(0.235825, 0.0209287, 0.288052, 0.927887) +bones/22/scale = Vector3(1, 1, 1) +bones/23/rotation = Quaternion(0.781727, -0.342641, 0.386672, 0.349263) +bones/23/scale = Vector3(1, 1, 1) +bones/24/scale = Vector3(1, 1, 1) +bones/25/rotation = Quaternion(0.635867, 0.326458, -0.156479, 0.681625) +bones/25/scale = Vector3(1, 1, 1) +bones/26/rotation = Quaternion(0.235825, -0.0209289, -0.288052, 0.927887) +bones/26/scale = Vector3(1, 1, 1) +bones/27/rotation = Quaternion(0.781727, 0.342641, -0.386672, 0.349263) +bones/27/scale = Vector3(1, 1, 1) +bones/28/position = Vector3(0.0443385, -0.0154334, 0.157378) +bones/28/rotation = Quaternion(-0.542164, -0.1825, -0.149659, 0.806446) +bones/28/scale = Vector3(0.999998, 1, 0.999998) +bones/29/rotation = Quaternion(0.270944, -0.095679, -0.0183002, 0.957654) +bones/29/scale = Vector3(1, 0.999996, 1) +bones/30/position = Vector3(-0.0443385, -0.0154333, 0.157378) +bones/30/rotation = Quaternion(-0.542165, 0.1825, 0.14966, 0.806445) +bones/30/scale = Vector3(0.999999, 1, 0.999999) +bones/31/rotation = Quaternion(0.270946, 0.0956789, 0.0183005, 0.957653) +bones/31/scale = Vector3(1, 0.999997, 1) +bones/32/rotation = Quaternion(0.746153, -0.445831, -0.405328, 0.283195) +bones/32/scale = Vector3(1, 1, 1) +bones/33/rotation = Quaternion(0.535987, 0.0194263, 0.557477, 0.633688) +bones/33/scale = Vector3(1, 0.999999, 1) +bones/34/rotation = Quaternion(0.746153, 0.445832, 0.405328, 0.283195) +bones/34/scale = Vector3(1, 0.999999, 1) +bones/35/rotation = Quaternion(0.535987, -0.0194265, -0.557476, 0.633689) +bones/35/scale = Vector3(1, 0.999998, 1) +bones/36/rotation = Quaternion(0.702529, 0.177161, 0.677026, 0.129235) +bones/36/scale = Vector3(1, 1, 1) +bones/37/scale = Vector3(1, 1, 1) +bones/38/rotation = Quaternion(0.917471, 0.155111, 0.329905, 0.159217) +bones/38/scale = Vector3(1, 1, 1) +bones/39/rotation = Quaternion(0.702529, -0.177161, -0.677026, 0.129235) +bones/39/scale = Vector3(1, 1, 1) +bones/40/scale = Vector3(1, 0.999994, 1) +bones/41/rotation = Quaternion(0.917471, -0.155111, -0.329905, 0.159217) +bones/41/scale = Vector3(1, 1, 1) +bones/42/rotation = Quaternion(0.88889, 2.18449e-07, 4.23856e-07, 0.458121) +bones/42/scale = Vector3(1, 1, 1) +bones/43/rotation = Quaternion(0.125212, 2.232e-08, -9.64883e-08, 0.99213) +bones/43/scale = Vector3(0.999991, 1.00002, 0.999991) +bones/44/rotation = Quaternion(0.999673, -4.86008e-08, 1.55244e-09, -0.0255556) +bones/44/scale = Vector3(1, 0.999996, 1) +bones/45/rotation = Quaternion(0.999709, 0.0117809, -0.0109536, 0.0179522) +bones/45/scale = Vector3(1, 1, 1) +bones/46/rotation = Quaternion(0.999709, -0.0117809, 0.0109536, 0.0179522) +bones/46/scale = Vector3(1, 1, 1) +bones/47/rotation = Quaternion(0.00924863, -0.103836, -0.0984251, 0.989669) +bones/48/rotation = Quaternion(0.0291916, -0.410672, -0.689165, 0.596278) +bones/48/scale = Vector3(0.997058, 1.00591, 0.997058) +bones/49/position = Vector3(0.227561, 0.104019, 0.125792) +bones/49/rotation = Quaternion(0.519353, -0.11685, 0.828001, -0.176164) +bones/49/scale = Vector3(1.05744, 0.894313, 1.05744) +bones/50/rotation = Quaternion(-0.548347, 0.082123, -0.0501394, 0.830697) +bones/50/scale = Vector3(0.912266, 1.05925, 1.04385) +bones/51/position = Vector3(0.141131, 0.0399073, 0.0500296) +bones/51/rotation = Quaternion(-0.0945168, -0.403316, 0.60027, 0.684163) +bones/51/scale = Vector3(1.08267, 0.853143, 1.08267) +bones/52/rotation = Quaternion(0.00924863, 0.103836, 0.0984251, 0.989669) +bones/53/rotation = Quaternion(0.0331623, 0.413969, 0.687377, 0.595855) +bones/53/scale = Vector3(0.99771, 1.0046, 0.99771) +bones/54/position = Vector3(-0.226537, 0.104635, 0.127234) +bones/54/rotation = Quaternion(-0.518348, -0.111991, 0.828543, 0.179695) +bones/54/scale = Vector3(1.0524, 0.902896, 1.0524) +bones/55/rotation = Quaternion(-0.548756, -0.0823233, 0.0496617, 0.830436) +bones/55/scale = Vector3(0.91484, 1.06392, 1.03489) +bones/56/position = Vector3(-0.14066, 0.0391757, 0.0509401) +bones/56/rotation = Quaternion(-0.0991286, 0.409212, -0.595741, 0.683967) +bones/56/scale = Vector3(1.07963, 0.857935, 1.07963) +bones/57/rotation = Quaternion(-0.707107, 1.8717e-21, -4.79154e-21, 0.707107) +bones/57/scale = Vector3(1, 1, 1) +bones/58/rotation = Quaternion(0.985574, 5.1254e-07, 3.5186e-08, 0.169243) +bones/58/scale = Vector3(1.00001, 0.999974, 1.00001) +bones/59/rotation = Quaternion(0.350695, -4.487e-07, 5.91331e-07, 0.93649) +bones/59/scale = Vector3(0.999977, 1.00003, 0.999994) +bones/60/position = Vector3(0.02808, 0.0319368, 0.182278) +bones/60/rotation = Quaternion(-0.279568, 0.622046, 0.626205, 0.377848) bones/60/scale = Vector3(1, 0.999999, 1) -bones/61/rotation = Quaternion(0.535987, 0.0194276, 0.557475, 0.633689) -bones/61/scale = Vector3(1, 0.999995, 1) -bones/62/rotation = Quaternion(0.746154, 0.44583, 0.405328, 0.283194) +bones/61/position = Vector3(-0.0280801, 0.0319369, 0.182278) +bones/61/rotation = Quaternion(0.279568, 0.622045, 0.626205, -0.377848) +bones/61/scale = Vector3(1, 0.999999, 1) +bones/62/rotation = Quaternion(-2.14541e-09, 0.707107, 0.707107, 2.39237e-09) bones/62/scale = Vector3(1, 1, 1) -bones/63/rotation = Quaternion(0.535987, -0.0194254, -0.557478, 0.633687) -bones/63/scale = Vector3(0.999999, 1, 0.999999) -bones/64/rotation = Quaternion(0.702529, 0.177161, 0.677026, 0.129235) -bones/64/scale = Vector3(1, 1, 1) -bones/65/rotation = Quaternion(0.765799, 0.238889, 0.569536, 0.179201) -bones/65/scale = Vector3(1, 1, 1) -bones/66/rotation = Quaternion(0.917471, 0.15511, 0.329905, 0.159217) -bones/66/scale = Vector3(1, 1, 0.999999) -bones/67/rotation = Quaternion(0.702529, -0.177161, -0.677026, 0.129235) -bones/67/scale = Vector3(1, 1, 1) -bones/68/rotation = Quaternion(0.765799, -0.238889, -0.569536, 0.179201) -bones/68/scale = Vector3(1, 0.999992, 1) -bones/69/rotation = Quaternion(0.917471, -0.15511, -0.329905, 0.159217) -bones/69/scale = Vector3(1, 1, 0.999999) -bones/70/rotation = Quaternion(0.88889, 2.18449e-07, 4.23856e-07, 0.458121) -bones/71/scale = Vector3(0.999994, 1.00001, 0.999994) -bones/72/rotation = Quaternion(0.999673, -3.95862e-07, -7.64551e-09, -0.025556) -bones/72/scale = Vector3(0.999998, 1, 0.999999) -bones/73/rotation = Quaternion(0.999709, 0.0117809, -0.0109535, 0.0179522) +bones/63/rotation = Quaternion(0.716758, 0.587916, 0.374738, 0.013575) +bones/63/scale = Vector3(1.00001, 0.999983, 1.00001) +bones/64/rotation = Quaternion(0.267555, 0.003866, 0.0401717, 0.962697) +bones/64/scale = Vector3(0.999981, 1.00003, 0.999987) +bones/65/rotation = Quaternion(0.276027, -0.0101848, -0.0901629, 0.956857) +bones/65/scale = Vector3(1.00001, 0.999989, 1) +bones/66/rotation = Quaternion(0.228163, -0.00139444, -0.0302555, 0.973152) +bones/66/scale = Vector3(1.00001, 0.999978, 1.00001) +bones/67/rotation = Quaternion(-0.519632, 0.726726, 0.26696, -0.361364) +bones/67/scale = Vector3(0.999993, 1.00001, 0.999993) +bones/68/rotation = Quaternion(0.261349, 0.00584457, -0.0690943, 0.96275) +bones/68/scale = Vector3(1.00001, 0.999993, 1) +bones/69/rotation = Quaternion(0.284134, 0.00942404, -0.141973, 0.948168) +bones/69/scale = Vector3(1.00001, 0.999989, 1.00001) +bones/70/rotation = Quaternion(0.241782, 0.0107593, -0.190032, 0.95148) +bones/70/scale = Vector3(0.999968, 1.00006, 0.999969) +bones/71/rotation = Quaternion(-2.55752e-08, 0.707107, 0.707107, 2.58633e-08) +bones/71/scale = Vector3(1, 1, 1) +bones/73/rotation = Quaternion(-2.14541e-09, 0.707107, 0.707107, 2.39237e-09) bones/73/scale = Vector3(1, 1, 1) -bones/74/rotation = Quaternion(0.999709, -0.0117809, 0.0109535, 0.0179522) -bones/74/scale = Vector3(1, 1, 1) -bones/75/rotation = Quaternion(0.00924863, -0.103836, -0.098425, 0.989669) -bones/76/rotation = Quaternion(0.0277876, -0.410259, -0.688417, 0.597492) -bones/76/scale = Vector3(0.99745, 1.00512, 0.997449) -bones/77/position = Vector3(0.227838, 0.104832, 0.124917) -bones/77/rotation = Quaternion(0.519295, -0.115773, 0.828263, -0.175811) -bones/77/scale = Vector3(1.05862, 0.892322, 1.05862) -bones/78/rotation = Quaternion(-0.549957, 0.0819117, -0.0506411, 0.829623) -bones/78/scale = Vector3(0.912735, 1.05492, 1.04793) -bones/79/position = Vector3(0.141418, 0.0405531, 0.0500048) -bones/79/rotation = Quaternion(-0.0939973, -0.401055, 0.60427, 0.682039) -bones/79/scale = Vector3(1.08242, 0.853524, 1.08242) -bones/80/rotation = Quaternion(0.00924863, 0.103836, 0.098425, 0.989669) -bones/81/rotation = Quaternion(0.0280639, 0.411023, 0.68732, 0.598217) -bones/81/scale = Vector3(0.99682, 1.00639, 0.996819) -bones/82/position = Vector3(-0.22792, 0.104656, 0.125574) -bones/82/rotation = Quaternion(-0.51906, -0.113444, 0.828735, 0.175798) -bones/82/scale = Vector3(1.05488, 0.898664, 1.05488) -bones/83/rotation = Quaternion(-0.550041, -0.0811566, 0.0518989, 0.829563) -bones/83/scale = Vector3(0.910487, 1.06759, 1.03706) -bones/84/position = Vector3(-0.140706, 0.0396903, 0.0499119) -bones/84/rotation = Quaternion(-0.0952154, 0.404797, -0.598295, 0.684921) -bones/84/scale = Vector3(1.08521, 0.849138, 1.08521) -bones/85/scale = Vector3(1, 1, 1) -bones/86/rotation = Quaternion(0.985575, 2.01751e-08, 1.1749e-07, 0.169241) -bones/86/scale = Vector3(1.00003, 0.999946, 1.00003) -bones/87/rotation = Quaternion(0.350701, -5.25337e-07, 8.1125e-07, 0.936488) -bones/87/scale = Vector3(0.999953, 1.00006, 0.999988) -bones/88/position = Vector3(0.02808, 0.0319367, 0.182278) -bones/88/rotation = Quaternion(-0.279566, 0.622048, 0.626202, 0.377849) -bones/88/scale = Vector3(1, 1, 1) -bones/89/position = Vector3(-0.02808, 0.0319367, 0.182278) -bones/89/rotation = Quaternion(0.279565, 0.62205, 0.626201, -0.377849) +bones/74/rotation = Quaternion(0.716776, -0.587892, -0.37474, 0.0135654) +bones/74/scale = Vector3(1, 0.999998, 1) +bones/75/rotation = Quaternion(0.267561, -0.00387752, -0.040131, 0.962697) +bones/75/scale = Vector3(0.999994, 1.00001, 0.999995) +bones/76/rotation = Quaternion(0.27603, 0.0101844, 0.0901652, 0.956856) +bones/76/scale = Vector3(0.99999, 1.00002, 0.999987) +bones/77/rotation = Quaternion(0.228163, 0.0014021, 0.0302231, 0.973153) +bones/77/scale = Vector3(1.00003, 0.999945, 1.00002) +bones/78/rotation = Quaternion(0.519622, 0.726733, 0.266956, 0.361368) +bones/78/scale = Vector3(0.99999, 1.00002, 0.99999) +bones/79/rotation = Quaternion(0.261353, -0.00585352, 0.0691282, 0.962747) +bones/79/scale = Vector3(1.00001, 0.999988, 1) +bones/80/rotation = Quaternion(0.284131, -0.00942123, 0.141962, 0.948171) +bones/80/scale = Vector3(1, 0.999995, 1) +bones/81/rotation = Quaternion(0.241779, -0.0107562, 0.190016, 0.951484) +bones/81/scale = Vector3(0.999973, 1.00005, 0.999974) +bones/82/rotation = Quaternion(5.39184e-09, 0.707107, 0.707107, -5.10372e-09) +bones/82/scale = Vector3(1, 1, 1) +bones/84/position = Vector3(-3.72529e-09, -0.0266269, 0.160554) +bones/84/rotation = Quaternion(-0.707107, 1.01864e-09, 3.60207e-10, 0.707107) +bones/84/scale = Vector3(1, 1, 1) +bones/85/position = Vector3(-1.86265e-09, -0.0216699, 0.147152) +bones/85/rotation = Quaternion(-0.626055, 6.04994e-08, -4.58854e-08, 0.779779) +bones/87/rotation = Quaternion(-0.360016, -1.91675e-21, -4.54649e-21, 0.932946) +bones/88/position = Vector3(1.62975e-09, 0.0458171, 0.046333) +bones/88/rotation = Quaternion(0.907364, 1.49678e-07, 3.25313e-07, 0.420345) +bones/89/position = Vector3(1.83685e-14, -0.0667295, 0.179103) +bones/89/rotation = Quaternion(0.229327, -1.03392e-07, -7.7942e-08, 0.973349) bones/89/scale = Vector3(1, 1, 1) -bones/90/rotation = Quaternion(-2.49526e-09, 0.707107, 0.707107, 2.04251e-09) +bones/90/rotation = Quaternion(-0.230471, 3.48e-07, -2.74743e-08, 0.973079) bones/90/scale = Vector3(1, 1, 1) -bones/91/rotation = Quaternion(0.716782, 0.587889, 0.374735, 0.0135559) -bones/91/scale = Vector3(1.00001, 0.999985, 1.00001) -bones/92/rotation = Quaternion(0.267542, 0.00387742, 0.040129, 0.962703) -bones/92/scale = Vector3(0.999986, 1.00002, 0.999991) -bones/93/rotation = Quaternion(0.276036, -0.0101891, -0.090151, 0.956856) -bones/93/scale = Vector3(1, 0.999999, 0.999998) -bones/94/rotation = Quaternion(0.228169, -0.00139076, -0.0302721, 0.97315) -bones/94/scale = Vector3(1.00001, 0.999974, 1.00001) -bones/95/rotation = Quaternion(-0.519655, 0.726708, 0.266974, -0.361357) -bones/95/scale = Vector3(0.999991, 1.00002, 0.999991) -bones/96/rotation = Quaternion(0.261356, 0.00583617, -0.0690654, 0.962751) -bones/96/scale = Vector3(1.00001, 0.999988, 1) -bones/97/rotation = Quaternion(0.284132, 0.00943269, -0.142001, 0.948165) -bones/97/scale = Vector3(1, 0.999995, 1) -bones/98/rotation = Quaternion(0.241776, 0.0107496, -0.189988, 0.95149) -bones/98/scale = Vector3(0.999977, 1.00005, 0.999977) -bones/99/rotation = Quaternion(2.42787e-08, 0.707106, 0.707107, -2.48138e-08) -bones/99/scale = Vector3(1, 1, 1) -bones/101/scale = Vector3(0.019058, 0.019058, 0.019058) -bones/105/rotation = Quaternion(-2.49526e-09, 0.707107, 0.707107, 2.04251e-09) -bones/105/scale = Vector3(1, 1, 1) -bones/106/rotation = Quaternion(0.716789, -0.587877, -0.374739, 0.0135554) -bones/106/scale = Vector3(1, 0.999997, 1) -bones/107/rotation = Quaternion(0.267558, -0.00388545, -0.0401022, 0.962699) -bones/107/scale = Vector3(0.999995, 1.00001, 0.999996) -bones/108/rotation = Quaternion(0.27603, 0.0101908, 0.0901432, 0.956858) -bones/108/scale = Vector3(0.999988, 1.00003, 0.999985) -bones/109/rotation = Quaternion(0.228166, 0.00139621, 0.0302483, 0.973151) -bones/109/scale = Vector3(1.00004, 0.999936, 1.00003) -bones/110/rotation = Quaternion(0.519644, 0.726716, 0.266969, 0.361361) -bones/110/scale = Vector3(0.999992, 1.00002, 0.999992) -bones/111/rotation = Quaternion(0.261356, -0.00584318, 0.0690907, 0.962749) -bones/111/scale = Vector3(1.00001, 0.99999, 1) -bones/112/rotation = Quaternion(0.284133, -0.00943149, 0.141998, 0.948165) -bones/112/scale = Vector3(1, 0.999996, 1) -bones/113/rotation = Quaternion(0.241772, -0.010747, 0.189975, 0.951494) -bones/113/scale = Vector3(0.999974, 1.00005, 0.999974) -bones/114/rotation = Quaternion(-9.95018e-09, 0.707106, 0.707107, 9.49745e-09) +bones/91/position = Vector3(1.86233e-09, -0.0629948, 0.0806333) +bones/91/rotation = Quaternion(0.720382, 4.97655e-07, 5.17139e-07, 0.693578) +bones/92/rotation = Quaternion(0.993959, -0.0792359, -0.0118518, 0.0750137) +bones/92/scale = Vector3(1, 0.999999, 1) +bones/93/rotation = Quaternion(-0.407506, -0.0263003, 0.202203, 0.890147) +bones/93/scale = Vector3(1, 1, 1) +bones/94/rotation = Quaternion(-0.743148, -0.119128, 0.346344, 0.559987) +bones/94/scale = Vector3(1, 0.999999, 1) +bones/95/rotation = Quaternion(0.993959, 0.0792361, 0.0118517, 0.0750136) +bones/95/scale = Vector3(1, 0.999998, 1) +bones/96/rotation = Quaternion(-0.407506, 0.0263004, -0.202202, 0.890147) +bones/96/scale = Vector3(0.999999, 1, 1) +bones/97/rotation = Quaternion(-0.743149, 0.119128, -0.346344, 0.559987) +bones/97/scale = Vector3(1, 1, 1) +bones/98/rotation = Quaternion(-0.607258, -0.344894, -0.346702, 0.626166) +bones/98/scale = Vector3(1, 1, 1) +bones/99/rotation = Quaternion(-0.125003, -0.0514697, 0.270362, 0.953221) +bones/99/scale = Vector3(0.999994, 1.00001, 0.999994) +bones/100/rotation = Quaternion(-0.60726, 0.344893, 0.346704, 0.626163) +bones/100/scale = Vector3(1, 1, 1) +bones/101/rotation = Quaternion(-0.124997, 0.051468, -0.270363, 0.953221) +bones/101/scale = Vector3(0.999995, 1.00001, 0.999995) +bones/102/position = Vector3(-3.06542e-09, -0.0216296, 0.199498) +bones/102/rotation = Quaternion(-0.562411, -0.349752, -0.375741, 0.648218) +bones/102/scale = Vector3(0.999998, 1, 0.999998) +bones/103/rotation = Quaternion(-0.0153996, 0.0395324, 0.239398, 0.969994) +bones/103/scale = Vector3(1, 0.999992, 1) +bones/104/position = Vector3(2.38277e-09, -0.0216296, 0.199498) +bones/104/rotation = Quaternion(-0.562412, 0.349752, 0.375742, 0.648216) +bones/104/scale = Vector3(0.999997, 1.00001, 0.999998) +bones/105/rotation = Quaternion(-0.0153969, -0.0395331, -0.239399, 0.969994) +bones/105/scale = Vector3(1, 0.99999, 1.00001) +bones/106/rotation = Quaternion(0.909589, -9.30845e-09, 3.15841e-08, -0.415509) +bones/106/scale = Vector3(1, 1, 1) +bones/108/rotation = Quaternion(-0.0975026, -0.000262186, -0.00264089, 0.995232) +bones/109/rotation = Quaternion(-0.0990569, -0.000247472, -0.00276359, 0.995078) +bones/110/rotation = Quaternion(-0.0986107, -0.000201474, -0.00199687, 0.995124) +bones/111/rotation = Quaternion(0.897883, 0.391856, -0.0802525, -0.183887) +bones/111/scale = Vector3(1, 1, 1) +bones/112/scale = Vector3(1, 1, 1) +bones/113/rotation = Quaternion(-0.0582864, 0.00497806, 0.0722378, 0.99567) +bones/114/rotation = Quaternion(-0.0621172, 0.00480661, 0.0854612, 0.994392) bones/114/scale = Vector3(1, 1, 1) -bones/116/scale = Vector3(0.019058, 0.019058, 0.019058) -bones/120/position = Vector3(-9.31329e-10, -0.0266268, 0.160554) -bones/120/rotation = Quaternion(-0.707107, -2.3357e-09, -5.24687e-10, 0.707107) -bones/120/scale = Vector3(1, 1, 1) -bones/121/position = Vector3(1.86264e-09, -0.0216696, 0.147152) -bones/121/rotation = Quaternion(-0.626053, 1.53152e-08, -1.00677e-07, 0.779781) -bones/123/rotation = Quaternion(-0.360016, 8.24629e-20, 2.55455e-20, 0.932946) -bones/124/position = Vector3(2.21196e-09, 0.0458171, 0.046333) -bones/124/rotation = Quaternion(0.907365, 1.50718e-07, 3.25344e-07, 0.420345) -bones/124/scale = Vector3(1, 1, 1) -bones/125/position = Vector3(2.79398e-09, -0.0667297, 0.179103) -bones/125/rotation = Quaternion(0.229328, -1.53554e-07, 1.28874e-07, 0.973349) -bones/125/scale = Vector3(1, 0.999996, 1) -bones/126/rotation = Quaternion(-0.230471, 3.48e-07, -2.74742e-08, 0.973079) -bones/126/scale = Vector3(0.999992, 1.00001, 0.999993) -bones/127/position = Vector3(5.12212e-09, -0.062995, 0.0806333) -bones/127/rotation = Quaternion(0.720382, 4.99064e-07, 5.18854e-07, 0.693578) -bones/128/rotation = Quaternion(0.993959, -0.079236, -0.0118517, 0.0750137) -bones/128/scale = Vector3(1, 0.999999, 1) -bones/129/rotation = Quaternion(-0.407506, -0.0263002, 0.202202, 0.890147) -bones/129/scale = Vector3(1, 1, 1) -bones/130/rotation = Quaternion(-0.743149, -0.119128, 0.346344, 0.559986) -bones/130/scale = Vector3(1, 0.999999, 1) -bones/131/rotation = Quaternion(0.993959, 0.0792356, 0.0118518, 0.0750135) -bones/131/scale = Vector3(0.999999, 1, 0.999999) -bones/132/rotation = Quaternion(-0.407506, 0.0263002, -0.202203, 0.890147) -bones/132/scale = Vector3(1, 1, 0.999999) -bones/133/rotation = Quaternion(-0.743149, 0.119128, -0.346344, 0.559986) -bones/133/scale = Vector3(1, 1, 1) -bones/134/rotation = Quaternion(-0.607273, -0.344885, -0.34671, 0.626151) -bones/134/scale = Vector3(1, 1, 1) -bones/135/rotation = Quaternion(-0.124955, -0.0514582, 0.27035, 0.953231) -bones/135/scale = Vector3(0.999999, 1, 0.999999) -bones/136/rotation = Quaternion(-0.607272, 0.344887, 0.34671, 0.626152) -bones/136/scale = Vector3(1, 1, 1) -bones/137/rotation = Quaternion(-0.124969, 0.0514606, -0.27036, 0.953226) -bones/137/scale = Vector3(0.999999, 1, 0.999999) -bones/138/position = Vector3(-1.34296e-09, -0.0216297, 0.199498) -bones/138/rotation = Quaternion(-0.56242, -0.349748, -0.375749, 0.648207) -bones/138/scale = Vector3(1, 0.999999, 1) -bones/139/rotation = Quaternion(-0.0153728, 0.0395392, 0.239404, 0.969993) -bones/139/scale = Vector3(0.999999, 1, 0.999999) -bones/140/position = Vector3(9.43965e-09, -0.0216297, 0.199498) -bones/140/rotation = Quaternion(-0.56242, 0.349748, 0.375749, 0.648207) -bones/140/scale = Vector3(1, 1, 1) -bones/141/rotation = Quaternion(-0.0153734, -0.039539, -0.239404, 0.969993) -bones/141/scale = Vector3(1, 1, 1) -bones/142/position = Vector3(0.00246019, 1.92793, -0.0948062) -bones/142/rotation = Quaternion(0.887682, 0.013772, 0.0471402, -0.45783) -bones/142/scale = Vector3(1, 1, 1) -bones/144/rotation = Quaternion(-0.0957592, -0.000269437, -0.00279016, 0.995401) -bones/145/rotation = Quaternion(-0.0973433, -0.000219427, -0.00235778, 0.995248) -bones/146/rotation = Quaternion(-0.0981254, -0.000153067, -0.00159432, 0.995173) -bones/147/position = Vector3(0.051224, 1.92177, -0.0358748) -bones/147/rotation = Quaternion(0.893695, 0.397357, -0.0164774, -0.207715) -bones/147/scale = Vector3(1, 1, 1) -bones/148/rotation = Quaternion(-0.113035, 0.0734297, 0.249068, 0.95906) -bones/149/rotation = Quaternion(-0.0573577, 0.00506284, 0.0739983, 0.995595) -bones/150/rotation = Quaternion(-0.0608202, 0.00495867, 0.086592, 0.994373) -bones/150/scale = Vector3(1, 1, 1) -bones/151/rotation = Quaternion(-0.0151531, 0.00523686, 0.142202, 0.989708) -bones/152/position = Vector3(0.00620212, 1.92117, 0.0123073) -bones/152/rotation = Quaternion(0.352243, 0.480796, 0.755999, -0.270602) -bones/152/scale = Vector3(1, 1, 1) -bones/153/rotation = Quaternion(-0.240693, -0.000989651, 0.0015089, 0.9706) -bones/154/rotation = Quaternion(-0.220032, -0.0041496, -0.00102188, 0.975483) -bones/155/position = Vector3(-0.0082834, 1.92099, 0.0156671) -bones/155/rotation = Quaternion(-0.0356031, 0.537204, 0.842021, 0.0338272) -bones/156/rotation = Quaternion(-0.148662, -0.000303857, -0.00175471, 0.988887) -bones/157/rotation = Quaternion(-0.142633, 8.56512e-05, 0.000533523, 0.989776) -bones/158/position = Vector3(-0.0295708, 1.92287, -0.00193774) -bones/158/rotation = Quaternion(0.578551, -0.369695, -0.553813, -0.471057) -bones/158/scale = Vector3(1, 1, 1) -bones/159/rotation = Quaternion(-0.261667, 0.000112942, -0.00217403, 0.965156) -bones/159/scale = Vector3(1, 1, 1) -bones/160/rotation = Quaternion(-0.187679, 0.00165733, 0.00168006, 0.982228) -bones/161/position = Vector3(-0.056807, 1.92383, -0.046259) -bones/161/rotation = Quaternion(0.880361, -0.392161, 0.106349, -0.24467) -bones/161/scale = Vector3(1, 1, 1) -bones/162/rotation = Quaternion(-0.113035, -0.0734297, -0.249068, 0.95906) -bones/163/rotation = Quaternion(-0.0557919, -0.00457415, -0.0784686, 0.995344) -bones/164/rotation = Quaternion(-0.0595974, -0.00532375, -0.0918597, 0.993973) -bones/164/scale = Vector3(1, 1, 1) -bones/165/rotation = Quaternion(-0.0150107, -0.00409851, -0.11455, 0.993296) -bones/166/position = Vector3(0.03291, 1.54871, -0.0676742) -bones/166/rotation = Quaternion(-0.526164, -0.537294, -0.461092, 0.471021) -bones/167/position = Vector3(0.266244, 1.53564, -0.0681466) -bones/167/rotation = Quaternion(-0.23952, -0.13388, 0.939985, -0.202814) -bones/167/scale = Vector3(1.00099, 0.998025, 1.00099) -bones/168/rotation = Quaternion(4.50227e-08, 0.0283576, 1.24321e-08, 0.999598) -bones/168/scale = Vector3(0.999999, 1, 1) -bones/169/rotation = Quaternion(0.391922, 0.0284156, -0.012112, 0.91948) -bones/169/scale = Vector3(1.00004, 0.998339, 1.00163) -bones/170/rotation = Quaternion(1.2952e-07, 0.0308665, 1.03959e-07, 0.999524) -bones/171/rotation = Quaternion(0.00469125, 0.0361762, -0.0498314, 0.998091) -bones/171/scale = Vector3(0.999006, 1.00202, 0.998977) -bones/172/position = Vector3(-0.0197298, 0.120467, 0.0346734) -bones/172/rotation = Quaternion(0.0718441, 0.386481, 0.0423991, 0.918517) -bones/173/rotation = Quaternion(0.112742, -6.40415e-05, 0.000564981, 0.993624) -bones/174/rotation = Quaternion(-0.0243421, 1.53655e-06, -0.00107798, 0.999703) -bones/175/rotation = Quaternion(0.17073, 0.850092, 0.347046, 0.357428) -bones/176/rotation = Quaternion(0.0314431, -6.59155e-05, 0.00209581, 0.999503) +bones/115/rotation = Quaternion(-0.0160829, 0.0050461, 0.141582, 0.989783) +bones/115/scale = Vector3(1, 1, 1) +bones/116/rotation = Quaternion(0.397645, 0.504989, 0.712315, -0.281907) +bones/118/rotation = Quaternion(-0.219406, -0.004253, -0.00151272, 0.975623) +bones/118/scale = Vector3(1, 1, 1) +bones/119/rotation = Quaternion(6.16402e-08, 0.577417, 0.81645, 4.35937e-08) +bones/119/scale = Vector3(1, 0.999999, 1) +bones/120/rotation = Quaternion(-0.151082, -0.000189137, -0.000743238, 0.988521) +bones/121/rotation = Quaternion(-0.142002, 0.000104141, 0.000681184, 0.989866) +bones/121/scale = Vector3(1, 1, 1) +bones/122/rotation = Quaternion(0.575312, -0.413999, -0.566364, -0.420539) +bones/123/rotation = Quaternion(-0.264699, 8.00334e-05, -0.00230667, 0.964328) +bones/123/scale = Vector3(1, 1, 1) +bones/124/rotation = Quaternion(-0.187935, 0.00173886, 0.00212732, 0.982178) +bones/125/rotation = Quaternion(0.897883, -0.391856, 0.0802525, -0.183887) +bones/125/scale = Vector3(1, 1, 1) +bones/126/scale = Vector3(1, 1, 1) +bones/127/rotation = Quaternion(-0.0584578, -0.00513411, -0.0785714, 0.99518) +bones/128/rotation = Quaternion(-0.0619739, -0.00516017, -0.092949, 0.993727) +bones/128/scale = Vector3(1, 1, 1) +bones/129/rotation = Quaternion(-0.0158285, -0.00397203, -0.114614, 0.993276) +bones/130/position = Vector3(-0.0321247, 0.951928, -0.102163) +bones/130/rotation = Quaternion(-0.106283, -0.789576, -0.382177, 0.468204) +bones/131/position = Vector3(-0.0321247, 0.951928, -0.102163) +bones/131/rotation = Quaternion(-0.0992405, 0.732314, 0.334599, 0.584731) +bones/131/scale = Vector3(1, 1, 1) +bones/132/position = Vector3(0.0862235, 0.92054, -0.0801261) +bones/132/rotation = Quaternion(-0.762841, -0.0164583, -0.0707116, 0.642497) +bones/133/position = Vector3(-0.155402, 0.936702, -0.109658) +bones/133/rotation = Quaternion(-0.762594, -0.0164738, -0.0706929, 0.642793) +bones/134/position = Vector3(-0.0286946, 0.900093, 0.0893747) +bones/134/rotation = Quaternion(0.997979, -0.0173837, 0.0594571, 0.014152) +bones/135/rotation = Quaternion(0.0107798, -9.79466e-05, -0.00941081, 0.999898) +bones/136/rotation = Quaternion(0.00201188, -1.4518e-06, -0.00112696, 0.999997) +bones/137/position = Vector3(-0.0881461, 0.904071, 0.0821486) +bones/137/rotation = Quaternion(0.997997, -0.0173251, 0.0593533, 0.0133672) +bones/138/rotation = Quaternion(0.0110247, -0.00010229, -0.00942573, 0.999895) +bones/139/rotation = Quaternion(0.00148002, -1.78311e-06, -0.00135161, 0.999998) +bones/140/position = Vector3(-0.0556928, 0.901836, 0.063238) +bones/140/rotation = Quaternion(-0.0186339, 0.628916, 0.775007, 0.0590095) +bones/141/rotation = Quaternion(-0.292863, -0.00615582, 0.0222875, 0.955875) +bones/142/rotation = Quaternion(-0.159043, -0.00183536, 0.0135201, 0.987177) +bones/143/rotation = Quaternion(-0.0734919, -0.000543583, 0.00559817, 0.99728) +bones/144/rotation = Quaternion(-0.0339642, -0.00012136, 0.00255185, 0.99942) +bones/145/position = Vector3(0.0955965, 0.915883, -0.0491515) +bones/145/rotation = Quaternion(0.978571, 0.120962, 0.047079, 0.159844) +bones/145/scale = Vector3(1.00677, 0.986594, 1.00677) +bones/146/rotation = Quaternion(3.26893e-08, -0.0729622, -1.19715e-09, 0.997335) +bones/147/rotation = Quaternion(0.160533, -0.0733715, 0.0117642, 0.984229) +bones/147/scale = Vector3(1.00029, 0.997517, 1.00227) +bones/148/rotation = Quaternion(3.43568e-08, -0.00481263, -1.79303e-08, 0.999988) +bones/149/rotation = Quaternion(-0.471894, -0.00542361, 0.0867528, 0.87736) +bones/149/scale = Vector3(0.993957, 0.998653, 1.00763) +bones/150/rotation = Quaternion(2.5087e-05, 0.965996, -0.258557, -0.000225191) +bones/150/scale = Vector3(0.99967, 1.00041, 0.999919) +bones/151/position = Vector3(-0.172456, 0.933816, -0.0819122) +bones/151/rotation = Quaternion(0.995943, 0.070269, 0.0560567, 0.00421393) +bones/151/scale = Vector3(1.00509, 0.989892, 1.00509) +bones/152/rotation = Quaternion(4.52117e-09, 0.0397239, 2.73837e-08, 0.999211) +bones/153/rotation = Quaternion(0.14083, 0.0397094, -0.00558021, 0.989221) +bones/153/scale = Vector3(1.00024, 0.998487, 1.00131) +bones/154/rotation = Quaternion(-5.37472e-08, 0.0129334, -1.84217e-08, 0.999916) +bones/155/rotation = Quaternion(-0.61113, 0.0130842, 0.0745878, 0.7879) +bones/155/scale = Vector3(0.995005, 0.995314, 1.00979) +bones/156/rotation = Quaternion(0.000112833, 0.95983, -0.280584, 0.000186715) +bones/156/scale = Vector3(0.999826, 1.0002, 0.999978) +bones/157/position = Vector3(0.0211373, 1.54827, -0.0604212) +bones/157/rotation = Quaternion(-0.504319, -0.49761, -0.466189, 0.529825) +bones/158/position = Vector3(0.254008, 1.5437, -0.0794793) +bones/158/rotation = Quaternion(-0.240239, -0.117853, 0.943355, -0.196157) +bones/158/scale = Vector3(1.00075, 0.998503, 1.00075) +bones/159/rotation = Quaternion(-3.94294e-08, 0.0209691, 6.68101e-08, 0.99978) +bones/159/scale = Vector3(0.999999, 1, 1) +bones/160/rotation = Quaternion(0.35235, 0.0222049, -0.00836151, 0.935567) +bones/160/scale = Vector3(1.00002, 0.998931, 1.00106) +bones/161/rotation = Quaternion(6.68066e-08, 0.0135093, -7.75189e-08, 0.999909) +bones/162/rotation = Quaternion(0.0486255, 0.0187694, -0.0244507, 0.998341) +bones/162/scale = Vector3(0.999239, 1.00151, 0.999247) +bones/163/position = Vector3(-0.0197298, 0.120467, 0.0346734) +bones/163/rotation = Quaternion(0.0718441, 0.386481, 0.0423991, 0.918517) +bones/164/rotation = Quaternion(0.112742, -6.40415e-05, 0.000564981, 0.993624) +bones/165/rotation = Quaternion(-0.0243421, 1.53655e-06, -0.00107798, 0.999703) +bones/166/rotation = Quaternion(0.17073, 0.850092, 0.347046, 0.357428) +bones/167/rotation = Quaternion(0.0314431, -6.59155e-05, 0.00209581, 0.999503) +bones/167/scale = Vector3(1, 1, 1) +bones/168/rotation = Quaternion(0.0521303, 8.57115e-06, -0.00435438, 0.998631) +bones/169/rotation = Quaternion(0.0706864, 0.570289, 0.0774011, 0.814729) +bones/169/scale = Vector3(1, 1, 1) +bones/170/position = Vector3(-0.0073889, 0.131406, 0.00407599) +bones/170/rotation = Quaternion(0.0214791, 0.420277, -0.0560823, 0.905407) +bones/170/scale = Vector3(1, 1, 1) +bones/171/rotation = Quaternion(0.061603, -0.000469828, 0.0076087, 0.998072) +bones/171/scale = Vector3(1, 1, 1) +bones/172/rotation = Quaternion(0.00952832, 1.17221e-05, -0.0164548, 0.999819) +bones/173/rotation = Quaternion(0.0175236, 0.576541, 0.00274141, 0.816876) +bones/173/scale = Vector3(1, 1, 1) +bones/174/position = Vector3(0.00557842, 0.125892, -0.0231762) +bones/174/rotation = Quaternion(-0.0129703, 0.470965, -0.101212, 0.876231) +bones/175/rotation = Quaternion(0.0754094, 0.000904019, -0.011953, 0.997081) +bones/175/scale = Vector3(1, 1, 1) +bones/176/rotation = Quaternion(-0.00934171, -1.60021e-05, 0.0222705, 0.999708) bones/176/scale = Vector3(1, 1, 1) -bones/177/rotation = Quaternion(0.0521303, 8.57115e-06, -0.00435438, 0.998631) -bones/178/rotation = Quaternion(0.0706864, 0.570289, 0.0774011, 0.814729) +bones/177/rotation = Quaternion(-0.036864, 0.530677, -0.0590597, 0.84471) +bones/177/scale = Vector3(1, 1, 1) +bones/178/position = Vector3(0.0221777, 0.109413, -0.0432364) +bones/178/rotation = Quaternion(0.00860063, 0.622327, -0.127519, 0.772253) bones/178/scale = Vector3(1, 1, 1) -bones/179/position = Vector3(-0.0073889, 0.131406, 0.00407599) -bones/179/rotation = Quaternion(0.0214791, 0.420277, -0.0560823, 0.905407) +bones/179/rotation = Quaternion(0.120863, 0.000593449, -0.00487831, 0.992657) bones/179/scale = Vector3(1, 1, 1) -bones/180/rotation = Quaternion(0.061603, -0.000469828, 0.0076087, 0.998072) -bones/180/scale = Vector3(1, 1, 1) -bones/181/rotation = Quaternion(0.00952832, 1.17221e-05, -0.0164548, 0.999819) -bones/182/rotation = Quaternion(0.0175236, 0.576541, 0.00274141, 0.816876) -bones/182/scale = Vector3(1, 1, 1) -bones/183/position = Vector3(0.00557842, 0.125892, -0.0231762) -bones/183/rotation = Quaternion(-0.0129703, 0.470965, -0.101212, 0.876231) -bones/184/rotation = Quaternion(0.0754094, 0.000904019, -0.011953, 0.997081) +bones/180/rotation = Quaternion(-0.0363518, -7.20591e-06, 0.00959009, 0.999293) +bones/181/rotation = Quaternion(-0.0699756, 0.498239, -0.128393, 0.854621) +bones/182/position = Vector3(-0.0151141, 1.5507, -0.0648353) +bones/182/rotation = Quaternion(-0.667995, 0.402242, 0.429591, 0.455452) +bones/183/position = Vector3(-0.226991, 1.47242, -0.124815) +bones/183/rotation = Quaternion(0.114049, -0.105708, 0.98226, 0.104804) +bones/183/scale = Vector3(0.999039, 1.00193, 0.999039) +bones/184/rotation = Quaternion(-7.77584e-08, 0.0139998, -9.87914e-08, 0.999902) bones/184/scale = Vector3(1, 1, 1) -bones/185/rotation = Quaternion(-0.00934171, -1.60021e-05, 0.0222705, 0.999708) -bones/185/scale = Vector3(1, 1, 1) -bones/186/rotation = Quaternion(-0.036864, 0.530677, -0.0590597, 0.84471) -bones/186/scale = Vector3(1, 1, 1) -bones/187/position = Vector3(0.0221777, 0.109413, -0.0432364) -bones/187/rotation = Quaternion(0.00860063, 0.622327, -0.127519, 0.772253) -bones/187/scale = Vector3(1, 1, 1) -bones/188/rotation = Quaternion(0.120863, 0.000593449, -0.00487831, 0.992657) -bones/188/scale = Vector3(1, 1, 1) -bones/189/rotation = Quaternion(-0.0363518, -7.20591e-06, 0.00959009, 0.999293) -bones/190/rotation = Quaternion(-0.0699756, 0.498239, -0.128393, 0.854621) -bones/191/position = Vector3(-0.00324764, 1.55136, -0.072775) -bones/191/rotation = Quaternion(-0.680737, 0.425888, 0.410319, 0.432267) -bones/192/position = Vector3(-0.216796, 1.47266, -0.12575) -bones/192/rotation = Quaternion(0.103736, -0.11452, 0.98185, 0.109978) -bones/192/scale = Vector3(0.999548, 1.0009, 0.999548) -bones/193/rotation = Quaternion(5.86497e-09, 0.00861484, 2.17855e-08, 0.999963) -bones/193/scale = Vector3(1, 1, 1) -bones/194/rotation = Quaternion(0.324749, 0.00820945, -0.0028195, 0.94576) -bones/194/scale = Vector3(0.999985, 1.00026, 0.999752) -bones/195/rotation = Quaternion(4.05172e-08, 0.0181185, -3.2722e-08, 0.999836) -bones/196/rotation = Quaternion(-0.08072, 0.0126637, 0.0960996, 0.992013) -bones/196/scale = Vector3(1.00043, 0.999121, 1.00044) -bones/197/position = Vector3(0.0197299, 0.120467, 0.0346735) -bones/197/rotation = Quaternion(0.0718441, -0.386481, -0.0423991, 0.918517) -bones/198/rotation = Quaternion(0.112742, 6.40372e-05, -0.000564644, 0.993624) -bones/199/rotation = Quaternion(-0.0243417, -1.56118e-06, 0.00107757, 0.999703) -bones/200/position = Vector3(0.00332131, 0.0344232, 0.0338642) -bones/200/rotation = Quaternion(-0.17073, 0.850091, 0.347047, -0.357428) -bones/201/rotation = Quaternion(0.0314437, 6.59298e-05, -0.00209524, 0.999503) +bones/185/rotation = Quaternion(0.306058, 0.0135328, -0.00435397, 0.951907) +bones/185/scale = Vector3(0.999965, 1.00055, 0.999483) +bones/186/rotation = Quaternion(-1.26634e-07, 0.0211937, 1.80871e-07, 0.999775) +bones/187/rotation = Quaternion(-0.0641636, 0.0168689, 0.0924421, 0.993505) +bones/187/scale = Vector3(1.00093, 0.998093, 1.00098) +bones/188/position = Vector3(0.0197299, 0.120467, 0.0346735) +bones/188/rotation = Quaternion(0.0718441, -0.386481, -0.0423991, 0.918517) +bones/189/rotation = Quaternion(0.112742, 6.40372e-05, -0.000564644, 0.993624) +bones/190/rotation = Quaternion(-0.0243417, -1.56118e-06, 0.00107757, 0.999703) +bones/191/position = Vector3(0.00332131, 0.0344232, 0.0338642) +bones/191/rotation = Quaternion(-0.17073, 0.850091, 0.347047, -0.357428) +bones/192/rotation = Quaternion(0.0314437, 6.59298e-05, -0.00209524, 0.999503) +bones/192/scale = Vector3(1, 1, 1) +bones/193/rotation = Quaternion(0.0521297, -8.55238e-06, 0.00435397, 0.998631) +bones/194/rotation = Quaternion(0.0706864, -0.570289, -0.0774011, 0.814729) +bones/194/scale = Vector3(1, 1, 1) +bones/195/position = Vector3(0.00738889, 0.131406, 0.00407595) +bones/195/rotation = Quaternion(0.021479, -0.420277, 0.0560823, 0.905407) +bones/195/scale = Vector3(1, 1, 1) +bones/196/rotation = Quaternion(0.0616029, 0.000469835, -0.00760857, 0.998072) +bones/196/scale = Vector3(1, 1, 1) +bones/197/rotation = Quaternion(0.00952826, -1.17536e-05, 0.0164548, 0.999819) +bones/198/rotation = Quaternion(0.0175236, -0.576541, -0.00274135, 0.816876) +bones/198/scale = Vector3(1, 1, 1) +bones/199/position = Vector3(-0.0055785, 0.125891, -0.0231761) +bones/199/rotation = Quaternion(-0.0129704, -0.470965, 0.101212, 0.876231) +bones/200/rotation = Quaternion(0.0754091, -0.000904026, 0.011953, 0.997081) +bones/200/scale = Vector3(1, 1, 1) +bones/201/rotation = Quaternion(-0.00934119, 1.6024e-05, -0.0222707, 0.999708) bones/201/scale = Vector3(1, 1, 1) -bones/202/rotation = Quaternion(0.0521297, -8.55238e-06, 0.00435397, 0.998631) -bones/203/rotation = Quaternion(0.0706864, -0.570289, -0.0774011, 0.814729) +bones/202/rotation = Quaternion(-0.036864, -0.530677, 0.0590597, 0.84471) +bones/202/scale = Vector3(1, 1, 1) +bones/203/position = Vector3(-0.0221778, 0.109413, -0.0432364) +bones/203/rotation = Quaternion(0.00860056, -0.622327, 0.127518, 0.772253) bones/203/scale = Vector3(1, 1, 1) -bones/204/position = Vector3(0.00738889, 0.131406, 0.00407595) -bones/204/rotation = Quaternion(0.021479, -0.420277, 0.0560823, 0.905407) +bones/204/rotation = Quaternion(0.120863, -0.000593412, 0.00487826, 0.992657) bones/204/scale = Vector3(1, 1, 1) -bones/205/rotation = Quaternion(0.0616029, 0.000469835, -0.00760857, 0.998072) -bones/205/scale = Vector3(1, 1, 1) -bones/206/rotation = Quaternion(0.00952826, -1.17536e-05, 0.0164548, 0.999819) -bones/207/rotation = Quaternion(0.0175236, -0.576541, -0.00274135, 0.816876) +bones/205/rotation = Quaternion(-0.0363513, 7.21743e-06, -0.00959023, 0.999293) +bones/206/rotation = Quaternion(-0.0699756, -0.498239, 0.128393, 0.854621) +bones/207/position = Vector3(0.104333, 1.40421, 0.00703726) +bones/207/rotation = Quaternion(-0.0187923, 0.679442, 0.730762, 0.0631859) bones/207/scale = Vector3(1, 1, 1) -bones/208/position = Vector3(-0.0055785, 0.125891, -0.0231761) -bones/208/rotation = Quaternion(-0.0129704, -0.470965, 0.101212, 0.876231) -bones/209/rotation = Quaternion(0.0754091, -0.000904026, 0.011953, 0.997081) -bones/209/scale = Vector3(1, 1, 1) -bones/210/rotation = Quaternion(-0.00934119, 1.6024e-05, -0.0222707, 0.999708) -bones/210/scale = Vector3(1, 1, 1) -bones/211/rotation = Quaternion(-0.036864, -0.530677, 0.0590597, 0.84471) -bones/211/scale = Vector3(1, 1, 1) -bones/212/position = Vector3(-0.0221778, 0.109413, -0.0432364) -bones/212/rotation = Quaternion(0.00860056, -0.622327, 0.127518, 0.772253) -bones/212/scale = Vector3(1, 1, 1) -bones/213/rotation = Quaternion(0.120863, -0.000593412, 0.00487826, 0.992657) -bones/213/scale = Vector3(1, 1, 1) -bones/214/rotation = Quaternion(-0.0363513, 7.21743e-06, -0.00959023, 0.999293) -bones/215/rotation = Quaternion(-0.0699756, -0.498239, 0.128393, 0.854621) -bones/216/position = Vector3(0.11382, 1.40445, 0.00217154) -bones/216/rotation = Quaternion(-0.021384, 0.681215, 0.728363, 0.0705428) -bones/216/scale = Vector3(1, 1, 1) -bones/217/position = Vector3(-0.120034, 1.4217, -0.0306597) -bones/217/rotation = Quaternion(-0.0218616, 0.680596, 0.728904, 0.0707838) -bones/217/scale = Vector3(1, 1, 1) -bones/218/position = Vector3(0.190486, 1.36996, -0.13819) -bones/218/rotation = Quaternion(-0.728691, -0.0205945, -0.0755744, 0.680349) -bones/219/position = Vector3(-0.159617, 1.39576, -0.187177) -bones/219/rotation = Quaternion(-0.728691, -0.0205945, -0.0755744, 0.680349) - -[node name="head" type="SkeletonModifier3D" parent="base/rig/Skeleton3D" index="0"] +bones/208/position = Vector3(-0.130217, 1.41993, -0.0215965) +bones/208/rotation = Quaternion(-0.0188115, 0.679321, 0.730874, 0.06319) +bones/208/scale = Vector3(1, 1, 1) +bones/209/position = Vector3(0.178758, 1.37109, -0.134744) +bones/209/rotation = Quaternion(-0.727238, -0.0173574, -0.0670176, 0.682885) +bones/210/position = Vector3(-0.172333, 1.39463, -0.177478) +bones/210/rotation = Quaternion(-0.727238, -0.0173574, -0.0670176, 0.682885) +script = ExtResource("7_2sr7c") + +[node name="track_head" type="SkeletonModifier3D" parent="base/rig/Skeleton3D" index="0"] _import_path = NodePath("") unique_name_in_owner = false process_mode = 0 @@ -609,12 +608,14 @@ top_level = false visible = true visibility_parent = NodePath("") active = false -influence = 1.0 +influence = 0.0 script = ExtResource("7_h7lx0") -bone = "ORG-face" -target = Vector3(0, 1, 2) +bone = "DEF-spine.006" +target = Vector3(1.07, 1.61, 2) +influence_lerp_seconds = 3.0 +rotation_lerp_weight = 0.01 -[node name="eye_L" type="SkeletonModifier3D" parent="base/rig/Skeleton3D" index="1"] +[node name="track_eye_L" type="SkeletonModifier3D" parent="base/rig/Skeleton3D" index="1"] _import_path = NodePath("") unique_name_in_owner = false process_mode = 0 @@ -634,11 +635,9 @@ active = false influence = 1.0 script = ExtResource("9_00p5l") bone = "DEF-eye.L" -aim_axis = 1 -pivot_axis = null target = Vector3(0, 1, 2) -[node name="eye_R" type="SkeletonModifier3D" parent="base/rig/Skeleton3D" index="2"] +[node name="track_eye_R" type="SkeletonModifier3D" parent="base/rig/Skeleton3D" index="2"] _import_path = NodePath("") unique_name_in_owner = false process_mode = 0 @@ -658,29 +657,7 @@ active = false influence = 1.0 script = ExtResource("9_00p5l") bone = "DEF-eye.R" -pivot_axis = null target = Vector3(0, 1, 2) -[node name="horns" parent="base/rig/Skeleton3D" index="3"] -transform = Transform3D(0.995176, 0.00944209, -0.0976543, -0.0186959, 0.99537, -0.0942843, 0.0963119, 0.0956552, 0.990745, -0.0245482, -0.0443767, -0.198597) - -[node name="iris_001" parent="base/rig/Skeleton3D" index="4"] -transform = Transform3D(-0.0189661, -0.000180307, -0.00186093, 0.000356653, -0.0189697, -0.00179691, -0.00183531, -0.00182306, 0.0188816, 0.0308699, 1.78271, 0.0538749) - -[node name="eye_001" parent="base/rig/Skeleton3D" index="5"] -transform = Transform3D(-0.0189661, -0.000180307, -0.00186093, 0.000356653, -0.0189697, -0.00179691, -0.00183531, -0.00182306, 0.0188816, 0.0308699, 1.78271, 0.0538749) - -[node name="black_001" parent="base/rig/Skeleton3D" index="6"] -transform = Transform3D(-0.0189661, -0.000180307, -0.00186093, 0.000356653, -0.0189697, -0.00179691, -0.00183531, -0.00182306, 0.0188816, 0.0308699, 1.78271, 0.0538749) - -[node name="iris_001_2" parent="base/rig/Skeleton3D" index="7"] -transform = Transform3D(-0.0189661, -0.000180307, -0.00186093, 0.000356653, -0.0189697, -0.00179691, -0.00183531, -0.00182306, 0.0188816, -0.0592035, 1.7844, 0.0451586) - -[node name="eye_001_2" parent="base/rig/Skeleton3D" index="8"] -transform = Transform3D(-0.0189661, -0.000180307, -0.00186093, 0.000356653, -0.0189697, -0.00179691, -0.00183531, -0.00182306, 0.0188816, -0.0592035, 1.7844, 0.0451586) - -[node name="black_001_2" parent="base/rig/Skeleton3D" index="9"] -transform = Transform3D(-0.0189661, -0.000180307, -0.00186093, 0.000356653, -0.0189697, -0.00179691, -0.00183531, -0.00182306, 0.0188816, -0.0592035, 1.7844, 0.0451586) - -[node name="AnimationPlayer" parent="." index="3"] -active = false +[node name="horns" parent="base/rig/Skeleton3D" index="11"] +transform = Transform3D(0.991343, 0.00187152, -0.131286, -0.0283792, 0.979318, -0.200331, 0.128196, 0.202322, 0.970893, -0.0223006, -0.0126594, -0.397749) diff --git a/william_skeleton.gd b/william_skeleton.gd new file mode 100644 index 0000000..6d104b2 --- /dev/null +++ b/william_skeleton.gd @@ -0,0 +1,28 @@ +extends Skeleton3D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass + + +# TODO: this doesn't work well because animation pose positions are offset! +# The actual solution is to make blender spit out a proper skeleton hierarchy +func _reparent_rigify_floating_bones() -> void: + var head_bone_idx: int = find_bone("DEF-spine.006") + var head_bone_rest: Transform3D = get_bone_global_rest(head_bone_idx) + + var to_head_arr := ["ORG-face", "DEF-hair-root", "DEF-hair-root.001", + "DEF-hair-root.002", "DEF-hair-root.003", "DEF-hair-root.004", + "DEF-hair-root.005" + ] + + # parent the face, hair, and horns to the head bone + for n in to_head_arr: + var idx: int = find_bone(n) + var rest: Transform3D = get_bone_global_rest(idx) + + # set bone position relative to its new parent + set_bone_rest(idx, rest * head_bone_rest) + #set_bone_pose_position(idx, head_bone_rest.basis.x - rest.basis.x) + set_bone_parent(idx, head_bone_idx)