From 088fec18e10352403eedd6444cecc6e3e0efdc85 Mon Sep 17 00:00:00 2001 From: "K. S. Ernest (iFire) Lee" Date: Tue, 4 Jun 2024 13:33:28 -0700 Subject: [PATCH] git subrepo clone https://github.com/V-Sekai/many_bone_ik.git modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "55a8585241" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "55a8585241" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Updated z-coordinate calculation in vertex function The z-coordinate calculation in the vertex function of both many_bone_ik_3d_gizmo_plugin.cpp and many_bone_ik_shader.h has been updated for reverse-z. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "3f203c6757" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "3f203c6757" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Revert "Updated z-coordinate calculation in vertex function" This reverts commit 3d3f4597ba1bab78e72512a060663079c936a673. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "d093733570" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "d093733570" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Restore overlay calculation in 3D gizmo plugin git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "276d587245" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "276d587245" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Refined test conditions in IK Kusudama 3D module git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "cb04ae824b" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "cb04ae824b" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Renamed 'passthrough_factor' to 'motion_propagation_factor' Set factor to 1.0. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "cae366ea2f" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "cae366ea2f" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Updated vector direction in ManyBoneIK3D The vector direction for kusudama_open_cones in the add_constraint function of ManyBoneIK3D has been updated. The y-coordinate value has been changed from 1 to -1, effectively flipping the direction of the vector. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "f651735e9e" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "f651735e9e" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Updated vector direction and simplified basis transformation git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "901a112370" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "901a112370" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Updated vector values in ManyBoneIK3D module Removed debug skeleton functionality git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "60a88915d7" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "60a88915d7" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Removed the queue_print_skeleton git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "31749209c7" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "31749209c7" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Removed skeleton print queue method git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "1405dde4c5" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "1405dde4c5" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Refactor radius retrieval in IKLimitCone3D git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "3243f17717" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "3243f17717" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Refactor IKLimitCone3D update method The update_tangent_handles method in the IKLimitCone3D class has been refactored for better readability and efficiency. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "d95333f449" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "d95333f449" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Removed unnecessary setting of tangent circle centers in the ManyBoneIK3D module. Direct assignment using orthogonal vector computations. Restore smooth tangents. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "c70295ce85" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "c70295ce85" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Added method to set effector count git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "2fee23413e" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "2fee23413e" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Refactor rotation calculation in IK bone segment git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "e168434ed2" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "e168434ed2" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Refactor IK module and remove unused code git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "f6a7ea91d4" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "f6a7ea91d4" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Updated IK class name in config Updated IKEffector3D documentation Enhanced the explanation for 'motion_propagation_factor' in IKEffector3D git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "d7a299fa7f" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "d7a299fa7f" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Introduced 3D cone for inverse kinematics into documentation. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "6c7dd4c1b6" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "6c7dd4c1b6" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" git subrepo pull modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "a0cb6aadead" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "a0cb6aadead" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" git subrepo pull modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "ddc539e515" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "ddc539e515" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" Fix integration tests. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "e60904be58" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "e60904be58" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" git subrepo pull --force modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "ad2e65ba6c6" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "ad2e65ba6c6" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129" git subrepo pull modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "ad64874683" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "ad64874683" git-subrepo: version: "0.4.9" origin: "https://github.com/ingydotnet/git-subrepo" commit: "cce3d93" Pass code formatting test. git subrepo push modules/many_bone_ik subrepo: subdir: "modules/many_bone_ik" merged: "b664669705" upstream: origin: "https://github.com/V-Sekai/many_bone_ik.git" branch: "main" commit: "b664669705" git-subrepo: version: "0.4.9" origin: "https://github.com/ingydotnet/git-subrepo" commit: "cce3d93" --- .../.github/ISSUE_TEMPLATE/bug_report.md | 40 + .../.github/ISSUE_TEMPLATE/feature_request.md | 19 + modules/many_bone_ik/.gitignore | 380 ++++++ modules/many_bone_ik/.gitrepo | 12 + modules/many_bone_ik/LICENSE | 23 + modules/many_bone_ik/SCsub | 15 + modules/many_bone_ik/config.py | 24 + ...00000000000139000000CB22CAE13E99E3E24B.png | Bin 0 -> 10961 bytes ...00000000000139000000CB360C51B9B2145043.png | Bin 0 -> 11379 bytes ...00000000000139000000CBF393B4C3206D97F3.png | Bin 0 -> 12583 bytes ...0000000000016C000002AAA2059A0E43B2B468.png | Bin 0 -> 42382 bytes ...000000000002070000018E1025A91C2576C186.png | Bin 0 -> 27206 bytes ...000000000002070000018E173E86C323891A74.png | Bin 0 -> 24074 bytes ...000000000002070000018E6996B4A5DF706332.png | Bin 0 -> 31975 bytes ...000000000002070000018E832AFC8FF38BF53F.png | Bin 0 -> 29692 bytes ...000000000002070000018E845771BD15F39314.png | Bin 0 -> 21288 bytes ...000000000002070000018E853FACED42A51700.png | Bin 0 -> 18532 bytes ...000000000002070000018E9D87E7B297A94C9F.png | Bin 0 -> 11486 bytes ...000000000002070000018EA6B7A87AEB9D9F40.png | Bin 0 -> 11171 bytes ...000000000002070000018EBC567E962B9B4C87.png | Bin 0 -> 24625 bytes ...000000000002070000018ECB3181C74F9EDC35.png | Bin 0 -> 21594 bytes ...000000000002070000018ED76B18851DB9DC34.png | Bin 0 -> 19960 bytes ...000000000002070000018EDE8A6B18141900B0.png | Bin 0 -> 23510 bytes ...000000000002070000018EDF01F2A95A1519D7.png | Bin 0 -> 18913 bytes ...000000000002070000018EE63F4ECE1A82B606.png | Bin 0 -> 20421 bytes ...000000000002070000018EEE6FC1E017012EDA.png | Bin 0 -> 24317 bytes ...000000000002C90000027876C8370C9358FB94.png | Bin 0 -> 172945 bytes ...000000000002C900000278AEBB2DF17488D353.png | Bin 0 -> 38347 bytes ...000000000002C900000278EEE925F5104E07BE.png | Bin 0 -> 285496 bytes ...000000000004000000040014FDC3377E0AD7E4.png | Bin 0 -> 118195 bytes ...00000000000400000004007DA1871E5E883934.png | Bin 0 -> 105852 bytes ...000201000002020000018EF75E743EDC6A705E.png | Bin 0 -> 33815 bytes ...00020100000286000001D10AA6EC3093AC56D5.png | Bin 0 -> 21430 bytes ...0002010000030D0000026B7F70BE2E85BEF4BE.png | Bin 0 -> 56415 bytes modules/many_bone_ik/design_docs/readme.md | 555 +++++++++ modules/many_bone_ik/doc_classes/IKBone3D.xml | 50 + .../doc_classes/IKBoneSegment3D.xml | 26 + .../many_bone_ik/doc_classes/IKEffector3D.xml | 36 + .../doc_classes/IKEffectorTemplate3D.xml | 26 + .../many_bone_ik/doc_classes/IKKusudama3D.xml | 26 + .../doc_classes/IKLimitCone3D.xml | 11 + modules/many_bone_ik/doc_classes/IKNode3D.xml | 87 ++ modules/many_bone_ik/doc_classes/IKRay3D.xml | 35 + .../many_bone_ik/doc_classes/ManyBoneIK3D.xml | 298 +++++ .../editor/many_bone_ik_3d_gizmo_plugin.cpp | 600 +++++++++ .../editor/many_bone_ik_3d_gizmo_plugin.h | 101 ++ .../many_bone_ik/editor/many_bone_ik_shader.h | 207 ++++ modules/many_bone_ik/register_types.cpp | 68 + modules/many_bone_ik/register_types.h | 39 + modules/many_bone_ik/src/ik_bone_3d.cpp | 364 ++++++ modules/many_bone_ik/src/ik_bone_3d.h | 122 ++ .../many_bone_ik/src/ik_bone_segment_3d.cpp | 427 +++++++ modules/many_bone_ik/src/ik_bone_segment_3d.h | 105 ++ modules/many_bone_ik/src/ik_effector_3d.cpp | 183 +++ modules/many_bone_ik/src/ik_effector_3d.h | 92 ++ .../src/ik_effector_template_3d.cpp | 83 ++ .../src/ik_effector_template_3d.h | 64 + modules/many_bone_ik/src/ik_kusudama_3d.cpp | 427 +++++++ modules/many_bone_ik/src/ik_kusudama_3d.h | 203 +++ modules/many_bone_ik/src/ik_open_cone_3d.cpp | 426 +++++++ modules/many_bone_ik/src/ik_open_cone_3d.h | 135 ++ modules/many_bone_ik/src/ik_ray_3d.cpp | 212 ++++ modules/many_bone_ik/src/ik_ray_3d.h | 128 ++ modules/many_bone_ik/src/many_bone_ik_3d.cpp | 1094 +++++++++++++++++ modules/many_bone_ik/src/many_bone_ik_3d.h | 158 +++ modules/many_bone_ik/src/math/ik_node_3d.cpp | 159 +++ modules/many_bone_ik/src/math/ik_node_3d.h | 102 ++ modules/many_bone_ik/src/math/qcp.cpp | 269 ++++ modules/many_bone_ik/src/math/qcp.h | 108 ++ .../many_bone_ik/tests/test_ik_kusudama_3d.h | 296 +++++ modules/many_bone_ik/tests/test_ik_node_3d.h | 109 ++ modules/many_bone_ik/tests/test_qcp.h | 143 +++ 72 files changed, 8087 insertions(+) create mode 100644 modules/many_bone_ik/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 modules/many_bone_ik/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 modules/many_bone_ik/.gitignore create mode 100644 modules/many_bone_ik/.gitrepo create mode 100644 modules/many_bone_ik/LICENSE create mode 100644 modules/many_bone_ik/SCsub create mode 100644 modules/many_bone_ik/config.py create mode 100644 modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CB22CAE13E99E3E24B.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CB360C51B9B2145043.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CBF393B4C3206D97F3.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/100000000000016C000002AAA2059A0E43B2B468.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E1025A91C2576C186.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E173E86C323891A74.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E6996B4A5DF706332.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E832AFC8FF38BF53F.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E845771BD15F39314.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E853FACED42A51700.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E9D87E7B297A94C9F.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EA6B7A87AEB9D9F40.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EBC567E962B9B4C87.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018ECB3181C74F9EDC35.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018ED76B18851DB9DC34.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EDE8A6B18141900B0.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EDF01F2A95A1519D7.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EE63F4ECE1A82B606.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EEE6FC1E017012EDA.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002C90000027876C8370C9358FB94.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002C900000278AEBB2DF17488D353.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000002C900000278EEE925F5104E07BE.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000000000004000000040014FDC3377E0AD7E4.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/1000000000000400000004007DA1871E5E883934.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/10000201000002020000018EF75E743EDC6A705E.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/1000020100000286000001D10AA6EC3093AC56D5.png create mode 100644 modules/many_bone_ik/design_docs/Pictures/100002010000030D0000026B7F70BE2E85BEF4BE.png create mode 100644 modules/many_bone_ik/design_docs/readme.md create mode 100644 modules/many_bone_ik/doc_classes/IKBone3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKBoneSegment3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKEffector3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKEffectorTemplate3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKKusudama3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKLimitCone3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKNode3D.xml create mode 100644 modules/many_bone_ik/doc_classes/IKRay3D.xml create mode 100644 modules/many_bone_ik/doc_classes/ManyBoneIK3D.xml create mode 100644 modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.cpp create mode 100644 modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.h create mode 100644 modules/many_bone_ik/editor/many_bone_ik_shader.h create mode 100644 modules/many_bone_ik/register_types.cpp create mode 100644 modules/many_bone_ik/register_types.h create mode 100644 modules/many_bone_ik/src/ik_bone_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_bone_3d.h create mode 100644 modules/many_bone_ik/src/ik_bone_segment_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_bone_segment_3d.h create mode 100644 modules/many_bone_ik/src/ik_effector_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_effector_3d.h create mode 100644 modules/many_bone_ik/src/ik_effector_template_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_effector_template_3d.h create mode 100644 modules/many_bone_ik/src/ik_kusudama_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_kusudama_3d.h create mode 100644 modules/many_bone_ik/src/ik_open_cone_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_open_cone_3d.h create mode 100644 modules/many_bone_ik/src/ik_ray_3d.cpp create mode 100644 modules/many_bone_ik/src/ik_ray_3d.h create mode 100644 modules/many_bone_ik/src/many_bone_ik_3d.cpp create mode 100644 modules/many_bone_ik/src/many_bone_ik_3d.h create mode 100644 modules/many_bone_ik/src/math/ik_node_3d.cpp create mode 100644 modules/many_bone_ik/src/math/ik_node_3d.h create mode 100644 modules/many_bone_ik/src/math/qcp.cpp create mode 100644 modules/many_bone_ik/src/math/qcp.h create mode 100644 modules/many_bone_ik/tests/test_ik_kusudama_3d.h create mode 100644 modules/many_bone_ik/tests/test_ik_node_3d.h create mode 100644 modules/many_bone_ik/tests/test_qcp.h diff --git a/modules/many_bone_ik/.github/ISSUE_TEMPLATE/bug_report.md b/modules/many_bone_ik/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000000..9b77ea713f98 --- /dev/null +++ b/modules/many_bone_ik/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,40 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "" +labels: "" +assignees: "" +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + +- OS: [e.g. iOS] +- Browser [e.g. chrome, safari] +- Version [e.g. 22] + +**Smartphone (please complete the following information):** + +- Device: [e.g. iPhone6] +- OS: [e.g. iOS8.1] +- Browser [e.g. stock browser, safari] +- Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/modules/many_bone_ik/.github/ISSUE_TEMPLATE/feature_request.md b/modules/many_bone_ik/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000000..2bc5d5f71186 --- /dev/null +++ b/modules/many_bone_ik/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "" +labels: "" +assignees: "" +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/modules/many_bone_ik/.gitignore b/modules/many_bone_ik/.gitignore new file mode 100644 index 000000000000..3946cc96e540 --- /dev/null +++ b/modules/many_bone_ik/.gitignore @@ -0,0 +1,380 @@ +# Godot .gitignore config +# +# Aims to encompass the most commonly found files that we don't want committed +# to Git, such as compilation output, IDE specific files, etc. +# +# It doesn't cover *all* thirdparty IDE extensions under the sun so if you have +# specific needs covered here, you can add them to: +# .git/info/exclude +# +# Or contribute them to this file if they're common enough that a good number of +# users would benefit from the shared rules. +# +# This file is organized by sections, with subsections ordered alphabetically. +# - Build configuration +# - Godot generated files +# - General build output +# - IDE and tool specific +# - Visual Studio specific +# - OS specific + +########################### +### Build configuration ### +########################### + +/custom.py +misc/hooks/pre-commit-custom-* + +############################# +### Godot generated files ### +############################# + +# Buildsystem +bin +*.gen.* +compile_commands.json +platform/windows/godot_res.res + +# Ninja build files +build.ninja +.ninja +run_ninja_env.bat + +# Generated by Godot binary +.import/ +/gdextension_interface.h +extension_api.json +logs/ + +# Generated by unit tests +tests/data/*.translation +tests/data/crypto/out* + +############################ +### General build output ### +############################ + +# C/C++ generated +*.a +*.ax +*.d +*.dll +*.lib +*.lo +*.o +*.os +*.ox +*.Plo +*.so +# Binutils tmp linker output of the form "stXXXXXX" where "X" is alphanumeric +st[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9] + +# Python development +.venv +venv + +# Python generated +__pycache__/ +*.pyc + +# Documentation +doc/_build/ + +# Android +.gradle/ +local.properties +*.iml +.gradletasknamecache +project.properties +platform/android/java/*/.cxx/ +platform/android/java/*/build/ +platform/android/java/*/libs/ + +# iOS +*.dSYM + +# Web platform +*.bc +platform/web/node_modules/ + +# Misc +*.debug + +############################# +### IDE and tool specific ### +############################# + +# Automake +.deps/* +.dirstamp + +# ccls +.ccls-cache/ + +# clangd +.clangd/ +.cache/ + +# CLion +cmake-build-debug + +# Code::Blocks +*.cbp +*.layout +*.depend + +# CodeLite +*.project +*.workspace +.codelite/ + +# Cppcheck +*.cppcheck +cppcheck-cppcheck-build-dir/ + +# Eclipse CDT +.cproject +.settings/ +*.pydevproject +*.launch + +# Emacs +\#*\# +.\#* + +# GCOV code coverage +*.gcda +*.gcno + +# Geany +*.geany +.geanyprj + +# Gprof +gmon.out + +# Jetbrains IDEs +.idea/ +.fleet/ + +# Kate +*.kate-swp + +# Kdevelop +*.kdev4 + +# Mypy +.mypy_cache + +# Qt Creator +*.config +*.creator +*.creator.* +*.files +*.includes +*.cflags +*.cxxflags + +# SCons +.sconf_temp +.sconsign*.dblite +.scons_env.json +.scons_node_count + +# Sourcetrail +*.srctrl* + +# Tags +# https://github.com/github/gitignore/blob/master/Global/Tags.gitignore +# Ignore tags created by etags, ctags, gtags (GNU global) and cscope +TAGS +!TAGS/ +tags +*.tags +!tags/ +gtags.files +GTAGS +GRTAGS +GPATH +cscope.files +cscope.out +cscope.in.out +cscope.po.out + +# Vim +*.swo +*.swp + +# Visual Studio Code +.vscode/ +*.code-workspace +.history/ + +# Xcode +xcuserdata/ +*.xcscmblueprint +*.xccheckout +*.xcodeproj/* + +############################## +### Visual Studio specific ### +############################## + +# https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +# Ignore Visual Studio temporary files, build results, and +# files generated by popular Visual Studio add-ons. + +# Actual VS project files we don't use +*.sln +*.vcxproj* + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ + +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Do not ignore arch-specific folders anywhere under thirdparty libraries +!thirdparty/**/x64/ +!thirdparty/**/x86/ +!thirdparty/**/arm/ +!thirdparty/**/arm64/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache + +# Others +ClientBin/ +enc_temp_folder/ +~$* +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# Hint file for IntelliSense +cpp.hint + +################### +### OS specific ### +################### + +# Linux +*~ +.directory + +# macOS +.DS_Store +__MACOSX + +# Windows +# https://github.com/github/gitignore/blob/main/Global/Windows.gitignore +[Tt]humbs.db +[Tt]humbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db +*.stackdump +[Dd]esktop.ini +$RECYCLE.BIN/ +*.cab +*.msi +*.msix +*.msm +*.msp +*.lnk +*.generated.props diff --git a/modules/many_bone_ik/.gitrepo b/modules/many_bone_ik/.gitrepo new file mode 100644 index 000000000000..6b763294c5cd --- /dev/null +++ b/modules/many_bone_ik/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/ingydotnet/git-subrepo#readme +; +[subrepo] + remote = https://github.com/V-Sekai/many_bone_ik.git + branch = main + commit = b6646697056c93d3296aca79fbf0093a307f0cb2 + parent = 251a9ddb2b40ab42487b86928ed97940af6b602c + method = merge + cmdver = 0.4.9 diff --git a/modules/many_bone_ik/LICENSE b/modules/many_bone_ik/LICENSE new file mode 100644 index 000000000000..24a6b933f27a --- /dev/null +++ b/modules/many_bone_ik/LICENSE @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2014-2022 Eron Gjoni +Copyright (c) 2019-2022 K. S. Ernest (iFire) Lee +Copyright (c) 2021 Rafael Martinez Gordillo. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/modules/many_bone_ik/SCsub b/modules/many_bone_ik/SCsub new file mode 100644 index 000000000000..715fb0101706 --- /dev/null +++ b/modules/many_bone_ik/SCsub @@ -0,0 +1,15 @@ +#!/usr/bin/env python + +Import("env") + +env_many_bone_ik = env.Clone() +env_many_bone_ik.Prepend(CPPPATH=["#modules/many_bone_ik"]) +env_many_bone_ik.Prepend(CPPPATH=["#modules/many_bone_ik/src/math"]) +env_many_bone_ik.Prepend(CPPPATH=["#modules/many_bone_ik/src"]) +env_many_bone_ik.add_source_files(env.modules_sources, "constraints/*.cpp") +env_many_bone_ik.add_source_files(env.modules_sources, "src/math/*.cpp") +env_many_bone_ik.add_source_files(env.modules_sources, "src/*.cpp") +env_many_bone_ik.add_source_files(env.modules_sources, "*.cpp") + +if env.editor_build: + env_many_bone_ik.add_source_files(env.modules_sources, "editor/*.cpp") diff --git a/modules/many_bone_ik/config.py b/modules/many_bone_ik/config.py new file mode 100644 index 000000000000..b27d55d5d10c --- /dev/null +++ b/modules/many_bone_ik/config.py @@ -0,0 +1,24 @@ +def can_build(env, platform): + return not env["disable_3d"] + + +def configure(env): + pass + + +def get_doc_classes(): + return [ + "ManyBoneIK3D", + "IKBone3D", + "IKEffector3D", + "IKBoneSegment3D", + "IKEffectorTemplate3D", + "IKKusudama3D", + "IKRay3D", + "IKNode3D", + "IKLimitCone3D", + ] + + +def get_doc_path(): + return "doc_classes" diff --git a/modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CB22CAE13E99E3E24B.png b/modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CB22CAE13E99E3E24B.png new file mode 100644 index 0000000000000000000000000000000000000000..8db02055081d4d7a91d00a50581d1cff897b417b GIT binary patch literal 10961 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 SI}Hx0VyWKKR4P+IKmR{U4P%7> literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CB360C51B9B2145043.png b/modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CB360C51B9B2145043.png new file mode 100644 index 0000000000000000000000000000000000000000..a565d772d2507f9529b092b087f6346788af3056 GIT binary patch literal 11379 zcmX|ncRUsT_dmMH-kW4(@0C46vJ$RqW+XGY8HsEmp|ZPVXI>*ABU=dBE6Pr?Gc)r& zy+6OluRlEQgWDai*E!Gg94E>^{{|@$6A=y$4(UxTbweB+Tv>SBOMnMIQ_DQzCmYU9 zbyefXxEof!#ztL#&(r_-Zxj_~)ls~9&P+i2EuubbVc6uh0iW=w$+acg(kiwrwQ#z& z)MvKV7jUT$tU{ksu!X36_9(C3ke&7)C>@>{|KLKbWI!FbEVXr;EM&b`kKwQF=J%~H z{>!^(f#QGq(~tVkW5bk#aa39uC=QkH8c_Wrpui!Bxlo43gG0b@2`?DiY0HzvrGkT| zJq%8!e0=zOz92JjYIrz4GxKHFVtZTLi_7vq=jSWD*T!R+r5Dh(V_4L;^X(eHeHRw8 znum*>r4}`Qj~}zhKN1uaBzf7jyu4gfRpo!YQb2x1Y4p8Er{(3jVlj(>!Frvm@mozN zFIsIV2%h@P2Ka1DRWpz{%ry97O-iRexP8mM9vK=ImYb6kA0O}G;i0XgQ)KMo?d^T{ z?%lO3L9wy1V`F2+{MA)ek~};-e0+TT{QNR9hlAPIzkP7CsCF4^@ZA+<_%c=PIveoE z3NNI^MzrZ5G^cw9K0yKYlbm`D1QsYHDu&V5UKqjg5_u zuP7%cw9kQ)z(Y?bh#>Ucd%8ypUaKxDkCMTN~sYwaaMXPgML?GtSGVoUv zY66}aqQXWOt@rI(FgD-KI@V8GPHyV^_x0uF$X1&-Z{EDPqO8xIaOB@a^l7+)H*h*yiTuq@*#Zm!6)Uh{(v;DReMa(@jY)Dd_i{s-a=|}mX>@UKZaZ2=HXF({9DCnl*E`7J*LvaTtAr^c)ZdUPE3JlJUjS?D!-Go zwVD60rnIzgVuC(2iD<{_pd7&JN z_}=^Rk=GW}zb2jj4FAH3=}SsW+uPggEX!$fEFV06Tw7i3egD4Taf%9V8B?le zy?ds9fr#1rPZJXG{TVlCzSx4?uecu69dx>Qv|+7Nv`C&|>x%H5C)mmW;lhwJy^mF0{Gr@BbV$sM;|x^lYV9z;w=7GcYf zzNeCAB1#gpH*~{P@S2nqd;(n~W~Yw|bHyJhHBJHd_US2n%cX98jcZVj{|TB6Y61vbFVRXJ_jDz20pYi#E-$B% zNE>{mWPQ23u@T!oPg2`Xh8}xoIa0V^Qc@!8`Lp3*$~7P$fOpS*#E4H;cCxcGqTAlZ z{+c&2R7vz3)m}y4oljj|%jH35uExfRE4T6b6kVL0-c?p&OG-wY&u~%uFYEG!0?+m* zbdm+dBqZS1>XjC0#ScjE+gn@NIXSNzT`x9eMI$v@Nce^0v;eB^Jf08d(nfrJIny*5JZ8~jL|Kj%d>FEm>F6>{E zC8;eYvLd-E5U0gULxfNzBO^QcvnAcFCD5rAm~HTQt_4>_MC5F};DV(T#d+d`gYi-e z_okzt0_6=mtJv}k#V2$nTN<=jN(3PhQQJJa`E)0Gm>X$Cfkx`h?HT9_(k=h^VI%q) zVCUAYfzVJq<2pVA2fUDX??hS13f6{b(Ma;QMg>vj&42xRlZDF4%B=mjHEeBd&CDjB zItC+%C<#bN_I7rLS3U{=3aAe|V*pC>^YUy(U$3vP!(%8OBVHOBKOO^TaXf-h78x{~ zsHlODM0+q+ZYjMdDd=F*(RHFMU@=zu?GWLif1s@``&UT`3~iwvK%XaTpWQHQgS_*MUu0{q4F{d3(O1SM|c_+aZt4E zZx>HEIXNjQDH%w(g@oJ|p6K4Val_9~&h&S%gMQCYY^%-J$w}vcDCN207j?Wfe%I2@ z7NSKqCo2mI3LM)G&d$!%IVx&ud^j#$jUfw(h`?uNX5M&^b-^-8hdX`RfA80AEiD4N z=)Rtw)b(egB#w@bBP)B|7&f;Uf~!0{i)b04zz$r?F~-Y|g{B;FqZ1Q%D@?CkxiT40 zAjw4PpDm{8ppUJrsrfTm>F9_?Bvs;~kP*5Gc(Z{g8)a4>*EcqFbad{O_S%Swi;K5> zDi;*jOa-8`ad$5-HPs8orW)J|fB*7|@{8zb32A9%&z~^{yougTAtAWGQ~8ObE0*CM zp*3e4pP(*UV^nF--uO0EsR8?|NDGT^(zE`Rxw&`EmlK-uKU7ueKB2c~lET~G-nRH~ zf9SLWiUs>Nv1lF6dS+(k(W6JczP=tTWjQ%&2h+$G3bpstq1P9dmS`_u7FxVqd=ICr zI3i_d7^ZkpQPIzzKew9Cn@$a~($mwgQaMjuy34tvl~v4wI6gU%QuexlM*1EUu}zMQ zRNkL_57dJH^cb&QG)g@+d^x&z`+hIE-pJ} zU~GI`U!JE#*NpA1CBb7~Ul=)jiy9+6IA!|8(Q=qunM!aa@87+XdARU2zV||&P9pxL zOR>Gn!5>!HTkI;{nU+jNV{lMo*?IRFSzkuB&tJR$b#Qd_Z38pJ3`)VbExDFB@3G6 zXrj4WkX%}PoE&jlOw7#xI@8C;XP?y$TU;z`-E_Z!?2_aJBBVW%ysM+5yEZA5qy>2q zr+Y?|!XAhbKuLIb_$s5WTpr>e4jY+4n7DwJ86O{)cArVy7nYR`#(K11{9K)!c>f!e zwY4&Oc5F#0DOhQywBWQ*VJ%7mVq$sk)lp;egeRo6{PY>;(=3dPt&7`mm%vF-`(s|u zeRdu<0IcX0D&?u6onr{lb(Sz%v$M0$>s~LM2V;pusiHe*X=zObA5D~5xw*Nee$>#@ zBMoaEY+yAAtKg)7F~rDN)N;-}jc=Kbh|u-0v9W27Aaxxt88YE@6HXzcRX!E9J2X|Su!;~`GQ>~ z1+KDkb7CUR(e*XKg;n6qYHDi0_4PBAN|$9bbW(&L%DgfA6`Iwn&0%0+8iOB&w0jgD~W3Il!^bx45t3Qp1=+`X!dop{@9j67#VQZ$5=t9tH zzlIHizK+g?p#iVRcip3cR_#}Lc#8;MU~_YGFJ8O|C3kYL0Wu<@`W`?YuuofWoKj|D zJeYEQeSH$7rQ983adB~9zUT@FV1+C`7!(;xnm*Iz4l{BYv?0hHWLHv}nVp^eRCoN% zy_u2#L4sd-w~Oqu5S4NJSAx*D`T3!jY^1W%(luV|awAmjDju8HGo95Q&$V7qU~NXv zw@rWaVLpxWc^)aoKq7iU;UYDf?+Pxk?rZ}m7t6Dw5k=FK^SBIh__1x@GH)}nU`HSj{%*x7MQa5K93RR2~HkdTq3VlaBlE8m=EQ0~+9 zv{Y2@ZCdf*iUFdWPoj!-xf3wy>9PDt!Qz@BIAoD9tlnS8Qlj_a>yr`@#dn^pZ*E>A zsx7zrXaWa%`?js%6rSQxSa5UmdDYtC?LH(z^#!Y)ms6_uTr>+J6C?zeB>h8A&E zsPC!W2A`Rqd=#YXZEI6|G(cM4 zIR+R*PfIH+CnqN>3vz@wT#d6Mz{Vz6g^i(TN5w6S6GwFriZY+1)MPXUEuV|SDEy9y;A-rv7})j24I{&nc|^z@TIn;kZyJhw6=a|rL;J1qifSY3@| zyvcTf;*|!QnArB$in|fZtH7C^B$>z}Et>p&EiK>7gtB&Xr+nkd+N_Cc; zs`p+a=^nd8&PqXm5TyHP+a3YrhWgG(LVUbke6uR|EviJXcLfEPLfP8U`sgQ$Cx?ewJnCUerQb$J5&dB!JagQW;~?I5 zc6Yto#%{c1UHbV`PF@~V<@)zJ&&I|^?x-yB^x~o-OuDjRPw)l%M0GY985uFL+r5^J zfoJuS8E5nDk(2j7REWqLQfbTD8S~R35XoWWwRt3X(3v1O&F5Bs{}xTx|8sEAX(Q_S z^9u&XS4T8`o+@@^c)0(KEHyQ?=gKgbT)Gl*5iy+_?_#uyrV?IMR8(MK;HoF6q>_q? z?fnVs%-ycpXptrc1_o0ka%_59h=$0PfsQB~@EN{17z}1+W{&-D2mzjZdc-U4-Q2m| zKQM5^_Y2X{ao9&E6*hVKCj%LZt7xPk9m>RHYHA96fu`SW#7as^Jx?3MZC`iT-7Yf5 z3o$S>%vq++Bnf}4uTMr$Y0vvxFMm2do(e{HQr*<#$RL&VzJ z8h8~N8sREzqKqm98(JnNbfz{kLgH*jzKBBO)qK4)+3*(OZ+7yZW19v zdwR4v;+zWaW;qz@emr7iWIR@m)&FQU_`pq+1WwGO&XPO9%-Hy8JSSz)B2~PZfm-`5QMjFZayH39GRRn zGc+6?9W_Rw=&7lV%+0m44LCSB3XNTijHtoSNa&v0=WX1-ok=PsDJdf_FVHd8+Nuf| zp}<;BdRZ^J)TOc4dHytWWq3Wuut4T>oK{=&p3MoH1 z5DZt#9$A6kd&xD{)YRnWUO$NK{$U+T(^eSMk|clv8cgfyjYgxl7dlcztWEL__w8*M z@(p-3G&J)6-0mu@d(K9XIpFT@?kJ8Cq!R#)%gM>9tCI!N%*mMxhJc)0eN|Nz42r_S zXZi(y{``UK!B!M~-ditYrF7uWqxpA4uCA_Fqa5x1>lAMb3qS8AA7-61GDO%aW!@?n zDZkS=H9ei4l%$bu0HOmt0;orL0GO_$tqs%e?c$HQIkvRE@dt+jEn^r{{yx+xiGsNJ zdpP$`pVW_No!80?c)xu9tgZwBzN`Syq%AEcF{rm86n?vQztA-%Oo;-O1 z9F6s*qbNhB|IW>a55*$e>tNPeSfr`2&3V*uADQGtP?FwJ-~K*4lzZa>9^PJ&Q&5m{ zoR(x>lu=_qWr*$TuEp)6(};+O#RFr{)A)@s(_IB-a7Othz zaEj;-pg!>?O}RZoHu)BSbKKN!`X)VHk2`@90aXnHWiA~^pDWH&zD?=HjM~mlO=;;GzG1(n zf8#Y-R6|iwv9z>w_|_-TS8Ca!JUo%=9E6BaFb9DVj*gDP4ILl*F+_Za=sd%Vc&cz*K|#%<-#*)mN2w1h2WM#*so5Me2t#=fD4#1ZjgO=x zC9SwQBTl=lLD~icoXySII6L#jX|1oVwJ&ZL=%=r4ZUQNT9*7UzC@d~s*gd*`?Fkxf zFh3AvVZr#sT zgCX2zR{=kvpeBcgU?#*RCwDqjx}F~{?jBhRqd-Z9;y;ruCiKfHp$S>J`=Yb6^Pjmz z$^eJ{=1s})ebG=huv*~T!>gK@c*w92g>zV?z`XTX9p#ftzhhwV4@IB{pmO0VSYJxZ z$P^k1@P}Nm^Ti@kN<SYXy*)h( zi;Dnv0OL+hPVnvFNZ@gWDd1OK9j0rMFkJ1r+2uEJwiL@^7)?h7&bxi7QUH4RTRbG~ zFoK4snTN}xjrpanUHj0~l%dW6*awddi$(z?`}_6r!&D1KyyX;J@Cam{XjAXKy+^t) zkFEQeIw86^X=EyB;=Ubn=&uyrvEWe$^fWYpm7`;0 zlu`d^JitgpLjx97E{^#Eb$BhUZ^=WJrTQ?v|Ab!?xFD0t5dB%LiS zIFao`zr!viX-kDX^!|@77LxMu%JfnOv;CTBd@_O_>+dfsEhXjpWxz{A&42PT!fErNE?Y?u6~uOsQ%9IoLsIoZbHG@+*}q0GYMp2?;m^ZO%b`# zF5vp$!6r=2!7VXu7XUCfrmY$60~EO(u*U;J2Yd0!zCOL=!t(&@%U7qm=0`o{22TnwXi%$jnsc zqPBFoh>K7i{JpIv5D;gwu(}EXObHDt=xiSaBme9Ms}P)RP_Fq?Q+=c;Nm!SS?4eU& zuf663bRt10e9Odz)x$%X=#KZ5m20c3!z}7tu7y}^Z*Q+e_XIf~9#E39@^TavDO)~2 zo?7;xT&rp zMCjSHz5{xq!e$VQrHcB|_-AJK;9z{;v}+#y)>a8A9wSC%UGGIm`tW5erQAKQYaw}U zQc_ZI-zn1;5}5k)$!7i&>1)@1E-wBPt<$BHwxSF$*GW~QlD6?l@42|Tg36Cb3SRJ_ z5IuM}HZb5mwSSyYC##48&!EHZAt)Gldtoy1GAvf-=FOpHiwYKrwRsaD79lEw`<~BP zC5_E=3U zj6^I}0^@rSHN&S1c$8)9^HfbSB=|4o|9q0nHr+{`j(@L^qIDHjW@%REv9wm+9C);I z51F~7&T;$3jZ5KbMerIMeAcoKbW!REJXN2qbC1*vWKGNiCpTBu%Bm`u*vbDsN?t9$ z(C*&K2#g-o9p8@O;hnkGu*u2E9nNA>$e5(0XlZD`|DmU+2aeOnUl6xZQdE|kxWV`N zHtYZMhHhmqRi*Hwk>+w3IWs75WjK$OmGw%{X~oZi((Jxd^Pz&`Vj_g?Fi|{_fEZCdJ_7Nnvs3?P z;+rZ>%XGsnU^II+TX(x&l$uxfeED+!?08>QRW(J}DwS*YHm%$%uavfu0B6**ff6c6 zH~w?rf{0!^)Q@tb3aYl@e8n-k3and8OV#LkHLy`24vGj5r=_PK_{m4d6l-E-rHFkq zY>=*TG|2Ry)h8P+ta1t4$WQ z*@g=e(l8XNU|LSqO@ckRe@IGDaDBAMDB)(ds2f9>zKIS;od0$QJyajO>76R4xYE*% zzh@_li;LbBA0BdhuF7WiE&(|_TelzfoKW%XVS_9IY7p{6SquTu2nc=}+UDa`Y+GAf z?v0lq1|g>cH=?tn19OKV@%eM2gc!5jm;yY^|NL3KZU68T>H$R?92^qif4cyMi>vmr z?%!)~8yYSwFFU%qk*W@EPJg^>XQw+yQwNa=VR&0Ky~x4d9!}R7Io>Z{s{A1*Fx^Kq z*D}^m-#Z(7dcUu)c`(f{B0^3?^uD^*2y0wF4D>R7)!tE*#JAkV+H+0W1p$u)TG z5OaBg#cw}rBJL(>nf^T!nvRB^{))n5bZh8EeSLkncAyQNGL?{ae;pl_?43qsPD>w( z+||{Mfjq+A(L~8D(K7wl%t*nllamwBIbbCy!*RHM`=D{-2J_I{M6Y;41jRUy73o*H z=nmj*HSV(+XqzOe&c3m3tHz-7KqNA$xmg)M%nMA?`<0 z!QzeAvSM%}O@Jpri+Af|4X3&*7Zd9F61I{WwAF|5jz=`5{1^9Val!2X{odQv6TCwmc ziW>jBC4V~gwb4oI&R&F`weuU*l@?zLJxsX(Kj``iAp`js2^4jex zfZqd!IaZzkft#Rp^{fUP^)c+d2L(*ucQrLA_oeoyp88jDP&`?O?hDxRCT%^v>Dq_6 zb#+JoSklPIK4VyfE;odGvOh1?RJ{n^)I__*q^=O-58JhuaYo1$NQc z=;-0`v9Reo8^|jlBa*x941OUY0`J*wjw~Um>GkW^!vG_vbQ1ITHCo1;Z81uo5Wl~F zKiu2v3RMe8hrwXvro#TWwL<=@_||*phhFzY8K6(VTKAJSl%_``FaP-G_bn_e!0N*5 zw6x~^aSQMXiaVuIzrvxT!8VaQ7BcuMM`6H>do68aZqC5WtmwtvZlMbhda!Cp1MX;D z9ftgtoj?w*^ij>riHQlwRfC;vtDSQ-RY`B4Ae3HMh=(BR^TW|PSRf#Cd4KQ0_u9DE zuWRi(h@kHPt6c@&7{dG7+GdYma+7+)Ky&+9umSIPAOc{m-J8BH0Evuw$o7D?64>{@ ze*FTM3r-_bDZqS})Gtx_FO3`#)GOX9Y3cuuS^xTW1<5^M-1>KB3>~E1sz>P`}`mS6A=Pp8xehX2u@*2R?fA0XIbeyV}IfR{rJJb2cp-8#c1Y6Ht1iK4eSUc>ki_ zgSSfOr@Jt_LC=?2)Chwsc!VR&5myMhKrOpaOgs(8)8OmHY=c?=4hX@mUKSc|U9cQu zB}NuGgRPgHZ3`9+G$R;r#{5V|>!-G_)v_7vtwY3DF&Qy$vXifiYwdoLW zFMtw_q@!;CvA4f}5g)%lQ#q*X#bv0vohx48+d9v-ii52VZ2I1S~%2GW4!mq%V+6j7hR+f_VV6LiOmu$4>CNKCZ9dpCDq z<4D_&VXin{g;Ddqmsg^89@O1KP_$P9582cDGTJa;X0NZ`Ckn?)CcUMq`7wos%n<;h zyzwCQQB7UZ4`eWwzxAG|ZJgHCfV63V?8NdCQIZiSNvbGBMr3vGK-ARg+8T&T@Bkts zBRlLWvftpK!L7%RY=S4C%SJ&ba;L$ej|rRvU;fvyaFd;U! z4|d0ZS3=ajFS{+@p@D-cz_CN5*j4=7r2!0!rV}C}BC7Y>FCIOrwfrYmw6(QWOwmh| zyf@xAH_wiYc*18+$fdw5W5T^|P`FSt8_3Mc3btYsj303L5vnly#%E^quTl+B=Ub97 z4*Eyya+jM{aLCD-yX#!0kz-&$(W*Ut6ap3kP$nRC_r{8maFMXArcUt#){P)B?h&z3 zmvGxFVUF$q+G_r9hHwgzh}XkXPWtnnwXP)(FuQ~V1tAB6;`M~QBry>T8ObH1rVOju zXQ^SfGThww(H$_ToISJ>cessiQlXJtwJ|D(*5}74I0}e(Qc_Uh5V*MsMX9f@tcY>+ zGpHk(Vt<0r-`FTUMKLPAEQ9SS6=f-7|I@>Vs;VKddlNy*Y-nTzC4n+GC*mm8I}vD^ zN0VJqx(|g@igV=hRR_ZnjP1#?FA;|`Eh=)}{n-av0DMiT_tN5Gyvk41F-snGU?)NX z4D54t!*yhNkf_$BM8Wvx7OV$=S4x7vxU}TG@QIKpT>R+U`qQoc3`ANV86jasRh0sG zg;0t}JkRIv9@t_LU zu-MpeLbE`Sg6mrP)q=WSyN>Vg>@10K(z6b`7Gx_krATZB3}g#CusT( zvKpv{gzq?PR8bzDo{9CF-5K@}#Aaq@CTzBWya90s)$jeh*8ljX8Nan=lV31)XB#8r zBg^ulpn!)g5=4^Ohx-`VpMb;?u0S{WVB7{eI%Guyfh2jkKwQX?JX{EZQTMX`aTUh9H1a5CB!K~P(e`<+JcQ>s>(T`xjD$rjw4oc zZDnO>!32c1pP!$Tq`9444&;Q8Wv~&z8piLvJ>8o(S2i{RP7f>WV)uo!iE~1$Dg2~! zouzo=w15cnkPbas|N3wHRFy)~eMaHZrAx3abUl*n;-yPBG&Q-oxg8uG0a^`;MvIG! z!ITmRI)(JX7>T@HGzzi}`UzZZsJpqjIrv|7A3w^=$b3nYCJ)Vm*90mMqjeQv_4`L3 z_XT$9a8sAFIv6#2zw#>mRlI7p S@@-fn#<{7XuU@8R6Z(G*5F(ub literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CBF393B4C3206D97F3.png b/modules/many_bone_ik/design_docs/Pictures/1000000000000139000000CBF393B4C3206D97F3.png new file mode 100644 index 0000000000000000000000000000000000000000..8be46c6e6ebc8dcdd2789c606667b2b22d08a6a0 GIT binary patch literal 12583 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 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/100000000000016C000002AAA2059A0E43B2B468.png b/modules/many_bone_ik/design_docs/Pictures/100000000000016C000002AAA2059A0E43B2B468.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8fa6af5bb33615b1b4884e723174fee8294c6f GIT binary patch literal 42382 zcmb??_dna;A3aJ@D^hzWM$Ou@Xh{%SRccde@4Z#kjMx&ZMrldaR-4wQwkowLVpr8x z)adt>_vicl55AA;4}@3lz0Y&cInQ%%VxK(Lpt{9!i-3TDN)rLsBOoAjB_JRwB_jfU zg2o=r5fE?@Xu?(W0||HDke;y_O#a)v`sKo?TPp3mO3@_F8# z{HZy``F##T;9oeOdWZ8$>!sm;-x1oP_A|pY!ZhBN&^|{=Nrzn8?e6o~pj`%D-w*iz`>S6Sh^Dp=OqRN;M9;~@;9ANmexDVQh#&TJL4+1pMRf}S zJs^S8%e7_&LuinC;!^4hVkT&FOl6&iEh^35c{|9868(2X2!;*yG2OmbV_02nx=lXl zMWur_$1j6?)&7KIwwkFb6PmEh{8_A<_rwC({<8h@-U$=Iuf%^F)hwPz)CnG7_9 z&LYciRoSETtunT~6DiT3hHaOXnV{jgWlmEC;7>BBJw81C3i>(GAF#S90e6=FMTs_j z?4s!r2hkgkb=s|Af{r9|w%;29CSQ|aXlF45DjC+FTvlasK8IRmq< zV3|$I%Y=-N;r5DX8aJqHP!rx=%+UJWDTzfo7&f6+uSZ%O9>=7ntPw~1(J;}57h|1U zdJ0A&PBzL5jD|raTRqY(u1G{TWQCDVl4wfH5c(y-cJ^x*NMJr;;!iLW)bEWc67kHT z!S|GxOVt|dYt+j)u>g!LoArKZz&22REJtZvYYIfKn!IdxT>@TuFJQpvD@c=r^LoBZ zJq)5Z^CV*jPKm~7BeX?h1V{Mqb>|_d?!1QRb!&>?M4CagCW~MT4of{r?hcTX{qb3= zlSY^=N>T1!s{gRykpdE7S5!LAI0z~^KIXMlgz*H0oO#4E0|*pfH6E-5@F6c!|Ct|& z_+2#74nd;sGh7z?;UD#5#{Y7d5}l-@Vq{JL!}fj$W_z%fu{Fg6<;_kg5RHcD9itA< z3xF|#r3Iyfk|27ivBF1gXX*Clu7(>ygD>1D(JkD4dk>X>qD{aI1{fvag7R*YpB(RJ zSn=vrWIYV1r$qa%_Eb4r6PMFljNF4^W37aLn=wP*zsde<&IH3M`!M_6p+pz!;x=!w z14Dk-ZSpA#2WXN8(@k{JpVy$jbb zArnGNeARn8-2-xRK06zs0#=la-J+ElhQ*~A{3fA9myQ@uR%Sx<>Y0Z^S}D=PuwIXT zDPWq9x(&WCO2SL!Tns+hBN6HLLeupUaBnKsc7YSJK+r)=%T6qo<5Ou1Q1JAu(rrJW z;0it^RXGq$aPe7mvwBAi>e084-~s6byU^P(>~QVV7#9GQRt&fI!XX$r#mmf*#4sbL zqV%}(yl)Ev=Re-F0_*a#2>Y0^2UPOiwf6@FjK|&f?3_sbLA+f{fq@~EB*CTmaVJP% zI%HzUxqMwB1?O30f19<59f^1@cNSx-i;_yK!){0LINJN=>#%Mf>677D*A_o6tm2uBM8NdnEOV<0ZA>+NByKTwV zDBtc}$^TySNuJ8JBBtdY8tQd+urG|x9|Sq!mi^C53b`aQY9&uD48`EvvLEc4xn0hc zA-urG8QP%>WT!+Ek*4a2wl6IaHBo9k4i&GW=Lr6vks+TzUoU>bWDMjWP#R zT9E&(78xWWJaXW}t%R^J1pm;G7LORh?<^dm7h@ufQ!@7XV~eU9=SHE%q5Tw!6Gk$luF+YQ0kXEV%_VK za0yC=cBw0XF2<7$CM^d*C4VV1j{lNF(Iytu4q6H}=c4ft%&VQVH(uNi((NhHO=BfL zjwsP{+D_!|D2QH!rsEQ?7<^84>c^30C8c;5bJqI0XOaKX4SZ$mh-CpK=;W!}12aK? zv;NvW$AaK>dbEbn`U?&*xU=kg-X;hVLC*K?WhOufOU41Ccf{eJ94ejW|5Sc5Yn%O( z5Jp4WZT3ujD*Jwc(sW1ucmqIab#BFA1hf4+ z!|7$CY&E)yq*c!%!&DJ>Bwjmy@3WiKwq~Caz~LDIBrt4u?f1B32UMN4{^!5BQ{&=O zHR7T0T632MfXG&jA|ZNxCcn3o#Ni4Gm+WVrNCfH4)6(n}*uf92=iiJgm&4=efgD_VeF1+3|W{HcLD^Odh< z4uJ&DiR)Jm0YPG#+*SHOLtCTP^Ef*gMj&JO>umBlYQoF#UVx4Y%8?CCMF>nOCwuB8 z05(6H`9ueMlrOFv*lV8SW`RT1AOIPLP!YC^q&L}+@#=R~OQaX+_P7EAJX_9x2G~*- zeEF{k5a#h?kl`UQC0gsTnY^e1Xb8?w;Vt*{YnIDy>Hh@O43Ohk<8~n%X4wLA`ygiM zoaf{Q1csG)I(yC<8-WlT8Up>i6sCU#@Zm~doy(}B2=g1dG2x{?Yt+QS(EpZfE05)Y zEx?QZ%TCBV{>LvpcuU-PFH~N zn%?jIaX>z`^A67+Wgde4;+Dbr9+^0c^oz*d4qr=qa8) zkc_5e{=rpX@&!P_f+XBou7tgr7m3h7wo-Bqf&{vSCvYqPW4!)ie%b*VkaoQ+`UdPV zRoJ+Q4!~%3MP@JafgPXh=`=bD68Jr#zta_h;;{`fO5EIe^kqZ(3!u|_l;C!rFJwKc zaE}W>uEjCwFUVn7@27_26jNN__6$HA#%Eo&0W+da#o2C>1dul0HXO`CRL(NWZP*U% zlL?Q<_dGQy(bSZ|PRbaFUUo_GVYG3)5|!$Z1EwoWaEaIQ#W66fg1+edk^d_$wSc%d z%e;Hj43M`&Zz~(XrUHG6`j>)_P)zTkf_Resa!29tkQs{Z?$WVm4W|Rqx-Bt7XM5{e z@RrIZPb)MXg6at@1002pZRL;+YK=uE^r_PexOuB^KCwI zPuDs!*Uc%>HN$YfDsFnXZ3!6+`{_H|t945BSv9U*Qy zr4yUuRRl;QDpjxgA@CU2uDCXHBw~zv?&T(+7)!aNyRRW&ChBX*FEW%?t!@POyTO23 zeOpc!=~Lqog%0{aB^Z_{Re$5*qbLB@pMm$>$QphH_?JtYzCAeH1)T=TW70kU;aNKg zj6OKjjtP2_JKgYu9)@*;J)5Jk#vA8SFDpJcxTd8XUMl`Rs|o|b1ofX${RJv`Jht_< zj}pC`d)l=N*pZnhhJOG@H~9FO{M{Bpyf(#1uD`D7ssdceS&IKOIUqCAOS%C=pja0A z(7PvOAo!)QN7LdXA$lubOt600i7FCNzfopx^f29?5XB=y{2Z0$^5@oP79_$7HXD5h zkY5}&#v=;?=C~co_nWLqqKC$zAiJWp4PFi(PjdNU(FZD-iAvx0u7%mEmQ?187Nr1y zq?1T^7L3sc>6%#RK`GHJp$1G)>D-BiAK?F{xq+W%kpEz)n=(Aaj7J%eOYF{3*3n-k zs61)X(#9Xc6afoP=z+=Nx{Z8p$@(-v>_bj&-?dHR)&E*Y{pozTBiIFU`d(LeVFTz5 z$AQ923t>2vl?X5ZQm1pRV(_}o+M+s^#je@BT{7`CPb2m|2m&xdTp=wtHi_crD0HWkt>agE3&dL-b>>y;YQ zsGtvl`DJBLhunf;Z$w%|CS$c~A8FYRFu9Njp;?AQdVn4TdNVrTS&nE7q$xaW2?4^P0W zwe;0rK&=(3McPC-p+E6vfa7Bv<5+S6~7`zEklgC$u&@cb>8zpxE<5c>yxc7@x7|K!* zJbVZUQ{vB&ko5mKZ7!5BsFl{vvLFpFhSFEt|IHqF7$JIx9M}Uwciu+=PxSTNFZ(+N zc=fO5E|ocu@ocY(J(H60gs!Z&V9nHZUS5gnwj1AD1A0L}7n?@|HYw2|tA?uqz{nJv zMVh6Jkbt`z*fKoC{-=?oq6+lDHr#W3XwX*0)Q5XSdZ*Hl6DZt|nW>}USdgYUAcrNJ zvJpdzE(%o@pMg@S!)qO}YJL2t#)^a9$zxMsFEO~OtPs1Bq!2oZ`W4B2MH;v*yw*Cm z9x%f6xrgeR!yqRq)yvaP+I|YOI0KAF4pV;~3(?Cdas8gyqsr5)Z~K$Ug;xkIGoqVw z9|;-XAgsFV6Nd}lk5*d(dbBOtij(v5EQ@C6?g9hAacg1QEGdzQmzxbF0T~p~0toOs zB;R#0PbJ`5610;|lrC+?(%g24B7Ci#hduMkY*A~>^_4Gm$e^8ef#mpF{|$8l$nMQN z!vdhj^f>qVe& z6{Rv|hbjw)%!W|EtH=9ok|%FwGZsu_P+R!NXFNg(JRa1-(tUrD9*+t`3^wcm6&v>Y z^UD@x%USFGlGGqOx;yK?N}pWK0aS6XQEe$Jtl#tdZ7UR=(%1BRoOs!ts-|ezpka*B ztz#*djsI`!%(T>BMlwT1I9KLEfQidIHQ7lNgU7LtD&&vEAd>L%_BT}ezsVKs3Ddy! z@tS??o36w=n=s0>N+>Zy@o|=Bt@(v>IW`Wq_jJL(Ac&O0YNg?!&M?HkKtiG7yY3 z9xxNW4xfyXh$7tfBBR-nZF8wnT{Z_)0{_xpKnz50safRsD-$%D+M(icFQ{bFw_(?w z95wjdVN)({~T+?i@}>{&y4Blek_AIOMXo^;7)(;6YH<9=0x{Pl)!;4 zowZLnJpdXIGyZWoPKLsc9^U1!6NhhK{04gF0QdOMlBH42dioE67D>Kd%^Xl(ly3QjJmBK;aYehy zknxFqzk!^Jpze^Qrq83O!GLatv3Nt1Sl@xnNZI4v>{$10b!NbeS^iiW*23;en)h7c zlbtVfc|bEUUm~*KJFdzD!5gUXBi)*(z~E&d>z~GoLRr&xv=0(XQ@Q@_=ktH2q{2&$^gUWjg;8Kd6R}s(;z>rh|h9u2Jc`!g4K-Gxm zKxKa3M$uYz=$ng#F{{bS|p%}_3kvP$7x8(g3=45IXugMPSg;kU?s<|zs1_2@_u=gXV+tvh zmWoi_Wav+|VR9oA^nKp%T*f}UReW~XKnK!%3dn!S(J2rdZO*z~FIq!@K?4j~ADC93 zn~pfD)g6}vCaECK+gwh>RRbg>m;u*GJAgB#Yfj`m$e_(&sdD)Cfg7rs0*M&z*#B+~ zxYkQGM>!%&G!iz^D*CbL#d>LtqjW$PaOcN zo>Xi4O-bzm&y*Rv)d;7R$hV|uZV|sGP}cJb2OaF&W`XYj$=YQnVxB#G3L3*JIA+AP zIuodwzoLs@!v>c`1TdjCssq_>P%LN8?lo(v6t|7^RxA_lk(Nh#TEDT2bd2Q5r53O& z<*P=P005nf?_hxC{A61oxl|+syEOn%^?>4~K`;=dXw^=BbVjay+T zXQ26UvW5=+GejcJH;W~WUb90F{_9b*x@BGp!m!#mo;4?HQlO>qY(J>|DucovWy@UQ z9_&T{)vjDO0L^x|I5?lN13jasUQRo2`}iY<3iSs(4*@nFzf4OzqXdwu^LX>F2r+u2 zrUeXj;WI7=y6X=W7XSzU>TT$9Xt0krkgTM1s*5PH!gDxoPj&U714@dc@NS5j6$ogV z8Il_e6Y7m)CysM~l`VEv-%)(;1gX5;RQeT(grFd$I6^W?$AUi!`^8M5q zaCP`~YvwBu^Zs*+9Cs{mXylwVZ2N1z1h;8xyLqK3~xl|75 zz#_29Yfl#!*2RHPxm}?R7=E9L8x9CZOy!#BmHdR^-VQ+~vHHhlDZ4ey(4V~}ITq<8 zQ1q8Qh#5d(zxHVGu~p8m4Mh}PCSZ`)vQecifa^%la$fQ)ibnj!uffaO>2MvOuXz6L z;WZlHJ3g7cn+(xwVE%b|LJY9aP|i0{SUO_Up+4FO$ck{wh6fWB|d!(eyN%8*$TyU zWBm7hFgzqFsw*qRCFmLIQJsvZ+|zDRAR9)e&JBx@K*o#pdF=358BR;P2BO$;9o-kA zfMs1gsOISyZXo3!(?hvEBrm|zF+IC`nef`aj zaFpn&1Q)weAZ6N_@Y?~-0@zvqdWU)fZF2vi7H>^PIzoQ4Wwy*3C3P>tFZjMeHi=$~ z?$rpCYrGiJff1+sTK>jSgh}@UZsi3Um?+L8;yw^RUh1LMO%|oxmNFBn4JF{0UX`=l zNW=(VUCDg4J(X8FA{d1gpf>@cQD+OSYalotxKmt_In9DfsAGb)@K&pd)#}V~!`+kyGvsbtb6zjqm9?AEFWP2)3_g1;}hR=KmprH{(&3F%JsBL8O6-c9o9;M+Fh~aVn z35{5NMa#|qe7fEyL%KbT$lA7H+qo~Z*3=n57H0X^}M z{l~~V|Ft#`kH-j6*i*yr|I zPzDY!Kz?5+;v#{hTL@C)ocl!!TVx5uV%m3PhTKe^lJcqaj2><{lP$w+!7-91Meil5 z>`?mlrKSPz#6bf5L!SYyc1=*zih_)PlHXa&Vurq9yTXJtNc)JfJO55_DaW@J_wCw& zmSfhTm})wc3Tjf@QVC`r)xuIeokb`A*GUhZysL;nx#Atwv@7E)z!m}Fp|?Xq7$W>X ziFgT-un>dstcFbm{7jbbHJELZ&rLO^M{NV;8*$EfFKU&e|dA$8Z5vD*#ipb zW6(g_`ZKAx?yQEdj`R0{aQ6>Hbe6P%0eXZq!>e#04zI!?2qAw}OC*yP76^M`SnDO! zFc8`fDB4QDfDwW;@!Q1tPa^pbY8a0c&$B;p7p?+nAe5Q7Vg;<&1*Pn#cA$iB0B)7a zjwt;HgiYI$Gdm};5s2?D0E$K)>&`9#LE{Bw{olVtAn}$-6PU09@>Ac=yNnk*ZX@Iz z!DHJCRt%FB!7sr;7LeEVI6ogU{*!s@cyluf@mCK3#)l70llh|{rxUWwt4kns8-4P# z3gG9z0?z9sHw8z!u10PN0O`^AAhU3HGr%6Nql+r7sz$<-Xh@S(IBzN_tM)zjf`{Hz zu|;krGMSv`aX|lT|N7rmjimx%iOxpY2v_$3glQi#Be}tJ24QLn>alwMg(U8I9C6&m zrbaj!h65U!A^Q+-SU*y&pKX7YXt*{wBKm4#smSmn3i) zbVEo%d(GwsKP^Z=afmgl|7^7LOvI`yL+s$l_t9Kj(tu@{fMr;TCDvvxlWX%L`o7!$ zy9!3&~81T`IKEqj}xJ&i=F^rewamE>G-g$anbc*6;$$ za~HmcNKxk;%R!JPi)R6nF{eq;Mri9a-1tFHIQP;Kl~T7L z3?cF7m}7SL?j><}0cqC4EneBELBvfJOA2q!0SB3DnJnR(T7NZ61QnjJz<6Fp@Krh* z2%;xfMc%>H&BWB%;I}CduTeHFB&#B?pLfE&9@RXrA$cnNS}@6p;ZfsrB#C4I@eHl~ zZ{pejr2OZOg=fzfE5+Jng=eT3cB$jrsNx&L-_Li|>`9muw9ixoW&m;9B%x|>%GQ1Y zG{`$h}^(p!5f0}x{QJB3BFb%Iz8>!HXj_u#iwRL*6mdh-bX((v} z#7INP{(5ZI!2bDZUtjInsO)l|4|}~Tvor%B!h6^!_qGY7nZG`nIm(oWAcptc%KlPV zzJ6hx2WEEaM0C=!^D1bkiIEq=Z{4;`Hzr^hu6h3FUq|jgQlBNlqeb$gC31>uMus*D zhE~#y7RHQS!l8@Kxa*JJ1mzrLE`K8YTAyE0f82Zg(aT|`jw1Cv!D}(N=V%q?0P<>f zqU!y@z1$qS<|Rk-2VKeA+1)glaH!x&R5j4yhn64;g{$W7LCMfKh6GTI%5CmmbQe6? z3oEEAo)iu)82Hz*1B_yk&}WJK=pQ3P3k5?PE5oas86gZAq0|{3I(tmB$_AScT{)vqlHVa7rLG8G8ih0o`fv1BepRC-J z)8#igS5X~c3CEmpBB{)7YstK1r{1C>O^$$Fbl_fe=w9JoE8&`2mwP&g(|C$}Md8#x zb%>k6C@ysS`-%?ul#jZF@j@z^4XvX-jwL`bH6Y|vZb$V$p+K5`Y?Sj&lS=R!F9YA; zZ8L%-z~w?Ea;4}W z&$2$|?0g^|KK>rmY^%`}a#LkZP>dXNa@sOdmCTJg2w{1P1x%XBA{X5DHMWo^QB2og zlTGWGC+S#=N6WkrUi<9X=*f?dYf2CJX~#weX}X->X)SEoQ_LKD$t~aZ{PtlvWv>G_ z--TX^EPT=7HQ!AhiCc5>ob!}(q06nM`QGzhQ&x3tg&kM(Y&j0+xz5t$%wR4#e=GrR z`j|r!%|_0NKB=M%iF%cAL+b!Ue#a3gu50J>QFk=I6aOQ9Ejdyxa02+y-0p9$Bru{W zcj{mFcQi4{sXX#$-#xb+aH!GF$o$4v*CZEXqO@j*6-(|okXV^$988x3$%J-6~Q#R^?>{Vo^YOK$daK|h@c8uNEAWe z1I?Kb5fCrAdhD_JbO_m$+g-|Ok>}t0%r(9DKDb>9uVkRiAfdDeL#TU@-8eZG%hw+H z_XzLiQf5Bh)64c{gx_7Hz58P}xNUeAGB;|)a)Pfqhc zlR-&e(ck?skP7+Sl@1K&2Y*Jhe`{F3Vnl!95w3{D4j%hB>zGZqit;u#nS>dFDYNk* zgL*SpJ8OXOqhShSiw0-WOi@@Q+Ir3ikz>QvUS?b7{&CmM{i7_QRe2qjm;(tVJLo>k zPnP@lqbumbhB~yXQwI_{*Zi;c&keIV8h5+zP=i?>IoBWw$~PgeNc(;gl&%U$|-PHf_4L_5eWkx$!heRy@_>tC5mPqU9NI-*@d}k^0=tb9h_cBsxxzg@r z6LAF@?*oPu_RycQKSk&T1q?2LR`z^pnSIE5(W$+`i>Kc zAHR-@|MHJw0_3V%zMrrDQ#iZZ6R--d z$hAGO*T=D-o6afOs(IO3>Alvl6}St_NXa(x`)AabTc14_|IppDTw?U}9??c;!)ya6 z?#`+7r`V#7C%MKs-8pC)g(J*p!sauYtk){-c(nIS2u~}cE)45I{1}NZ*1TYTpn>|V z&qGXGcq2zO))j-j$A|XUYlW9U#a|#KrJc+D%zpL#B)Lsy#Z3C9<_N^w zN|XkAFScd)F0@&wJL`v(PES}rL6aT9!lye6G9dRQid{LfT}7r{1>#-#iRk{TGTaB3 z<#6f!<++R-?~Tj(-=#G!@~?s#eEgnGPiNMsJu1KtT%Vv5bhp-4{G*!*JEAs}!K=XVMsJSiA z8`}VCe#@A(hBM})hyQiavgKN+W?Yab+hw7Y>*;+bv+K4h#u_sph)vWOJNTw>b{-tj z&wbHVc+qLYiaXH$eM3vRh>jSoPDL02BA1obE#;xo8Yh(-;Ai&etRj)ltIl0Qkvih^ zDQpKqxTu6*q@ldQ^>lKk7?i|0ELzPw!2z8sC=Av?w)mawdM`Z#YaxSMXZ_@UC=-r*etN>Z z+sEzkLpzG+V2V&kv*uqP?yU}y*P4%Qy;eM&miVCJp??8}=b|+@WlI?~V0a}H>2gNv6{MJ4yk=u=pH)%{JshaZ*Y4S*n zrEpjuBhlR&FL5pL6>s>1wdQWzIrnljH?C15+()VGokj@z%L-CsroI?`Q+NGU4b z6uqR|>S(A>fu^iIz|;w5RTa0pLs*Z^WQEIa?yrPy&^Q0Zzr3;OjniNvRd-M4%$5?JK^hNho_wol|dbIns z=>28>Ozz}_aE;UOKHsEAQFrciK22SoPR0GS+aLBm8@Uze&$}$hYP9N+OgwLm=X@V5G=|-afzpIBtQKR4BPM*0gOukcFXhm~D<$xPWbtvSv;YIgI zaFV^~eGQ*!P$DosIJmz054e3uLa4zqHsUeqh* zJwd1=cE#!5BUizi z3C}V{(OC$BY0$`0tmSZC&p`bVnm@=Gk*p!SNqewNJT!Ih>yX7!a9<%JlP4jz-=Ub# z&Byp3?Tn7?E4x&w=5Okz6?D_CFfS?#z1t#sw^6QtB@CEZs}lzIN1Y!_Q|eSP{L}!U<+JB+1{*j;E|`1NFa-rl!BMo_#aXx7vu=()j@h*DIFiJX zge{E_<+`o1v2M=Ejdq@+SZQTrZC>@<0MYa;GF%#Lqa~O39J=n0ddnZa5@+i?A`~TP z0qsLO;t53wTj=&B_<_i^1Yr%hW7_6RooVj#Ck3uXuypv{O;*8el~8win)p?@p{dW} z+xLu$x76?A;%(szslh~nlcXgt%F5A8$Ks8(V^;Ymj60f1%kL5YWc2^FXFphL`TY|0 z#6n#k#gDoSy2Bda?dgEEVZ>TXRxIvp|7fjmF-_{F=T`r@ZQI5>s+fbjVG`tS<)2wv3;3SC>Wb9pcNM{wnV#kmeYu)8^{ z*56+F`qky$eAS+{Wp$ZlU2wYLR;bEG>+f) zW|4^Al#ifrHFvxK9mqut+312}Uw`Bv_gvfNNm_ObYrL^Y7{45HDfd(Lt(vC_oo${cR6Omxw!aHH_=eOt;badu}-!Me0LFFSdSeBr23JxFGue?(^F!{=PhLiyyQ8tlWcx zr^~mpu_*P5Li9r?EYleKloesjr1p2FtZXJ9cq}dbM3nqtAIbiQ=>1K#uy{A~h$cF( ztjHmDbKLTvD?d7qhg$ap!d3tV(Wiug^Q9f6F!!?LYYiQ4blPhei%2+Sx{pAZHdS)DFhh%rv0<&np@~IPYD57PxIRLgx%7%KAbcp2EJL zd~eSE9<({mNQxH&(jD5zKv@ikmYyW=kV;$m!1a@!^iESa=S@mT+a?jOW*copj&oPt zMNVfD+^zRwUh(dsM+vbH(3+>-;*Ey&NNkVjX9Qf6xePeEd@*(zA$IAutw$OwiJ4=h z2$OcxqY85f85ZvBBwvVZh8`??4p9d%J>eG*rYMF^%XJ%g!TG`_-Sg}ru`@kB11}sS zS!e%c&7lL?-lZiva(V7B!jm?La=e`#4AZ&kk*J3$Zy|>09#mgAtOaQ-97-l~f0D;!bIaUqv@=i5~7u(=dOA0VvOO@kPUW}9EoUB#e6CFIJt}}O}cOWuww`q zig^boa3<_Rr5W)=cvWR>J@3zulH1PD=c4+Hr4gvXLoJjo%2Cz2$4vs0vP+-E(t7zQ zy?SsE-N!AYQIwU=?F1;;`~6;tvtQn4^S3(EQDq>bdriHa^_mzg6Y9)l@vLEwf=J7@ z@tgk_Ee!TUti^iUx`D6dsba3ipxD5=T%5YonfEOKkTO6%yB(&-4=^(E!sKy9Bfdbke;2+3X z)r8l-f>*~|OOXb$8eQq!BFkizAHClH-bM$eJwf-^1=`eCgJT=i%KL?Z%LX;Oi_c>Y zY+zOeKDIQ~oS(4+odp_M)MzQ*qd4y1%%J*RbwB!VIYSzsDg^7YoWd6u9K%1FW(Eu7 zJlHncnHKPoq8qye?U!$RVKJcUX!-(5+J(i=-?3bxr*)HE%!T?r(I`i4I*57;yeg-V zoFRcpnme>l5;&A5k&ff$j&yNm$tu?$n9Jn|N$Bz410#4QmvspJGG@v8zbvnJh6o_GEHBT-K9`FlZQxxSdeZRAr)`I zKPE$7G`~E;G3B$!raNu_f{i>nuZ-hI6eF>$sOE}lPS9Qy$-jr};~9a$w)H!Se0uGq zA*ySRUmKk!yW}T*jLSa2cR13}Xi|3#7C3!u6KJfaMIx6R*7MP*YMV+>qp*jJJ}*dQ z`DCsZ5p&|+iZrluR&_ZF@qwG=Z5qCf)ta)@3AdN8pH zKcx$B)m=wkE@(~y2(C)~>o;z$wx6UePyX=R)`O}r)Oyf}*IGUA{$IVbA-%J*K3XgE z%%Jm^dg@A_>zX2##&Ch5Sd|7?R<`aJd#%|1P-so9NjXz&qtSaN zud?N*a^(Rm(&bh@J*#BWY??AAiRseJt1K)1;1!hC?Bz?|OB?!2A9^MXkAO-caEw$D zI}U?q#M#Cm4AT|_r25}Pa5>__Gu#4sF?@obfbO&Pq4io=qABGIaU)>4NZz~g3w=ou}Z8BA9F5V zblvlmOZB^;_`xR5QAR*2((>JV&Fih*9Z?EHe({1Fdmc^iDfNnaG+UO4EWw{(mJ+=> z>6{xDh+mHTcVuRv4g{h35WPAkU1Bs#kM>BQ^j?t&l;Kd&L;7)oIS04;f?w;;2$n+E zo;}mFNn4RP?)YWtNbWqfLz;1JnMxJr>E&QjSviP@-^cX-0{%y^u(#kbqnm<8^|%{1 zIJf(NqaKgh0J4a;(ZJ_Gb-%h`c{Ghdx%I-@l}+gS3Un~s&h1$F@TNvaFmDAh`iRyo z2i)pFly@u8T3SwznYTcN*z2CgEL0*RHWCquQZI`z8X*L;8A?7aoa+?wf$s>@^4pBq z*2r|y&dM$)Q~Y=ztgImw4@b&GaO)@XRT!F!%1OZ7N|+<15vA`yIP#hx4fL(R_|Q|<{n1W?c^PuzIJt^U2RfG5_} zD^;RSS0G1BgABR}4T9EOUs2*J@(2PS&C2T$@)q1)`@-SR22W#pS71L_$5%m6{*4H*sSF{aq?i@=S$rX%7y@S)iyR6|dZjVLPD|e`j zzSueU+%%GPrU-G;PBiM>&Mv>Hf$VCcJQ3v)etK6gDSp)u;{qj#Pr=8;Ug(YyzLbXiz7| znKg}>vWz0y*o?;_Ayrg}v zG0`A>`^NlK|KkJo`%;bRW3GW-NwWn8d#VM(V1vXWVX(Q)_t3X_^VtxU!g{`2c0orl zI1r%n<_McPrD$io`6yu=OMCuS4FjLVQq^)Ls)2{l0YoZm8qhBnHwe++33M1h@^KK1 zQ9{!MD5ErZfdE?IUT-44B43^;DLuCV1}d!c7a6ay%V=hC{&^CWE*+j&rI>U!Zz;Wo zn(>9U^zdi$t3dMs6|CNoyrx15h93@g|yyn3oo$vS^O0e2Wtb7yf3(}D3X4UTAK zE5{nfBu`L{LE0PN?3>%aAs41Rr}$jUKj9vILK2Xuz{ykRg*V+O*7M_px5IBaB#|l!1U!d8@88OABhTN5%obqR|m``!JB3f#X8F?MX&6J4t-(tM6Eg*D% z2M0I%wS;q(;iTuts%v;ByfC>NS|xi%r}d%q>(&K-GV=B>|ENZ7hq9$~W;3BLZ~^UksYdX1 zS{RU&GrCywd@DzkDHZy96u#{h)1cFEH&AnYq2fK>2+`nRXI)5=oLQUQ8x_o$X}Wm+ zC0gbv(j=$&n>s`PLrv9L%P~me)DH8aGZ8$Y9)G{ol=U!1vQ=cpaTdeX7+bfijzcn? zeS4+9BgVnRKbD9A^eS*RFU|!DW3@?7bp6P0iwf({B7%M(MPH2mBeTBSgV zQwY$+W6u!1_WtshVp{^Ki zFAPr-xB4F=`hE?cHB#z<6iKz}*%D|jn%4mgB?Uee7f*{rzAcoH$h)a&6ORRRm)gUn zh4eO1#!phyO3*IOYmbfQ?2W>0wFg(wP&ues%Gt$Fr)R5@(K0yc7uFStOLfvcXu6^O zxTnxYlO)B(2FH84>li>2Ug-hVOu5M`Sf?xG4jo#%t(vpu44ATU&dyqPXg_no&XvBd zM-i7d6Bmq!7q+|S6{QbF(y#p6lIGR(N^HxOO=Ti~U4F0IZpD*vgEuXoMBW?rX$AdY z+=%`ibC6|;hQ6fKm~6)ccPGZMkvF>raTqNVOhZ_a0(Vu%dD$iwY48_l(%`QP+IKT+ zrZh&~Dd5r*)~Z3ueB#kuMp>czEqKtuwxuM28DafDiJ(i20*k2xIw11w?x@C3CBD|! zG~6ROZX14dN@M9O!H#JPze_%6t)P;fy&ubUs0opC+grIV*o<4;Nz#fCu$^?gAfVg1T zcTDJTV0f!TAo4W69#ngsETmZc(G-(Ul;F3PCiS1RjijcYzgqfNXkXGO<#U&o6clMJ zw8dGF53H`@G691zUaHsL1tqtARsU@xz}ur0N#Ya?iEUg^-*JiT;(b@~hrcowi719V z@B%eYdb4AQXVZeYXRXtTy`)?Hrx!f5#j2Zca|l@ghg+wvy*<#}A&BT0mc zZ2QkUu5iDp*1_EGpF+oV68&IlJme}oADCiSP?UHQyZ`jIV2sWvZEGN${@wdEgsqd} zJ6obN!(TjNu$-Svw{hVxZ7ZQESOXfbQTIhU z^a#EDm!%MUvKjn~KqvW(w*q=HAL3Xzhu*5M81&>-`ad*Xc|25K*iR87G&6R_HZx=w z*+rINW-QsVi-_#I>?Qk*WtcG(iZIDemaHjDjLM#UU$c}-C|P>%?|nb-=W{>z&wK7Y z_c_mf&huSvk#wcI5MSi(nS31<*kqAVpvUzejBYOg{W2#9 zo}iv8&9Mjq89xS5$jA@y z5fx|aDiL%?dRVfN+#2nO@tU=e4gq>_F9~NxJYD)XA&Xk+!RT{C@1`J8^2_7$G_pWP za&vb5h}&_M#H$G^Vd2unok;65G3x)?H@Hx4f zy-MXU4f}r2UWFMwR*>#bv-HvkOIMQs1Nf! zA1LD}yiRd>Q*Z6j{KFJy14et1eQF>Y>HCxm$5g+kP2pBTvIqx=R77-$V&PJxIap^V z*th}VLUq!{!x)+&XKnd{+HHKRD-2TOUqR^r+B`6*qWahXF(ppRh@xV~ zgx+rrtLm>GMNFG1-W4=SE8!uA0bQDWJqMwF01uenx>MblqsupXo)62TtJKV-8>}M= z@<)ldZ)_xCGJP>HG*3wkz_ZCY9hZVOe$eYx2!pSH6c6B}hufx)^b=w5?E%FuyPYx# zKA$)CvHw1tCtjCBE^rGGyuS-@$L0#6rRPDL43>2pOStWLy)#_X!ldKND=H*)*WyY` zVJtuIrIvZiw|WnOgh3GB(An{FAiI5qN*Gy1-Lz#HDd)obuX&vMbc>uxuvX{#)ol2P*T5uH5iCJQX7R2y2{Vmc*yR4=EG z+U;Fupi?$Wm%l_jZJ5b8?Xhj6g{_@Qu)jxXxSNrXRz#pOW<&o7qfZZVcBRJLYWRD2 z@lVqus#l7djGlfWO3toa73J)y2kpT$sF0riJTSBzZ=+5kE}}z{ym|_+Jh(7`j)i%M zxc<6UV_HE%rc;MS27N3VtIRcDLl|WK9e9o2VhJNWzL4#)WU_nlv2rslHme!-GkGy6 z;o32smyRtx1Y3ZKrCyosg%ndPz_i7{ZNT5R-DrOUB)sR^v1uQfG$|*t`spa;%6zU7 z71B7&6h_o_4=e^v%W8hVyOI#j&$I)O?*BIIdLZls zInA@S6p447;t96nop}A1)N|E-Jek*te4^n(KIxwgy3DE8%!SR8yq_C`sh9^gEB#0; z6M;*ecEwClN74k=S*j5FxehV@Z(3y z1l&dU@<5~jI`w_Wq}P4-x_`KS$n*zMS=XSNNp(#Hy)n+S*1|LqEY*j3xAt+Z_t0$` zNy}Zj52G%@tA%UpPvox_#uxD>wU2+*r>Og4SO_S6l5$fcfcTiQ@Nc2085iQ2rWu+G zHt>>wx6~QR^m#wMDHxPO+)VWoA;g~$*P2Dx(Pk9yUHi+Cs3HgJ>ClpM0rQ)IZ{2cPj-24r)UuhERl@JGAi;yhF_E$3A8 zaG_2qY2Wqxvp^lVDanGgS!nbGQLd^n=$R!_v2XM9YEL)J^J5gw`nZM_MJxC3wsA!m zH{3U(cgu+rL<}Ry-z79WMYNbHk`QG`ye9%&aL!U1@36qbJ&)oN{`)!-&TI&?c?1;} z6B@NqqJRlpdC3w$FW|pXA^}KE2Xgt9CX>3COoFOz?mAJ>zM z*di&=`J)b)84fMHy&GBLspAp87igv{6g% zb|NoD@p38$O9u12J}(-_3+*QsY3CWjI^!UhUwc%P$D#D@MH7icU^Jv%_dgr>u=-y_WeoQ& zVU!Of4jA~qE@|QDXFgAzo(l-Gq|WlX&p%^wIcs4&>ljU<8U&RF-LCyx{@})aDE!6| zKZL>#2KgBl^KfzlwS1+X656&8(xTJs*H{Ad8Y;$1^-?mB-I|L(t+1pdy_i6|3m<*j zX=}wZm5TG^_4*~RZm$Pa>%elZD9bIrI($}F(KH_Sv&~jqsi#@-=3HuCfM?{jE>l^!f!goT!A!PE7s@ zcO364Rf;#TMU=0a+aee8t*4RrKBE75Yhm9m(Qy5p1s)G_`%)RSksIJDr3TTVH(J2> zHJs<8scragj3y;ojz)O7(uguXW0Jl^!?K&+{MP99{ELetm0))2iI4CBP1s$VbMPTU z08%R}h7u1%egZiL*9mz;YD|Fj`w(%S4Gq#*4r~!r$v3=Wf=;!-RQnsJ+l9dZe-=iI zm9L&Ls{4-f<(kL}T~ZvPxxdp0$LlkRWv4CF)Uy@x(xj7%zI`#;h9{o-SvroI{+7Oq z(e2iVEl7E#W{fogS=%E*C026ahlsIAkb>}t+G+t^o}Fk>oDaUfj2$yskDaquTRQg``HTI_VP;#(}r5 zefb-V3&FbdSythrv~${%eMu(p))xx<_5}qra?F+6_5s;x^?a%upK0JEOOU9nb{>Wh zAF1*2v&`<7r4HQjjGv!iRC}WXxaZ^6*Y`kYOu{6G`3)Zs@r#?;wfV!AvY9LQ zC7%Xl;eJ@A^d-d_v~z*3coi90nnE1e(C4LW^Il;Z7TgE)p|5l;@4Qd5ytyLXI+DD8 zEv#CORr0V+t2TgRMN%7|>>kqiTsy|ldaEH8(OeV93s#z96!5(n%Df&dhCoz;xvA}~ z3}+1)f_p38whvGD$$*6LCy0lR*puqlrUE~#!EfLgeg10JjhFw{lQ1DsZAnQkHo1~l zMoi^cT!L8-?Jb_|jG4dNw|{f)%TdmwYd*9ne;lGd3fL49{Xze#vyXC$l#6WXf#&oi zqPkvK%|+Ylp35!4Uz{=-N5A0PAOC%b5`e#bI!r?d*2ACtX?rd~oX|!R5&a?+1^YfX z(@O{TNjkhud8UC1w*G|!Qh3r@b*KO1snjmf%=8LjQ&$hUR#T5VTP^pD7E4Lt(MJ@6xU2-WZbl&W_9z=*8VHS zYn=Jw0la+u1HaqzJw60klmiU*?A8?~dN;wrVE>Z(0@r_&vrqJ|UTs-ifAt zccZDk@6Wu#V^_CYP{APZ&zhUbC7xY7=2O(nlhfZp9ujq5N?1{?w)h4ZylMnt6o@R6 znDHHc=V@Vql*&Nf%HAkMS(Lokvrl_){f(*>9@_NzKF?Ax@5^FMPykAM?JbA6f4o5a zzjc{!*8+e(CuR@IYrneW*)y*AO6Q57Tyl62UFp;6I&GwuL#~eN!=almpFIKC#5Wid zu6>Ka{MENC4nqo6gZzc_1uFV1&zz~uj`#eEI2zBAUf~46JZ{Ox@MKgpByv>-4Fcyf0Tu)P@gZ#X zz7iqrugD+F969ZRsO8`sLb#2!P_m%RCnWB~6RNdF^nFCVyeeeoLvS~EIDRi8N4W^u zZ}BFEFu%0Tl|u2yYLBGFK*g|u;njK~)|LajvMd2E<#Fbx!8LH*Zu(vsA5iqC0f_x> z`>Rxr_b2bW`@GAjx>-MWsd+krTexE@?!QZEYV z@#Y&AZII>oDjcsEqYbSYD-xLBPg=8ujtP$hzH2pwVlL2|l178FM2XMzQ=yG7MK0V7 z@n>9N+h8aqO>}T9nV}!^155@hPE(uh0$r<9D~{$Zu1Q7+ZTQ2BE#*Uo30JO|su)|v zUt|1_ij;@ou}RK;@x(&<#7NZR;8?uZADM}4k@GAxa+xRz$HF=Po96G?96K%d3>U%r z?Tt}TVY%K;tl~|*7}9lTRCyNE6MRYv+=SS#Y>uuD6^U4=mZ36^$io)*wl7^PGdY;v zLh3NUS?N%E=E+7C`hG{?3h+w#@Npjuo1i=z!Gk`;FisdzM^ba!Ez3m-bPDJ7fzC0~RB=(j{zhF7} zcglL4x_$Q+uYmB+oF(-8g?E8c0);465#>(c@q_(~>Qm_2+?mnP49Jm{>)oV>>S8L| zRaKnIa{r2^gnkMYKjDnKCvGD&Cc1pE(@)L~cRnvhOwu#Y?^u^jJ*4@@0vK^XJyIIj z;c12wFxbfB69;!|B#7kV*8E8=Rh*>hURR7Q@O=zrSr&f#Ge0lA@?bCUh;UHRS!$~N==Euv5#o<6 zP(*w#X7IlKmTcbkv@7=bJ4ziV2?~Fh=vSi8yjOum>O55Gtdc*T#>_Z3uCEPiJpTqh zVgU&1&AJtEEmoYnJfUI8!NS+ec~q&MAC#5B#xb)Ax?@E8lUU)dU-a89ICM6poIJ^F zH7-^4N*s^Iw_Pfr(tcD|pZAf8UYVK41S9o#B{qAgCR;x%K2_JbMuXJO%YoG1k(<>+Pyk z^b`me-@~9_XOT38DiXHCidrMDW4@Md0x!Cz$dc2K+{@`sY`94Rq+4bB)R2R1eI}=( zm+`K~da#{gQ&DtXD{^q;Ie{}hkuyCY9pJXAGF8Iz3dD%8!g~$%Ul&19CzdNZ4I?iJ znb$-)f6WCqRU77%scP{b?6v)7dC~CTUAX?wuL7#_%MMIWd~|IzK$i3vv251hf(;}llGYR=#l4C{k)UE^ zZJ>-R%hWY}Ci0xzxy>oo^T*#`pzz-LCEk-xYf%k;9GE;2YF^KZPr zS=PnyFec$H7tf7dA^*tVn#eS+ttb3qqOO^rh*5<`%^npw%_B^c@+x;4AJ&MGnPS@B z2c$c-dCCWv!Y%jdV64VZmfX?&YAG}IwNTR`)Q7Z0;}4D-ZY(iwED4M5=sB724_{8* zMIE|&p6Lg~&vY0ySxoJHx@8Ob)zH=FQcfTK0YQ~{Bf2s2z zc**-lwvQ0!VGrs98jbx?sn?+XWSu0<{y`2l0?AQ;_N~Sf!pqBvFE1A&c0<+reu>LP zoZ-A*&JUd59+hVf$mJVgA>xSBb5}%$bM?x!f@7~MlPm}3+LU|_AKKj((q2w|L{*t> zm2iK!e|zM4De>AUR+eOy&c;7uU&m@Mez~UB!m_zU#=t<)-hxM&SN{;c4vT@VXW_bz zG~bfAoZ!Edl}CGtKxz^)6GQ_tjFWB6ux-KL)EIoCpDA%9D9LS=q0zmFUqaE<0VS-q z#gfM7Qk-0O>zQDB7|&WKk<1WzNBJP3B?vrcYlVCI(@1$|_Q!=GJ0C&4SQf87mC>*= z2hoGPECjc9-gBe}Z2s#;qcUUG3%ZH#9tJU|iq#&s@QF}c*2-+UNYS5pOehd5_bSFI z7U2zxQ642GtzhKzdGuu4Y=8971YZw7cRl>he)cp3--AMk0} z&MHxJo*pEX0SNCt!N59O-_i(yVavM;Ebs`ERnAoRyn_#QL{bn^?qDYfsnO7Hf`M*( zf2J&#C$Il1L`77WqrQbO3&)&uyZXoI;wXp}wmd95IwAz@BG=wWru)S@?i%;89v{;Z zH?jCcLm9-7E^KQtA(PJ|{6zn2_z7h*;{=P%MHWRYz+y8KmmNiY=tbivxum9j(mn#2duemC#OX!*z2@@G5_VA#GOqp- zD-0;hyW%lAkCA4i6KBNmD-i#p3zTvnMjZTDbNMFk=OrZCmjB@t)P;Uo=X2ck*2@ZJ z!m+7|^a(kC9}NrszFZs|nv>h&s%ex(-CCptSdQax@uCqGGY45S2K0(Beu000$tQLF zZ6Xq+r}RM>d)3}T1zTZKMCvT+e0 zT*0bUjL0v#E2`D&%L!6uq15@VHGaNy0v#Opm;hp3TPXb8yL=e)S)(^a(e~`$>%?m> zqk$Us^6LPDK?XSUd(8AcM!!O#6F#C$av*K;VePTb&t2T8-1F}2!f6(GD=TPDr|fxH z<3)5%jTj&6oSml2leq4u&m^a?6pt=>)2)Rc7x0NmO79TIt!N5nq`*)hf)c%+Nl&8t zwMLV6z;M(5q*mAankeFNU+?Jo=zbRbUn+XnX5O{CrsY z!lN`oLC%OZ7LznU3@%$#PCbu{*)kP;Z|4MvXh4Ss`nY{ zbXIgYvgjDH?Vjtq9an5ob|hs0Pry>6-wP?S=xX;5d&7>V zZ8Q4fyvo*#mPtqnqNP7dwGFgSlz4Jl`~GfUcTq*Ab6;F>Y3*%}tbY4X51bQX;M8Yv zrQTmQcy!hPLF3q4kQ<&|zRnhz$0a6#CK+Io*Dx|yO^OUiQ6ol3{k^Gbq66M~#7(jr z3l>TIrw`_iRqg>+NXlA_g5c$O32ZmZsRHQjFPneK-nRpK-k3_O?RRH$g`5~#lFRHr zT`e~r2L<*y+^UE$k8bYpGsk3)`^SbTcKt=;=(fc>^d^vU{AW4LD+$8eeczFVOrsuZMu%4 zq3Y!CW_*1fdn=%s2bnC`^j+8Wp3-65&Nd?v(6|C@mYvy#r%Kq=Fcz-?Wzv`r`!iZY zvb)41*W3N?)nZkpry-kDcoqxE#jBxXQ1T`n@Y=DWpE|V^wNNm%Wcjq7q`zaB>A5E8 zuAOe*X~mpo$#qd8haVE{ezfO4%V3A&%iqsn!AX955s|?aJEv&!pEz$uL%{-mC7PWq z75I7$L*^Rs()%P*=_+wo!JecoNeXKkU&CaM7=40v%!z_zzL+=uDvR&WN4{SdN^x{` z=Ast@6ml8$#dLcnw5FHY^mlKA_At_Z4@lG^%`RJy33*X1Z`Zgw`+LME1ea@ z*SI+$&jdeSj2y6`p8V=yh4cQVz4pm(1kNL-=j`<#4y7^xkvYigh2t}kzDe?Fh!|}W z20LoMD^jh6trs16yc`w+D(qnu0XY%Up+biKGW5Uo-xJ%c-l?yc7=k{64-9!iHfuot z_S_!y4scXm8LN%&_|nNI98_GunWN zR%;qgOH6b|#vnR-bzhXiMl7&GB&3|zYCz8|;Q?KxZ(3N*Ct>m}HhwQlUIt!w+B?+D z6Vw*{`5r?-ws@(`NwLroUDQbmUYS`u%ab3U5`VT|B0>~x_>=jZg;KldU+ILE)>)-| z+E`G*L0eU|eEFAn;8x!)&4mM3tfFx8YzSWyb5{a|h$Nq;>7V-osOkfiT1`h8$<4Ai zQ?FuKH`*13dt-1H0EOb$C0+UD;f+C8|1WaQUfhj>AOZbH@dBHH#mjeBf8W?imveJz zH>gxZ!F)6C^1NpeQ>XmR@G02kG1PT+iky-vW()6gb zMK+Le?L#m$&|)p5R`vHwlV4e^CfMP9(V&|g3)@?Z&;N#U!t=ZJ6%ft_JP)*t2+vDe zVPb$XgW%gP?{7;EYqOv<-7Z@ie~u@Ro?JyA)#yJtSvC@ zjJoaE9HG?gJeey_{7)+lvRiBLGuiUIAiE+}S_VSPVM*VX+e;AzrbVGwWW~o)$KPq_ z$G)L6v>-u+J6)CU9YwWY1^uaUwtJfQw>$c8B$#_i2Zbfsadub5A}*qMCSJcTK*&W? zp1@Q7X5H2&cp%l}qvoWc%W|AS^_V`~ z)m42)6ux7z*-=e^f)_Jf@hA$JYJFAk2ov3N#&Q@MVKe;kl4nTmQnv1H;rXWkd-OlL zS0jH*WI~=c2?lxJT>90_JT!hv=+|NZZA*2H7tX%J04PD)(_{86jZamxs(bN}MsZ^$ zbe-k%``(C~>La|rn_Fo80c_uj96$DM#&ao36#q4nEd^TD?M1lyW%1Pe>lYnVz}iNF z|1a%k*Fw8wj-1mpGLjLtOrK*?(wA*_G2^rnEjyVa z_;W_13p~v(J=;wxr#Ug%K8Rj9BGjE# zcp-cBmHhOxj-Bmh%Ws+s^wlYxA`R_t3J{mY^wtWLq#osQpqi_e<-%Q4HZOP45{DWH z2svIOaG}0^kJjs*(9Kqz&*@_G%XK>BOkq|a0X_yI5EoYImI5q1l}cxYv^H^L$0v_9 zO3P%?MV?rSpBc`S1QL#ks+|}Ix|F-^e?=i_2DzXh|I288bzRih$5`GkV}*jwF45gE z;KOg*1IbA{6smhHC86Q+>aF;ch0ltw=~pgIi*F#FH6G&Jn#C<3xRc?~cBO zTOyb2=$jZrBM}0skis^Ah8O336O2RRwXjGu4_Zm=7B)DN#;L6Yg*|Un>V*##wIIPZ zPU>sYA_aGs_Zu_=*AkEX^_l<+5$gR-TP^Za7$rFziaX zE`>|Q!gws+b7N?e`o6=pQedPJ>xngE&_DldJ(A{>tM0Z~@5sz0u0bzJ{n(T^ zkg%=(6uSt&(HtL@wHv0cbn;t6@lfk)v6c(qE0Ru9*fs%sh+=I!iSi5OhM12tD(v-7 z{(!UE%tA#&z#1rZ>Va8Y7;THKdqzb>CR0lkr{~$y!403jf3q_Huypw!3?>16b0q}_ z$S#4(wpOJmsOPH9&U3UGC+SbssB=-?NxoMI`OgdCPKRF&@7;!_@g?{_3%n)xl|ItsG3k}`mN{e>%b5x_R zex`GV3&eK8u-V9OlL)yhQi8G4%A>DV|8`V^0-wQgSFj8^sjnRhc%nfv!{@GAH&Ykuj@Sa*I zLR6vwWkRQ?(GYR}HfH67n8)!h?b5m9<+sPv$vhuqv;HvD>nyL@nmV&$Gd_ltBtGFB z=Y`g#hsvRHX3)ib#Hc`TGRVN*^)Xl`2a2C5!;{0?ZA9ojZjeYWG?GI@ zBZ^;0>R#FbqO({1M?vJ&sHo8>ACDS?fEnPHqM6*$LP zc4w`ph8AYoB5qu@JKn~TaDbcXne=lcOH_+RZd;8Y4OoSMrH9=Rs2u4T zVtiSQwfCJ$pfW_=O?$u&=)zQricv2f0(@Y_ptZl@4yZ@}iAEz;n={tHn4TJMsQ z!3FW)LCjag@@!zd8y|95kTNc^Q2a&>Jqea`$AXmNx<-&Gqa>oLv}nOj8+Lq={gU8lh2c;XTkL z7RYNLO*ijc+@1F9FLeBjPaW2RwzEv{p2}sav_8v3JG2#@rlUZqp=^-PMiJyp2hK+rm|F1Ga<7aNGdx6@B4{dU(p<~A z|9{UGi#v{f3Vnlqu)yq@8eHRWsX)kPtPv)5Mc+9dOHmByhNX!xOIdriUSo1(1s_$@ z6Uii00IJFM07}a4RRFF}Zl>hW%iV;MhBd5T?B1i06qf02Qb}uu zwbNzDCULx2q*09#(A|(?@b`D)i^+8nQq3)3ibX@hhb3mH2 z{)nhpk2Ky+7$#&(>ALn=+#RUC zh$EXCIZb>=%O&3ciqbyna`1mR%SpYr^a@3$kDTiCL>}CaMmc`n z*&((IBePIgJp#p47$n;7(xGU~x~Rmh4{ixo<(swD(C4v5_LnV+0DQ##H_%5cSa8eU zRknI$t&VXIhIP%^sYD-VKb)xuayNIdI)1`J30r?@j{4;hsJ8;Me4A?VI+!D?vV)(P z!{d{{AJp@S-VKcn#M^doeTj8oD@FgQ`ANLl>^m?ilIs`PZ_?~SXRn&Z0)hx*8P{+l zcScH6(ktDJmZXd$1= zY|?%4TXY56yy5o#t2|xN18DbgJeF^~*KUpLni~Agcde`(IlxWG3r2&mOlWcL8B7fj zJ^d*p9M=^(qqVmc%Qp~>{qJ=!cu}19-6K(~N8{@p#N(kyAFVpqyWKk<{&D}rayu@} zXOrBsb4zjzE4-(5>F`t(b|Pk*j@BCZqT`CNoh<6bI&R?PELr&*E(-UDVEJ>y-U>0h z%h5_Zuy7i`SXJZT1HnwE9lJe!uAq@9X&%9;cn^?usbqa0rnKjLS{LE{Z5apZ!hq_-yN>zM`v?qssq+$^X14 z=)E!|FXJ~QiV|$-jCdB7+wAd-&mITx{|4b(3~1@Rn|S0Lx8v-z;*{3Cq*6QMdrA4Y z7R(btPR6&`*H2XaBB!cY6ERnWVsXHzo94bI2tG?&^Hn;9D?UbP=TD@QT~{!nMMxw5 zE5km5$s+e08$~?i*rlP)YqQ#^ToII2nCS-Y6Z}nU{WrKyEJ8sIC&+Im!vtB2B0k>I z!%0Tp(3Pi;f-9C1)6T<{R~q?#W-642AxqK06^+Z#yvhj549ufT0viW4e?p<)PhKhr z6|x38{cHZz;m&9;PuJlyQrM^P!6%CYPps>&LhnadB5YXQ>Ks)09BzB8n%uJ0i3W4m zHw(M)sLi2LA8*4USN<4?`$a1IwXq;WT}vA8iaDU7(sAyG|CHJD`QUN6Qm3|I(~Y7e z#7nfugPY_qY z^n?U2L~G!uV+inb$kkk00@ncg(|{NJ@sxZYQ58cH`AU)>7ltT^(0Q=JP~aASMtfzt z4&fe*HEFYK(M5ffkw66?EnM`>$e|VJ8^&ORY_-jbOy*mAgi5$N>H+5-RRMnUmJgUf zKM>HB&(pX_A0-DbRoOKtI-Y*Kj2z*~U&*Zrf5Wz#Y?Hum3IqMtNs$7SGNOfK34Eqp zuUNcDE5rb7`Jb)3Op0dX$<%%32-)*I}NA*cF~iiNE5&aXI~WzgD`c$iQWY-I@yz&9)%R^@$? z;=hVwAG^dpZBhq(Fu?&w$4=eoIIT3ROEs+p{SGu{=~NdZZ`q1colBK9fI5O)C!P80XU5kZ-u29oXoWSQORg;I=B!t`M5zl)fSB1iJ zbSwux9a^QTQ88{ie)GJlT37n7UgeIfVmOgR?IRsy-pCb!>>1Zp+$Zka4NU&@^r8M; zRFff!Q&Itr*uqui=j#T{U^jQ``Ae1$!4uI))zZRUw}m<$t90*gzR%FkD2e39DGyv< z{z)ubyamIGVOxb7ObtEG3riLCe*~5k$kD;m@hX0wswAn(gf%1IAZgg>fNk_z+(3{( zz47H29^HRT#zXZK(x8H)v;nU3A#BtsbyYDPeHtKFpYR9j0mh?>zBI=bhG`6*1k(Bs z5bQ{`wCIl^Y{UTLEJY&2@Qz;Q5|5EM5=_jgv8{GiO*KhzI^PpMw-7)@h zg4KlOe1;NAAG!k;gY~*K`*jJfalpB|eYgOBH|cvJBMnpp(|0$gPSa&q?auhUTHhc> zPnX_FM{~gBf^>kJ@>-D}a2wC7FMsGR?y7@z4Ck`+`l!vThwn=I`P?Sg`|?H9U;*vk z)qRXm_#!P~a|0I`{x3T63%55mVE*U5m^5#fpg|RSIc>O)<|Aq>9g)QY^if(xiktR4 zIV1iY9YrXrc0Dl5AaJ@)*hYF<+ErrOOze3|7roU{-pBRN)fz94Kjq}-w*&=+-M+uG z+kU+JCdl!v(%aL5f1m;I(Onvp_^UV=9P*ZnJC>)1nz4|TR0|r5G>(VoURYh;?H`17 z8Z!U>e0?V(>Ow%8X!7p^oKiH!dAkXRFeTM8^$Rp`thz)5m3y#4f33Ygdx$Oyb$?S_ z68d>zj@fUw32Xxdb*fiuHv~?#OYgReTuQ%*KlwR@Tu&(dz}zP}Y9+FsC5)pD7`mJD z&=hXF^8n4`wwB*76hs>t<#8?-`?r;=p{<;gj58ufP16VYNRx$Rj!X8aUF#nIJ)# zM%ycEUsXoOnIc2RP4KY6p5BS&@gg+KO}unp!oymgGHA($X{FucuUL z(rUm8f>fA1<=T=*U&mR;UT5+9_WHJz$Z3?}fX>C}>2qq@v|IEBjc)~u*ydC(?kY3x z=C8%_tWjB?{Cq*e#*Mua?#h_oF&$6$Z}quwCt< zH#QlK_Q2tHW!eLHpG3A})y-byD_C=W|HhH8gr*KF{BAQ}d@Klkl)z;D^e)dZA3T{T z#3b-rM{*3koI3IMuc`lWST}_Av!Md_V$w4e=L4#?T3hK;#KH-&*GzHRvmweovj{1H z?MkS!|Dswn`Yyb#0WXq+d=+GT9$e^Ea}5T%s4y|`fGJfhv!8qG1}rmPXyp?jFa&cs zYuf2nqy$jER9 z@{LiA+~I`%-jF}@hbX_MUe8_)_ay$G8}%gqpUPcFf(Bqpw?O55#lKpFkm1_*YXz1# z!hS&I?}I5VZtiWqFCUwm=ucPh?p2)SZoaDL57XH`;(i+msGQoUGODv$`E-C|XWXEPBHgNSprY%#3XE)cZRKK-#= zruJpW4ID$!mdkUGD#vq;r-yf0G8ZpxjMPTMU~Jrr<*?;;nITzib?6$V*3LMP(nNAW>M5C3Dd&O}0p{o|wl9y+s`@>KtiJ^0>fiCT>r8XYTmG`TvqXGW zsxPfWw!c{O#ZRkwE>Zm6mG+KHS15vPILLw+>@yRp-B01Ct3%v=)(d@3??o|S`sf&| z%`;@tB~yWa^i-g=7?;T!E4~6g)Tj^EjAtH2rZ_z_5$z9g=YkV7wuIlXIz+QMyd9sn zE?+CKS%%!^b9?_?uh}r#MQk`?9yW%A43AiXH7SvJ=LluxG8F7f@7Lp#=E%6q!9X&6Y0>=OG_i zh_U_u+TZXwXJ5e-Bwn-K`NeKuy!6*}!sW&5+~bnm90YR!@|ui;cLMusO!LnsYtpSy zyK6AKX#bgG?pwv&hilJ#@CzjeuX7hH4P?4Zmdpd!n|AEDK7QU0nIGoO-eK``jeQ*8 zC-Bu=xTvwith2GpW&L&TRrE$4^MirjCFLIKCgkZ|vd1eMn!p`=AVK~Lb}s?RO>U40 zy$0PGW4ua^!To;fy)-tQFyE6o%{(&eW#O;@R$~x;Agc4%3ZKE%qEF*uG!ZG1H?4cw zuzoc~E+DNBxa3;XHUynqKJrwTbkAo7iG}O8|GPQ+$CVp}G_TWi8ZcY;toZ}uwB8C$ zma@?B3z8VNdv6+icxC~F-#TOUhrCKE@z_9R?<@SzuydHNY#0Z&nPmt}rdUJfQ|0)}hcrvJ|c=%e#ru6P62atP)4t~Sg1&}T_AzqNDq zj4bq^3e_<2MXXu7bDWXVAMpis?ZP*QPm{yS@6q>i-_%?$8269Y;g$V>v8}RCyGO6l z#@y|*`dt+x+@_vhaV<0gPcIMQ!ha66nGW5rvK*_OtV90X zpy-mx_K{K#D+B~rG~yn**^REGoA2-aSRWBcKWu~+3b$H!I>@6b{hlhZt86cBIRCyF z`U@@Ux@w1X7Pl?oNmKkgU`hOO^VxMh!Bvtx9C%a7)ftxjp`2Gs!XzpZEeD@OR~<7w zi^VLq3I!*yoI^R7^b3b)-haxi=Dd%|MqD1EU11oqXn+w5jbe27KuT&FQW-;7XpK+J zO(R?1Cz}4-&f&r4FC97-o{$QSFScE3ehlV*74zwxW<2Ba;`f}&yPu|rOlW_ZK^^5= zM3p_{V7MZ1v9t=fSRLl8Bq@TlHoijZFA~72jV)#uh6o@1`?p0bOu|IROS%>~pCdD< zRB~<@PT2L`d0F!rp+&$A_j)_&i17{r&O#fjb;+pxvx~P$;v{4dW%GmI>M9HT8Kdy_ z!&`sP@dfIzNbUUO$Z`GQzsSpkbFUh*cn5oxRf*31se9a)vym%btwk8l_=0xpyj#Bv zQnLN&VU=b{KFzW~k{dlNNMT0rgs@O~{SRaBd`yLPGB58+p;RA)gg!ewczfXjWQD3L zZKETyGXUu7IsLZLC0!TLvra#Ih<#r)b9CW~f7idt41u5Lzsa^IF^ZP4&c}=E!}T$U z41vO?E!#dhgs?O1Q1!uU!sc_0-{#!jakNBr#)X&fR;eA5X!m1@vGOm9CRop zO?KJZN-$rMi*s_l-bw-In%=g0k)~-h zER9KFu6vz5%%OAsHn}MLd`Eq(sk2F)u)kN_H`~IHhbD}M5p=}dXLm;-GI|b0r_tBL zz$3QbZ~4ED{l)J8lVNEMvccff7e3iTMwD1wHo)-bxV9ZIp+D5WRpw6%J&__J8ybxY zkpb(-fx;e?l2C3itMI9$Ap?9q)B*&5ruP~ZOO&?>D+L!%o5`MA*kB& z*GxedZOz)k=W=+v>PjMYCrFS$4~5%$tx#1MrTul?t(K7uJD0Czu81AvWjBm&o^xyD z&vkmu=$1mce(crD((>J#gj_Dk+h2OmqdX{AT$eI&|?0s!y=9%nEL0& z&NDVMd}H(;ZR1Evzl#2}p-{w@R?;vtd@pfY>gh#dhVCBQ1oh+jaNxE*u<*cl>w4Hi zaZq^mX&h-GQRPi6PR%b^N7C>jI}lf)V#>EW`PUfO)4}NK02r}sQ7u3~Ql^1ulegDp zsUkGcigf;Xb7rQbR>cORxBF`GEZR!!^WXc1jLD90c zme;((S)LAJy;}yk%D7+@ge>eh;Bs`>CKMN&dh!M4jRT_xP2TCcKXyK)W+^kJnJFIE zl{xO#Ef4FpRxQUiM9nUkEx~HPHJ44ce_8jH)5Ggvg@+n1hAgz?tF11LbXMoPLvR7yYvpZ)z8 z&;4p%+@Co!bDf!U&dm8-=UV88u1Nn}=avXJ z$OMr6BFH;nG-cX&(eqY2?rDJ6)bDhg{F{H3QSk|L1e!n1%*&OeUP~13^=x&iRsadJ zCDw3m;78*I3MA4RnmoF#Tfio_Ii!x74>tZ1Fg9QEoE%I&S*YqTZF^K`PK(T7>%mt3 z6Mu3Gh$rHCF6aNqr#N_q&iBl{UbH0ZA)#y&cM^FjTc7w-WgH zH=^8&$~44z2tRHV@}CQAGp?}6+Q=}_c(TpyPh`shx#GNDd$`Ml^cd;=2C_X0jSNz# z5@IPDTQ%7i%R~a8W9HhmKk5ox#I1XUaMi)0UVE;_KX<>s^%oO$S6if) z8lSSkrPKM$)|9w&{i8xMKIumKz7yBA1^ZHnPx-vh+1>BA z*2BKfTi&XrSHzM_bmttint;Iqf(d@%4%1rMQdH?Y#m%~{FW@ob3wSoH0|l8xCiLDd z^}WsidJ8n%FBFsU|FI8SSI%DOemT*?+80n?-uiP7t5>DQcv!no__D4*dmG#EecL{X zhH8HZ#O8$hK`_rd7UwaBLh~T0=*10i$*l{3#sx88h+UKqFSxy zt!iP=Nj@9Hl8K~EX+(9q00!*w5H2KNy_1ZpMl9*3F>j+*U4^7uN$5(#gucYZba%^? z@eZl$#&-i9itlo3m_bt67tuEz&KMgWVfw?mmJMIYgg$3)-(t*O)9PN(-!UC}xo1!A zGUOJ&?b&x_374{dqUL1d9cf(o0hD$(2<)*D)S=~wKQ&2C!A^^n)W#%#`k?n-+z!b^ z$+wNO?iF9GyZO}o~G*Ycf5Ey*f zObc~|Yx*?>6*GA?<-t&0XJSqr=#_6K0#hQKOBk zo(F_?^qs-Nux#aws{?n$Rdt{{O`IWW@`o#KlDCAQYXoDtxAkG~a%&FHY3M6WL)-ja zY^$jl3(B~|2Xpkau2+YBquj3mg}QPVVl~p!hDwQ%k@fVpeQaM!rj(d$pTJgwaIt68 zB1o$j(D!u^WgZWIS`rIeK0<-NoJGahaVIqWjHlF0im4K4;8?N3qMXX%CEgG(eKT z!$h*&$3E;!BdE6&e!9S_^oYQw6@k%YzF}ON@Am<101H^kBA4r>u_jK+HG@%(Z>0#v z0MvX|xq+B(;yYEV48%N^Gd>yKj++hjCxY(Riz{`AwUM&;gVoqAtL*=acB(P>p}0`? zkxg4MK$_JO#JQfO1+BUm;QdB=ouA$CrzGo(eFy|ey<=HqjS)2LqSUB%Prg2(e(EwV6E|L!J`#u%jOaN znv&o}WC&VR+s8+zF}AU3vmEyv5SgHZ=*$X^pOc-=dH0JaO@qa;qzqllMB!^DsV+z* zc-?=w-Y!;u40~eF5QEUr>?>)$=drL_veAIU8~+8MN*+XvSL&zGO(n|ZHT`fz`EiQj z^7hd?cHy?O;%~lJ55l5fGyYGmfJKS@r)UNyd~^X*k*3-g_ly=xQ0dpiwD(A3HY|vO z|IR#i`M(0|7C>fzY_SBQII8}o?4vU5Y|z-Rb*a}_`^xMYKI*B$L>Z)h&X6ZPApa8y z-BFv@7#V^)Vdx$*rM40y_WOEF-7~i4k;HZm zTle9IRXma4xNN3-VLU`gP#fD);*jW7BBx}@L3rhXNAN-vaFk_TG$bK1jFraSw~+Oj@?z_YagV+Lo2 z(}u5k$IM%}$IGEsh-CNA?hL|KR2DV+Zy9k_Pab*ohwx7}@m3kM_wTyA`XpT%V0u4e zZ~kT8R(e$g^U31EojPJ?$z@qbN{LOv;i_cSO-yE@R#(8)(9*?Jh|$HC!bair+0Qhz zP%JnzZtCTHA(-wgl+%WNt43_Y(gXR>jpItn?~LVb39OXvE2-iBX7~%;{EzM=m`9Bt zKY~spZd(oA&jE#jK!DL5nkHqXP8Ow)NM|}{keY_4qG@;d|HM(3>p(s0XI#9;jeYaV zF(rM}nzFf(zXq3r3y+&?-lh$VL{hH1t|UvVYu`!`}YsO)~?Vo@hP)MbHJFV+6=yq(zkU8pR} z1CUVTCZJttUqvj$y_jeU;q z6Tgz+&z1}9)Hy>+`wOaif7wsZCE2tR@9`Kj^9nrXjqsAsDT;*a$TQo35>prB3J*{!9on9^NUnVuog&=7$(BK-g;aPf(*zH@LF z2pbRbeqqAL`I+eJuA+E0XuoAundzbL6dFb%8&B`C2T=pOnJ|~K10yPsJjLyEMKGn3 ztP z1T&rnQsYUFr|2&y*8X{8K7p|D?jW`aUqnC`6mhF{ND_ox&)sAFAfTFlb%6}vo*Cs& z>rRTitjLvNUm_X=GJNYR_2_8zZ=6F;ljk;n&~_v{$-8hJBjrwJT(Rz;b-7X+OuB0) zqpt3TaS73S`PwU7BcX-yX7G#sE)mSNo0l7EZZtVgVl0vH$&_u1|sg=>=AN~BPw``BseOjyWD1rW=gbGPMH9Rq97$}hF7qVw>>@*ET)Lrli zA`-tXptY{kc&&HyxQx&Fu-w1r_2U>f3UGrLt^sf8^)XH(SGo5Lu0mXHbfi?LArvY3 z^tDtHX5D&Zy0wYU{}E$BHoOtVZ*_RUuvOp2nd#+pUe-*r%#Pu?mbmiWy-07WAU3n` z$x?bXfVZ{7;Fu(wRow2YW?J|#%ruv>Sf}D|m~p=Bm-Av)yY^qXwzRXfhOZDgqpoAs zJc5j*6qd>Zh+e*FY|wuXpqLo>$cg6x z)}le5j;FLX@t?$vleMC}$p#jan8Azk^Dm0;PzT@?yMx*y1)kJj+t2^EB~9TL18Z@@ z-sj67C`4v&qZbZU01E;FrmtKm^LuIYx=OycJ0XB%KQM?${B$4>r|H$LR$yx2CP>z7 zrmgPbcN9C#>?LdfVDqzdUX5XdlxgHZ zv*T|q*XSQPcWou0HplX85=CGiTL2)fp;UA)Gdx5vlg+2%0+Z_GXe>824Ki+L9{DCk z$~bR5c_m|tekz0t{OttM878o!c_9)cku`3)xfo8BXd?!TD?t$xPX)g zV6P0)SQLkik&xa(gv(k?v6O$x`&qv3U-*XAJ~q#2snQRI5@dC3dWAo;&?>aoI|DJb zJ&CzLRSfymV}VQOm9v2KM%!nzuwD$-(aFnM7comjQo5bWBknvPIQk zu7B9-be;KWylpr1((XMXKFCbJst(N#!ST5|7C>Y$Qng49^WHbRsDM((G_irB)I`VY z+b?+0a@pB)a>Qj5Uq1%i-X_;fOYx8j-VvBO9VP4R0bNn$#Qi)em8RniM-@`g@f=u% zXv4c1g}t8Qb(it`yM>r1brjk~Qwh96Z!*eap7^gg5Q7V%nobL!M%~lvLTO9cs+3_* zLCFbz3J#lps*@0oSE1Z`5~vNAR4sWMBoEc0OAW8P5plXa515p()#f6sa^5=G_dt=; zxkkJiu^k#RkW8bF$vbF=m^0E%hUi^ z@}L88Ny5Hs%GdSXa6$-~OrQN^v!G9|8X1{}*ks>CTu+7~M)v}G`ltdVdI}#&4UeSl zMr}I2e_w4NtUBk}fxYIcw%o?q-7E-l+$2$>LUHQk?-RoBQAK5%_ekd78@rQ5zgzp-^k&{DJLFhSk3q)K zICm(-4Yzm^%@(AP8zKX|_|ewDeCy(!KRHBKkZMLxWD@Gr*-r?5V;*-ePP8A-F!)iKZb-~O;)Z5qvBE6kTYd_L+zlFdv5qzrv z8hcn4BMG(1Hyaema((PKo&NJ~s!O%7o?Z*cv0OM`^wKViPwMPBoncrro-fOupETX1umZl<6K46)2%`M--ToJ8 z^;GHKZl3f#a3Ko~cF?ujU{*LSnRd&IuwrBRrO)bJZxu0TDCMa4XZ^Ui6xoT_q$mGQ zbvu%21ugMC&z>Nb?h5N#N8?V9$lz`Jafvf!1$}0pT;uP?II)j!=@BVIzFk*Wfd{Dq zhNQTu%;qXBL!;$5Qut&ldACudiJYg~MhYx!E=+%&P4mr>B$zLa@2m9T(Ohx5w~;OD z96u%BO^fqmOLE7^?Q8&?gI@>DGJD#3*24a3bptgL7=`uP<8kl-2bvJRH)+DgHLSrO z7h`zI+#}2PT8#LbL0x(D(u?EfvI8vvJQim-4u;P_-I;9%U_jj>KAkUr8dL-rWe}Eu z9U|_|2eYc${z9<-i%B2%c-L_z z^y&I!&^(*GKc!Nvdo(_y2QA5?dU&%E-@(aEZ-pC45hP=%*>aUhj?~~+D4uml3f7dAvj{zRX zqBq5N-kXEMV&@_@>Q!Kys>a2P|z^s6%(thull<8oBp|KP;5`+3)yK z1}sT9A&*dmhNpS^hw)rRLmiJx43)tvXQ=56M5$}d*kg8_|Eup|9~9c$SAy~y9?s&kK|0dQ zkH_vzORJ|H9JhrfWw#@K4_`^xc*<%(APgZnBxi^^&aLq1z-^EI_{J^D=Q&_jc z)o&~+@ZF2LSV6;+^@7oj_&8(MXVOOOT7m2Qp$-6r&c1agOyY^|O6SpUg9O^rPAzIh zCt+4_y;!S5x|gAflTAwhn2&zYpA~#E*h5MIy(^Ye61iLQG+Lcpq?h9wI^f{ouZU)a zvg<9Dmz(mQT?Ao902x{9%ssPPZoC}+4piGHZH71e6^5CDeA@sNBg<8IFf2b~_Oo~C z?dmiL9qIhBc1D<;p@?D>5!=!5^nv_Az?<&N3^1kOjRR@CLp;e~Jacz_(t5Ta9Vhk8 z(+ov9wL-7w*?)43CTQV90+xp+sCaA|E%=9DdpN!?&jEbDc`0-iR<4sdX`xjg8>^jm zVlTrT{QNw4N7zDtzlMq}oqt&okKy-;bjlI@-_q4lcCIxqnt+r zm{HvSOn~e)mJIl2J=xOJ7Yiw;FN1_;K=AkEt5qGa!FtWQP!)zegq{q)XSdaw#t4JC z*+gTFiKW3#P3ep16B^SxOYNYCg>qXq>t_a34DB_=_Yd7pu*J3y7pK(gozPx>?a`kz zep86B-Ej1lX4@8mp*cDC48|l$EUo^&8_1wA=TZYT3wysX6nwBnjK78!ILm#f&|`Se zqJdtD4z)lv=;~zp^3wnqvSqp)Xyo{|J8hMLUXIOD(=BHLH3tsaf8i{S4(}L87~o73 z#1e)I#R{k|wVxUNjR&WiC@EJChDgCMAAGVN=tq(xRUoZ}DUWEP&Qeriul{lisNy&14_c6NZcTe3TUu7Fq%2~TzyEU3@_?f&O|{l7Rm zp4-I0@1AM^7vJ67GdM%aoZv!2z=MxYZesJ}ofK(MDPF7WY8%xE46#8bEy8^kg3Fqu zO=F{xC9yl!0m+_yVXYmPcgVH4Bpr2_A$Pq0Lq~fqM4%^q3>0RwYcVkw7IgeJ0Q+nl zwqP3SC_j5u>| z?k93l=0{B>DTXjEd`_-$0tn>9(>sr>jq7yCNKQ$5h853AUd+3Jzm?V0I^I}S1ic7P z78ky9Jyq?OeZ|_|E9=U?micbq^0%jCn!4oY)R@r$?Te}FPA9)OO1jzyD~by2@oEOW zO$3n4AodPD$-^+H4w{_-7y!lf?s#l>`e*jGI1~d);wxqRwpfP~q*Yi*J|+{5GrTQh z$XFh}(;q5O2S_F6l&pWns^BZNU(ncsnE&^<{g>UmCVMN--QOH&j7xNwj{Dse%Yx^hp(k+rx21tKCy*j#wV> zx3TY17ZMu$%I!n4?QR^hVab*Z|8Un5Js|tUS5etZKWDT%kz%Yo9kVUL)%mj5M+MZ-bHXbD2$4I9GU7%)ihLsv`;fLbKaU%E_O`&NnQ&K)uqn1-r}T(5V+ zmZp6AWQ$HzI)4VFS&hgoL9lY`6TfBd@(7SHnx%{A{DIL%ZGH-G{5?BnWxxV8F%m1G zs(Be~AoCcRd0$`3YHJ*|`|e-3TK?ccKyt#>x^mVkr$)m0Z7}U$(jR63*{#n^n&%3> z_7I=R;EL!izYkWnZ&RPCwaYob!|x498(GD-FUYHO|57%770pB#!(_6}Z=Fi*w_iKa zr8fte+qzB+btb=3NF?7-OH+kHDEKnR#A&9-p2YcWaZJv9)*a|Q-Wsz$=A?*_;JZHD zSOZp>hSz+A&=Ts*T~tT>dU^%dJ*+MaR%s=VO6V|dUGxy-*j%;F%4~w_S#F%z= z!}+|av-VAA+CwE?wZizMwV$Pf8>#awP&@{HfQ%ltswiHIdG0CoSYFfsTG` zKEiOgmK^y4M^q(+=6XbLh^FrkiS z0&W|-)}PZ;%C?<^uAAXXc~}E^UqZBH25^X_UV_wG{1VzLn^fwXU-#*o7s_Q@4+MAY z4OaJ;JVjTx(;u%IJ3f1r6v5mc5*ni;YSv!4X9Db~JimwAoo-};{=)4HGqcz8Me$G> z=m$KnO&43Oj11|%R5p|z7>Nan^nC5N5Z0{%lBs4mlzz3vKlPR4!vUns?UfQZ^ZskU z+SWZm=qIkbAFZiht_iCZ{_$L0luRB--E%ad?KJuAeOJZD2xgo2w`BTX(Rl>qMj8H( zQwagN$%N|<@-T{gTr03oAvS`zZ9Uv&C&d`QP#RZhx${G`4?s>J%rBu3?c>K+uhU%U zxn*#5ya*=P!op8SD@pb53Ujh{SpU6oydD-J^IWkwc(h-*T#Ef<>YoDtZahpP6lw^L zH#x0=um1NZ25TipqAgHszlipA=)>=*1TZUguLXVSN3&$V-05plj0bpwj?zZ0-bPM za+|=rCj{61?un@Et-BvtYb`My&x*xPNOCi=dK;mw{&y6uY-JPWQ=t;0BWos?!&}uw zTdfi^MElQwD}~uSm+gQ0jW$i*OMr;=5!w=coy%7R{Y?7cD@h_VgzP<&os}dBAz78Z*T>2xdu4}^ zbzk~^fA`+U{pa>asW|WT8qe4B`Fy>@bhK115YrRm;NV;NV815b!UN z@z-W>a4oFK4`uHqs?>t`I?OJhuzqBhUGcb82edCIno5%a>+lggN z!gp=C*9EoKIHHqA92r|%wATJm+6yRPkO;h%SFyJOUt-%3cNIt|$1aNFS(TLFK0srN zkwgCKXIDP?P&Kf9N&Ki@QS)Kd#-b=B(uy6YK!o8!B_Yxwyzb;^UqxBjm(sz8 z*(ndd04wCF@VG6suB{Cfq_DES&iP>Gjb^1Hjv=la7j6)a-zcgw!^Ca#XF3yV-xqs~ z#?cRDDaTwwhtlE}4c{{~v@S7xOM_g&^?ONyqmR187m7leMd0{j$U+o_k{YG;Z2h$V zO!(5gswTi5Zim5tT)leLqnbJMm!Cd|GLE5NQ%lfW3Oc`%l9IP?*(%0wPK)~fYEpv# zNOr|5REw%hzwTyaWb|e(^oMeb{fsZo))R(a0ZEGF7Yl%Ua8T$mX@0|()#0{3hK ztw`XDDo~`~07Do|IPz1^F8G-Z;#hRLCHd~}*WSp9d9OEG=!*Gff*!n`g z$6dlr>b#MqGu_l}`3dhp;CeAab{%09%jgH;R8u2sSg7oDg(}w_0%d#GNh-aLxT%D} zTAdcj#l`hO&*sS!{=3A;1q>y^yVl3X=3`Y=Rax0HGqX2u-uQMd{Mp^@wH7Nel$MY{ z6<|4>{XcPF%`7Ztx93_NCb)<+!_L?+s9C3~_wV1kNTuuNGchy2*UjVPoLOBp?uI7wup{M)~2gw6v`l z{p3@(r%#0f>XTo;{*z#LQBgg|sXb<&6Ink80V$8J zothdO>zLanASBHH`0-x8kz=y{x6BWpQya*^5fxl{t=~`DIHCBRcc~0=^mHhf_mo5nv^%w(Ty>#Ke@6 zl44ZoYHe+8YfGAHge-WeSw`9sE{H(+qk*a0fuapM`Ow0!P_AD{b)ARB0Oz#|$ zg+OKDF_9ExyJ%=mVFp1MN{^e`-C|YxLe})hD=f|-1@>Z6$*3(sz>MoRPY(~uJyF~O z?CBT*XA?6nQeKR{yQvAOgZMK|#ji5I!buq>Dk?hh)a}WWCtWHrjrd4IR^uj&ET&it zK@gBtT->|vD$GP>ZhE&x4&OeR(4ZUa~erxhMz`<_<&K=r_oc#RNzHAluMkprsw74%qqkP*fJG#4{RT(!45m>XZAem)6eoRbE zjE>$lHH{h9Rx=AapksN*#febV7Cv^t=g6UOFtYwOx#1x3`Sa&4t1DV}j=vez5&Nhh zym9@O(bhIL9UUG1(b>y79QSNoL=L}g)@1itKdl(w+@GrrtRp_Cps-fOIZuM8Q#BV_ zg{kWF=svn{{;ZyzosEtrbJ>?7b&lraHw*eO9nj>9#h`mv_ntq09_W4n>1pl@#R{%W zJarw4a$#X%n2{^mQO%ErEtrfFfjA4P`|(5X#S59VGNLk8Gzx?Iy*1N#dU`rLYcZSA zcA)?#0g5CV?)a}?zu+v{G|AiBg5V<`K75Fek8e_xCm37CElq7LCV51;x|~Ta4%f*7J1t@=EJjQgJ<=ArGpTL$Je#RvAB4QzObcidbZT z0F~uJBTxe25M%uO`~d;t7x8%{nV}e76BCnQjDG)~>$jaRs^BGK8J+qi5~ze#Zkric z3`Ty+QD93|_mWAG0ax5)rDH$=RS%T;FII{rjW_DnT}urG7&ji$K9$FKH=#6d-XuaI zgpyWw4poPqh%r!^1&vzQ$zY0k5FXVv<>iS@HD-OU8Uu1kD4^II3ndv9a-FzS79;eY zW6g-*0v|noyfQz}q0>OA8oOVj$;B@qp!wY?G`R#m!CRyqVZ zi>zLr9$83$S9V9lUBv(9ASyCCni%On??`C&dlVkmtn0VOVn$D%tgboqPvP;u{Mn>a zhoZou-&IzQSe4#LW`0F+3AbYWzKMzV(tk|-F>GBGl*J8RniwP+_2z^?ZJDC(j~}*f zZu`rZFQLt|^T(P7z->tj5xhWri+ z!$Q09^t{fPN6Tev8M@*6jfpHoJ%^rwfnD)An;>4X!n-zkDN!~NF)^hqosFql?Un}l z6n|E;it)!{ueEYXXn7?waQQhx(zD_56Zf=1QSo8#p3lQnEg1QzWOQt^N8%Pe+HNo@~nQOSAX@!K&uxJG`3HXYIBz zp%&h+!1{=FdfWZ?@88tK%>^QrC(O`CH%olKamYhSt~P;lK;jXpS!|CsGcq$X)6;uw zP1mnsD>I{TiW_Xjre%52%d4voMCdGKRQY)|=^nH8?eVOyug4OrhP%`etC?HzaD>AF z7j_O^zsaQRUr`V#h=5?d?JN8Wm zs%~v<-JGgDJJ_CEZsIVoF$*`z$SRrIyq2N~52FN~Xe|8xhNWb{o@sFACHZyrHto`DW{2d6V;r|KWv_Iu@ z)|;ic^j~^sXJ>vv!Ix3nVjZDd3CaSrjr0DY^@RGNbW*CJD#(ea6~;pLHa5gJB$4ue z|NgbHvC+MKyTX3z^mwP|Y@S|6PR>N&bXNg6r2C58fMRHgCL$B!T1xQDiyefiUi3r1?Eqz`VyE-~-?CjFB!^hWYQON7AYk;8v(seF$EI8#4(!bhi;dnJ@ zlhC;UC0Hx>Hcvd$bypM;A+c#5&7^pI4={|rKEXUao3Z>`Tz(`jA@d9qG`O!{zXIri z->qD3TQYikgxf;^g-qqy=|DmC-ZY*^1J(`N+3R2!yJhgEK6Iz4Rp)&NtQAW@# zVMHV))v|OVm9raXBz#V#gA~j~Q=qn4l~VK_5e|=9m9|@oa>c>72pL!6Y}mU#boe$2 z{k^!m&sOtoErd3+;!9s9z;qu5fBE_OZES4V*Bk~bWEGFv!o^LLyqe3?%6(8eN=>|w zYF~4SnYo3`g>lJJgbsq=p#Z~r2TvdKZuFJ@o97PWHru!BUYJG3S4t$WNbc{H*r8A}ZR^*?E)ewpdNV z@?-e(`E$u2h0$+ro0H$%=KLjUg2>3otSl`fqoQW+-Bhq4EWoOka;Ek}Qvt;E=)bg? zokOeAlx0~N{lBT*R}Fhc(2@83>Q$^o7?!#-k)5w`@BNIj;ioR`wweo8vd z2I}$M@8VXF2=`UbfwT5JTCaf9RN44C<5cA?&0L@rnwj87GaDkP8qEk@`o-Vf6+lS< zI&}ZL7DbpcYAc?lqne{DeE+M`P&PhbdGnobZR2;WdHrY<8i_2-Lw${fe4uK5E-eMv zGdCmCE;wK&Qfw$dAN5{`M?{RC_AV=`!At~jW7G{RwKT$F1xf}MpBwug)veJ?o_m7^ z!tlH^QGLZp#zGL2yu7^cM(I)VFMs|tF)R+2&&SuV!?A2*<3K|1KI`Bwf-t>fU@&L% zXu$frGh*O%w-r}hmDl0#qy5bgOB^qi&xQi$VIzf$$B)Zzh9hcOB8C_o9IQQ>+>Bj6nY#QsH8mtSc&m_I?F&Rn7;D%)(wJ7~<=(8Kn!oB< zI&~8R?!B*+v!Tfy{>m>39Z%(;jX3)IH}qb6SdL^dqGaucxSgk`XOiGO*Iz$)WiwgG zLr|i(kOH(M5zQ7NbV?IRM}XhO=%Xs*l`EA=3a}D!u`1?SI+acf9cgKdbcQX#)lC+c z6Vww_IglR}p=GkOvlmB5By!>D*HPNFt$HHqNR>T2{to6Fn44WppL9DIinSfX<$u}zHjqbKUA?0|fG|OwGm(tqw*mzKawt&hIh1cdPJDev zQeM|MqFYByhnMkVlobUyg`8PB86u4%gl#%5T$76`pk7r?t^TmDS2vGZ>r%tdhdBIZ zG0$HuN{ETMOxO9H9rv7lcUgJWY*C;4O_RA$fL7zytv7_L2)_Bs#=X{--ZL|(N*PdinS5b@i=J)yM^ z5K!-Xe@nsk$#y6~0h(Md&fxvPiuCi}^T8Jw;K{((u4{(STSQWlMpg_W;9}o~g^aJ-ZfxfR4`U>)k(Yohmb%p2t(}-q&3@}dZJv||6ADq*KGtP_z zXbA#hQ&KLKN>RLjGhSgoJTw%Xf_mFZ2LOi-?{(TN7dLlLnq;X(bNIxB@owidv}6}4 zra#!`D}(|cQrj)x4y*t$Aj)eWE;8L*Thmk>dbvUhKwB-NXrP8%ja&)iKcWa_1&}48Y6#;5YxH8DUgu(L9AJ?uYmn|hO!f989)}85~ zVW{}})ua3MRX|R!Iv1{(^w^Y%(vbq=LWQ`7ynz*1 zP&dGW5s{JUwkXjrGN}gg?l3Omoi1;>Rwj$=)Fc+giiSc5ScER^aAJ5^CA-fos)3yT z-s~yFBAMsgg^8h|@@K0<>*EzyQo0T`&}I^T=xAAE&OY2=LUQJ&vhuO@KN%Srl~%Y7 zisuxXOTnvai$8u)r)!y(STxTxhFp}sh|8pf4pW+uVhWA%K`OEJ{a)ytyH+P6ArV@? zr24!3=avRp0b15dEm5IRzjklv-o1*ack=Wiszk^_8ZAXHdJ@klsQ_KT4CIRzjVT7b z?DAEDh_HkL13d=Uy8V@Aj_1_#%63FG}%TDp@RBWqOaEfdms_csX)&y9LN z@F#f=5hb zH=*N@O8cUVO>=XzLY70l3R+bi8K^LGee*ljjT=X@P)fw;*C8~f2O_1WtCo2hWgw10(iDZ@B~g@u()F*y;M4GN>S<=?-52d-k7e+`I@n>TOnI$;&M z&S^`@cS@A!_4D_9yMgJ8y-wj;z5KzfZ;}zsuhP?*EI-*Szr}Espmp-}ptSd~{02rx zT2@x;-OwwsuLypQs5~D-otRd5s^=2}x!kdczaOqpQm0jE*usCJh=8!l3f8U!VmfzrmMO5Tnq^2az;9j{kR{RDgfMQzE}{$luCuT7aA-__lk z_d1pej0jdU(UcE*zW~axe;Nh`2uAocM#>f%NQlaYi0d=^n^SUL2U|~ys$CbmQZOU~ z{+=KD`*oq|Ns~!)UPE}v`b^clpcuAK(G-`GqIYysr859xc9vK;IuLkatA`H-@0G9Z z^vIby(I}u}-Vd+xQmczm`lCWrl;rDd#Q`h>yhDAg99YrR&r>cYfVpikpaWlR+<s&oO{;{V`=8rsJo@30-&E@Cg`{}jQ zZ8u&Ha~-q*_XFx!Rb*~qGoB%38*tE7uIolTgC6egBTGA3mx1eL{C|ByDPte6a%!dt z(AANv5nl50ewtkDek1{GO^moHntuS+3EVBDKxXOYJ$UfI5BrZjuC=5LeTjz9p+tC+ zik2A_LdiTIG$6!jPT~iqGY~Q=tmWC%_0EC0NCk-fhgMb~2oV$w-M)Prp763^15D&w zZChe~(5pGn$Eeb$Po9iJ-|0x;7dEYl?2g1R#}HEK63xFaF-T~fG5+p;**yq2k=LUf z&)&1}x>LHp{@>#VrhuNYHd?wgXkc3HFrz@4nuE zS}|Ez^bK_+)MluV{bU@JM1Ko$a-9g|iO6F>sxb>PlX7u!Nt1Ad#z{j+#;Dq+Ph~59 z4}*T$A1j|_5ek&6gu`^5#hvF~Uf*+b37H-RlLs~HG^j}wBeY0MeCc6YfSzdtUFC3R ziR#&}ltG)Iy{^kH=^V5{pPc`=OOxm=VC&38-Yj|iCt!Y0gdRDIi))52ZD{_9Y;tlE zepX@W;^g<|SNuLHvBgr;(sJqGw!Oxp;49z)tI7^n&dSTnJ@+@V0*FbJLEk!0JC=LL znOuO00Mpx7?+tBCexvFn{BXrWG=(iT6dO&XcN2qPi(L*Nmrb5}i$+4vX&ZQQdK*>G z05{CNMAgl0e`O$dxZv*2b}P&3o`8kGfoR4I$X+6;7bW+HTcShG|1 z?_zSj4`|^>OY2md1pP5lQBiQK3`?!L;ZvU2*lg7ievtDYRSDebBr-_W%4LXZkrZry zS^+$KmSVRvbG<1e^re>~*#{@yRmL??DgbV0Nipk+SH2llEw_dE@J=Phb@Gt%wO2m2I{t0eYgv zGbCqJvO$Ijjm_^~bAI;S#9l*#a8MnYAlWk#lJ+-oV7<=hztiz7@fxrt@Qtm`iE{wKU*|N2p(5xDDw6l8p5J z#cnqtV3#PvEWITHLFl0Xl4W(MF!k{TD2S{XKg8pZPbninlUv)~KlHk0|MPe`JI2Iw zy{t#}sGz)D+?~H+X&^F^)V6%3<Jzr5SE8WWfu4ZH0HFc$hs9_MR{!|? zf-kh3Q(}L{?azKE)!I%}#r^PyiAc62Tm^1OwGp zA(}xrAb}dBj+cKts^JQOj)P0P?tNToD8SXKrzM+79#SN@a)fEHIG-JW)y86aCnjvm zjQnWc{uWKJAIqX$jq#LI{EcxsyGxY;JGX=a0w4(^f_?F@zO>FwEE@x)>)u{ z5C_&z4t@T`A%mIH$UNqf{`u$;BKFm;FP2>;5oS&pRKI)?%h9be9LGF$fBN+4TP+ui zkoB8GQUqVZuNa@>2N*QnrAr_K&XipaO}B=cs!#?h-=b3$1may7l`>>JAy%x$a1NjL z4-7;pvmZ9;CrkYwFF*%AX9EFlcHcn{jD3FCX_%iJm>+!*BDl8gOOq&mLq(+(GRy#4 z)MBcAhU|;iyBqzs;<-6F=5w-`i=WwEzJ4twD(ZCj`yrj4;aKyu06}rXTLL&87+=rP zUzyDyOpb9&YZg#Ma|hag6}~YZ!C-R-?8L``-J-QK+rlY=i|#5T^~Z3yuij?@MEkAkFlA+Bb#?V} z+tJT9gCBe3&Wy8kUOsrevQ|#tQLV!xASif&ldB0ANvrtg%a>g^0sy5W0s=SWxg7vz zfcvJVKF0^!=Y!9{`EIggKz50r%VFN>I2aZ`Q$MCkw?ifklN06PYal0BTKN>JacF7>H<}!S->jUe_;wZeV%h*TKYX|_TKcH;^Jk&^U#YkGiwA9J zP)PWg#+m6ehi)Dj1t8jaE4D)^X;qnN5uh>vW(%?V5~g~U!xF!CDh3m(!vh?xlLR9K zczZ_&sLv$%TEcXrmZFYT#(W9%RF6rl{6er&>CCeg)XZO+v4p_H{i7pIii+~{@j6KH zopW>#C!Bj;Y&Tz2a*0s;bmh5W{pLQXO`VpXBO@dG`uY+R69I61|1M1yLN%Up!=?-# z?l)lftAiNO(V-59 zAGBHh_3MjKVY_Aj>fVk)`4chv(ox27gD5mVv)|kM5U)O`OFmEx!j@^{j32%IjF7VG z9U4;3(cSYnsjI6S85xNbd?v+|pdPiFR5NJvu*A@y$b>V~4I{-5(FFYR@G6{wCfDse zJxCR}P_|g$p?CLK)=Bzp%3#vA77Om&0DXZgj-pNFLD5I`oWG+z-Ypg-Rz{o?Xnb7% z5`;fSD|ZKqF2o`PGbr`|g2;xJ2P$=2rhO3MgAA=FM)`xzDaA-e9~HbY0&~zsq??ly2sh-V&P|}8r)xp_5cNx=_EFr~ z-9xzsjRT$5V(J{P0Ai!Z=RBwYP2}tLy^)Z-t!ngezjS9gA1M=*H zff125{L+*>@ze|Vr9V9PNYQ*hHfEHkXCp!fd9KPKN*`rWQu*oAf41WJdVJ|xAzbx1 zfjXbTA%P|inqO5Q%~{iEse(bM_H?xtLU?xc#P2Byo3DyK9Ua|=qN2>SG$78w|FiBY z=Y8xhzrKW2&*_IiU%Qv5#0FH8>F0Dbr-H3PNmkL8e*T?8{o&!^)b7RCxk-K20>Z*Y zpFSxo!U!xt8v$z4>Yg%5USZ_qOxa?mYYT(lnj^29ycv+P6Tb(Rfv-&+-@hC4P#Xy(0>p+VkU#jb&wAJ6#e)azl4*}`-n<}ypJ`eI#bkHY^lWTt zr~7g4*2Oav$155%((&6Qm=b^jD9=r5wt(^wo8>y!64lVqa9Bo_3PYoOc3<1fBJDU+ zkF7WZDM4!Ydp$l#9?&>IM;EIrTWIU59keQBGRUU z;&NlgUpTr!{;fO=pU?jD zA^&Ga$BbXAMYSeXP7e#{CEDsK{SH3+L&dt^Gd(?>z;6I_3`6TlIwHe_HsXd*5`Tiai=LU)ADOh? zOLuPozfV{2Dopd*+U_3^o}EqV7eFedR!d+fGZibCcR z1juLUfCM{gyRo@R{)F;Y6DL^Szz*YXZ3|7b-mFQ7Dt|Ei&&-EGo6^w&9Uf4qfCKod zk_u)PRSr0P(7{f2!`sz`01w4~DyCClqPn%1d(oxxs<^l}jKDAnM^@faY(TQ1S)sEt z1GgBUBcaP>1A1-_r=q1MB%e=^&fCvH$0 zpgU^8TVwOsZUw1pYlmFA zN)ccRem;)YKY|3Yeb&c~ET;~KzZWEL(wtHv{LId~W9!_?#>V2#Apm-P9_pzV`}ci( z&VX!oER$Gpt3A4JvGne(9o~ASFdrYJEOC%R(J()C_^)3!&^TjN!A%O$&zGWqcT20!6>vAIzBC+&RBoTT^g9- z_0`qVQCqmt^ihj2=)&xIIqim&O2G2j>29uEvu!=~SNYme+aa*F2^~W>_~*0fv=sHj z>geh=EI2(BO##AyKFXt7c7lvkx-znv_VbMVHHBqgtv}5LMza^FN({dPa)q+AeD9iS z9kUeZXF)x`!p{)}fcET^pTc~`S47$MxW`c>}x zC@MB~#R@o8egFJfw@@FPNk0Y$vp!9kiF8$Z17Ezfqu4`|dHK*wwk4HxmMX;hi^7vz zPLy~djlg*FGmbI(U29Z)#d5#K>n;anRCF{wX|PHR^Nf71!?T0!7$51mcy{X+xPx4A zSd8G zGu*>V_*oyiE-zE?M$o>~p(f_Mc5NS69!I+ajIXmNvvaCKm2 zVI&DL@m98`m`V1B520e70V)BCyN?BFL6;Bv%^>D+RU{4*t14t#la`dU-+gVWsol>Fwpg&UjNW0;h{OiX~)WkuIMI+M8`YD#n*Nt;>vvgD9&RrBz>cE|g4GMHA9ekgit;jtbRCW3BQ>CV_}#`HmR2| z@y#wfGa1MskLpvX{n2sbh!V#ezN7_c6jCc)>W;pC@I#W!Oh5!+g5w@2w}x>d*^X3} zMO!yGx!bBxpP~CVeOjacr(rn7$98s;Wls!@(=Vc8s1O|HL7zSe@g=+-Y0OS@aTY_m%>T)TXE z8-#&avsi&DBD4Db*btg?%UF(X_T72L?=6Hr;Ab7Nb={Is^6Ib@Z5Pw^XQ2WPSvoSX znHC+ZDt2YOVQI&1q&Taj#8JK$&(B@iSNi;ZL^EAaeCh3w-3J=0T8EoWm=c14t$FC# z+y360chtl=^NNcd{&chgGY&=^>2GqqcJfHoW?~>i_4sIxN@+p#Cvt7N*Sil8vcI77 zUa>C`sZz`iM|Zz?Ks`1~$0}xh{U=!HC%=*WWkNMwLARS* z`JA)!({TC-LfctAp0rTTf%hMwerj?50wQ5rLR{MOtl8x#cJiscy*(&BWFgrV6>eT$ z&`Y4X?*H7(htA=IW`f-P6S&!^@3VtBs#iJp{?^DSbw7D9koce%C zJoUb=E~r9ry(N@i+st<{tSI=~|{d zWA~VCIRKZ=B;ou)n?n86%uF!X{TLeJqKyED#qiYB6v#KCqO+i^l7$SfMhS*8$2Rz%QUyg1bKq_Y=1n*gc)^o?J`Tw9#pln)5I5yA!d_w*Kya>2)nPt7KMN|GB9YNQ{N6346elsZo6NOdjU9LEw!vW1jG&js` zgKOowh)D0`qzw3`Mu&r^HszlE0+lhQl^y~1lk7e)GpAW$hiawL$;!y?l7xmhfzL;v zwb8=RGPOG~B}MWqG7hF)5cuv2B(@n7zEh`0I6ewOlZea6fFhVF{oJBr9G**XNQj*{ zLu&WN^7025Kf1bXA(BRIovOTG_OP@Bt%MiTy@PP<@lqOdx_~$1c z5bfLoZ}!V}%biA64t*4m2=L3@&9g;)eALNO^scL;5ip^5ZE_ll zh$59EeGLUNuEcR$+#2EdvEo8a{IEnm7Ua3c(d+Wkbh0cIsWh}r)afeYQ&aZ;W?$g? z9UZrOd(o-gvH(&yea?>Tfs2NI2y-OyX-CnZ4a5rk^6-#~XjTudQm#Ki-F4eTnb<^T zzV2S+k+Zq14;7m5Zo_jpd+?)4W^R&*-$ON#BRDLBn(LTYSZbY@qG3&dhi3%zSNLS` zQ^mh}<@D=E9{kR@lat93=A6oJPL^)uCG0gxvU>)82YQ~?3&@qwgZfA)8{w&r&SzcAPp!Ke?8t|?Kv$oWeV%G&xw z{RxZ{H|qv^DMV5{4XZBpQ(Fkx41Ir|<6A7%G zOniU71OA9}R+U8fJBSa#_rJM5w6uf)&1wH?LSo|Y!(+}#T%}NE+-ehHYGTKOI~_|q zwP5JcAx_TBJezczii(L*`Pq-*EC-^ti2(Y?WN$AJzh9wdfR0~eT;&8q+46U;-_`n0 z%Epk)o)^Qp*={oiDNuCqOD5hBPtnZERDrbhSsN*VwlMNV>?NfS+*pg4%i!p-pMvCM z@j2cG(fm8Oy+F)#gSi%H$?cJNA`Lf@xQj`h>7^;BUF?-%k_hNmm1BAd-BvwQtj|hx z$JhVB^B5c&YN^TbYdSc$KCl=+QcF)xhAQ~Zwi$5Ng96jEwQvK> zY#54$$9sDnPX6wJpXl_k$LD9I<6O;)Bbbf87zxhMDexsME-X-JtxpS)S7;aN=bIF1 zOI#lLXC82029k8ld0IEV5A(_hiaV{rt)NEE^Zs@LZb1@6cGB zagll`Itu3mcBix12;rwA#pm6(pg^ER$gI7kXkZ04p87ZFDmi2?$Mixy(I38PO9Mg- zxCQ(x62XB9x!xd8qVX3uO$p2qVXQR<=i7QcOW?fr0ilxL;L|afSRwu|Zd~)Uos>rd z5`ncW{4kstiwG?2guE5M1A`B6FBH^-@-N|@L+NmYjj5w>GB@`d;94k3BsyP}0AUe) ztl~gl1Ah<31t_Bx@7^H|SkN%NDre8w1ZyInMqt&tteoxa1pg3chrCuY-Us%QgoLEE zrDbdUC$_ZqTnBLD*gCoX&(ZT|WAdnl!M*@86y~QaZMv8W!o2)^#hANMZps)R0^B^k z@C7M4AVoR%VN?X!7`mxf#g*QTGjM`nOk|c|C2mW(tGjf1v8vR5wZ0s&tY#&K#doQBDZ{`F*z`i>O3rn!1BV+o z@YCu7d}8nle0>-M3t9a!`uTgHUqFHM2JirO4WB=2qrhxl6APU_@}h5QC7W;e z`;WkFs^_#=c3$}BD4hiA%q1w8jtFi%Yt~jP>kjNr$!69*9(aGA8(>tIbDCEL$YMM> z5b2Por=B}NCGpHjIgX?1GJTZe{WDl$1hn){_p#;{tSOAa%mbPXqm4{xBqyk{B}!BV zpTQ+gOhQrt*$5A^JM|h1c&8V;Q!hXMDIe${!I=Dk9+{aeCz_(U&2R@~iObR+MN^qn+LJ*xA{6w9E>UgZFKQK3swlLq_L)Lc~Qy5LjCuh^PtB zwpvP_Lx08^wu=0U1{(xSRy;BVrnRTwUFfqP0}nrtUYcq~y7JxzJ*i&m}%DAmxG5`p4* zzOx9}-*htebCc!|8tLg#H>#hDKzOU@0+ z;qXrni4o~*=IME#>58j651ur(RaDeCn zDtngCpJw%INO`y)&L@AL8CLo#ZbFGy%totmX7(h3%{6sJp32m;!rgnJxg(uI zL+jbIJ&RQHu9srsfV&;3h=ahJ6X*n*0(0hR&Ao4J23ZEPq4`e(mm?mQjU_| zoi^uN=in-cfLSTPSCvBw{OMqT1SA3DmRxPXJptNBj~+Gh%CJiHTEA`2H2HvxQjP;N zUF`+IhJI%lH^$5DK!1hVuuo51mEnAc*&>2l^#~W_d~R4ShcE=GZTy>?{r&rswneOQ z?SRC!q<`2px4GGirw-bb84AFT?)JzZA&Vy1UIMeaS(%ZKj{UT@0`z57p5yk|=dgJ6 z&wqpSm5>Fzp_gU=rUQ%FY|*_j8#>aAZD>Zrlmi5?i9mrq_>K7bm?xcO^=4}pF zV&h8)XD)g-Xv022%Koz$wvd+QV&ovFxvG9i_-Wu3V9n+z?mvrCF14SMbs>p@Hexfm zcXRjucmc}BpwfYxHPr1Svf_*_(W`W{>s;DwS*tQ}s+uqpnJ&bD2wwQ%L#5j$b6>ug z6c{goM3*4dFtQY9k(M*jWYApnbvV`*R_S754K{jUF)ErG}I~(?Wff z^1NS>fyq-7kSC4ga-dB+IB_!@i54T63vi^)H=GOwenL|Qmkb$;Y+7O>2!{>_`V7t? zbk4xx`L$aTnCq908sE7SR6+h3fHk14dg?pU2Z(c56Ryj_8S3EV6x1S+psn@>R=ZNJ zC}fGW(b8Xb%L}BnE*%X#mqB37ZAXs6>LTchzg(n@DHLI$hLFWe$HaszlZ42Pu#TAM z8ZJ*U4g$J-2sw*4tTXuRq)vH3O_*W+B{Gi3)n5H?@8X-so=vE;cHhlAj?I-&-?_EY zmVf;+dZU0v2cP3bl(;1g*ZE>6)U>ms+OuzfapU8umvxL@&VVB?wfn#S{!`|r7o>Ys zj|I^pKkTFHx!rahT;W?)Xe-4qN0)PNH}R}RbX^>`cBS!#&)L3@+|gPon6F?tTAn2- z&<~8fJxjOqen7!(JNCSJv)dx|BNwsUtrpQB3@yDXK_mW^E{W zET>x`P-Al|E8S09)QPq&!a9CfizOx{-R7Z&l5*iDeUx&T5@nn&$iBd)C#VBor^7S9 zb12PR1T-@TCE#v8>Tn%RK=85$(|EKI32h$}cc0_&bG)FzP~-gD=mA5YInmP60@r+8JNO`h zRp?xR!K%ct0A_XYz=O9sHr9{1ojb0bmSOc%QPDYo@$|f&#mAKw4;!Qjl5x2r%Gr)! zWrz9&)%kVO!{dRv$Y81T=x!^xKA|Lr4$pnf22T5Vr{~M2q;MKSNw6FP0z&RUCoF+I zc~WL%$AdQv@_|s20dziE+V{D+7pbXX|5$Pt%nZP+X{AYAzI-`Wdhe0}Cv3AMNMcjA z&>*yq)cTyke}gLpAQMmYW3`K66(~3YR~!gi;8_AqL{e5ve+)))&UTvha%c{)Oaf7= zZuQxyP&6eHx;_szR~+no%iT_d^&{`CdO~n;&I}TSGO?dmIwVJ^8Z0II@9yt|gY(>v z21OqFP$j)=`nC(j1PD;zV@*j3tGTVx+fL>29wu_QXxD>3niY5M-W|1YROor4r3qZnHlpO-O;{2m`PyOURgy2cFvkD z`fSP|e3OJtm3!#fmo@dPO=2?csATs+^H(tT5osM%-WoO&0oSDD)V+T)Y;*RwO>{8q zSiXNBtd)C_h6dE7^Ss>cQ-PsHEmd71;zGeoorCt&s;SM)*RO5BEM;fML`TO1?*wqF z0;UaY8v?ZCWMsb&p|VMfi(84%0b>R3`H7!De@;zpI#mJ5`Us}mr~8mJ@B$FnrGPUA z=^Ai7>|CE~7gACmb@N~v)M)^=9+X$OfKMMjyj0JDFTnT!X?qt>X}I-g63#+RE>O2YOa#{nw4f{ZrLx{d-C+c6+@hr1e#(2cDNHeh z42B=XRYJ-S#06LcyTyGZQXYy3Jnfq|qZ(%_-M1~&)Y@U#fpQ5=6P`Q^i}t~9z096- zx)jD`z`B62y#KD`o*PE_i@rO-$2u?lm-Fsje0)5RtDu}kRu}(2OPg<;KY)a(p7VO( z85KV{gCFn-AlCy)JSX+4{=dViu>2>VK4;Nq>fDp2PkYf9#7G3J@j_E`s?yCXC@LEM-!)%&nTP>jf>Raa{Q>^}?~-q4TU%Ra=L69cFIiKr zxEZfNMYdSjPk`4cfLThr2qVOhssddLJce_C!NcUqIc990rBQ>$k*ZjUCIS;WwP|l> z2k%sXMg^J;*c#4Xt{|TZ)))}>+1clSXd!vsy5N*I_zRfy&9Sm4Fq6R@_k#UJar>WM zr^kmNc^)5ofvTQ60Br7`fe3I@t++sW&&)J6Gz85ZvIBwuDyAw2c(Amdkj&0UgOkJ6 z^-ou21nA6RO76?UPF2RWC+qeA23K6aT@+(Pw$PsYS7+7q9(&hL&257Vo-YCLz!*52 zCMGnS?EN_}KuOq;u0D5TPZpa|g34ZI1luFE$Gw=G<&-x3bIjo98je%KD{OZ-_ z_UqhA1>lkS@4t*4Uf>rU`dbHo{;aX;eho&?!;@3|b$q|e@LC?$U^7bHc#y4^m*Gt; zKWxgNaD&`K#KO~pqmnzo8>=cn+gVo!)sZBF-5&$H=Wynd;PHkr=6nHpZW~_ALp577 z7t1S^D6*3va-AeaGdS*!AH)kh3>Jvg9m@}y_57CKGZFkv4CZMa;IxHR#=7e_h;$7n0|T%s zn_b22VndAzT!nkdb}?H z5e{#R3j9rBRyqnn4g-6|0Qn7XD0?9Ap7S1WXfPrk(465FIJuP2=z#o(%(QIV0b78uxV<>uZZYK^_ppDa zq@YogJOD;-?YedSunow_;BOVMg@qwR`aWE?PG{Ro$=(wmoytLYp7+0ah;kFh=-}Z% z85}T`E_x9aFPlV&Q%dTn{{oErqCsBuClBihUfovs@u6RWoblS8J1yaJiy=^d<>d`8 zFU|rqX@B+VEVgIljkWjbKg~v3DiH6$5hGdgpnNaD1n>s0W43Lh#`;Fx%?;-#d-h=) z@(T+3`}kx(?&1DtdzCzF-pq&y?JNLiN!InqfY8ng1(g866=mYr{Csn_Nvzx}SGE0e zm*eLNh+qKOme(15)qXiwf;`i{?K`tLB=$-sd+9JI*Jwn4ks}{Gd6^4_UOko;6_8`km}~tq2zaET)E;8_cap){U@ZlvQjfN^o-66kmlI1oI5#`JKQu5 zT3I>y8QM|qoi`Zv3|smzJv|+-Kx7|d#*&HiK8gGP**RLh0!L2);7Cb<(HV&Gz4+ZT zh<_3nhsXqe^8Om%Q>Lcvjg5Mge!+&_8krcm4R)m&!Z-G6)Xe4KbF;<8T&T^!?d-d* zMc6poSSA5rpRz|@PlCK3t+$yO5^x5WSU4L6Up7qmKp6(x7Mf54H@5$RF`$LTuv~^u zhTxPd{V4{$RZ+_QwFZ>jPS+o0g|w)8F!aa4i8aPrw>&f2u<9;dXg0X^F#5oE?|cF7 zx5VyXKVT6lhwc(iJ1aXo(c8O_gaw7$F7Kg6z;Q!6YU7%m*khiNwH)fDRWjs~zA*nj zWNVDXrJ?n;KBYaaBc}l~<%URHILw<|CWM(Tv3VGpF8!@06=0E_%E5#j1L6$a5&#{i z_E0=4xM*;(T8okF7YvT#Z9A#tE3wU*G!=ApO;1=Zx_ z)DL<=>!T33icb6)B_9@#bR4c#d1xA6{@sCVX?kL=ezkaG_Xkvcjm+BYGfA=?PUUEo zdy7QUcS1zpcl;(y4TnoB5!2(W@~1=PhvIf@*k=u#_j~^@i-^_blVfb)Phl_*FtS&E z`0)OHZs1YSCSKZE=w<&7M6E;f1NN6E{feFZY0PBq?vqaY^4NE4TJC+T%mp#t%Flf( z(NlX>)YZ{;XlrZdR=T_~23e3bk$>k-hwdP5Wwje@{%j^9F$fnx5deg*HmXaxRa^T9 zrS8fW``>^`nSVI_-t|4W3Ft;@uP^eT(j2;Xao%ikIixe0PAzk4;z%=&u_{kUNPtEf z7y7M2Z{;m=WsLK16^lkv6%-W4GiExu><#i*Z(U#q?frUqS}CJVt{RzB*7v%ZFaYj8 zd4bK>3X262W$?yIN@pcg*b$*{P@w*LcU(F#A;}*S;yg6 z&)?sol5w}JjB=44ulQ2PSX@jD5aO0Ar+j?WuDMP61s^%mFL)%x8_s#;6s(?3(h-Ai z2&fK~J2wncTi6$Vo|a5bzHuWIw^tuE>B0r`|9p^r5nkdPD6l!%eDhkUp#SADu^OZe zUsN9z{`u<{VkWQ)^e^3iJ@y#5Y*V6OrCZ;A8=C~GVO7ZiTABbqe@rIr@6}ch0#872m+OHu4mLB2WzSM6O`6dAcvNN@_kk(GqjHGJZ7+Y2D7!+R|eVDslg z|6f04L!{h+IY-Ou#7zy+U^>Y<>&C@&DA3sCb%w7~Vu&8^1IG(a+TY(FW>$l{!0$8l zBo}`)tSde8RP3b^D>O2vtM8xnxBKq9ue8cV**4(#@v+j-xnimV^df-h7o5n%&NeBB z7-2c38fcG^?|6HE{e!LNDb1%eP^ut&yS7&aoELys+;QzUc5K5!eK2W%S_(pa#yVzE zWttb%$PLJR2ksb9qTyp7ovk;I{4|~3xbZpnH@|Hc47w(Kl+!tf;uFFf28BdK;2|~5 zSFPa5-YkTW6O55j;#0Cb3D8c1_Ha`-FSJlZQ=2OEYid*cxMDXJ3oITiaU;u?4=XRp6JJH_wTRhJ&+rR zvOfzE99Po-5FQI!?O}1_FJI1srb_vwF0v-7K7JvMBBdaa*(hNKK@V=k`239+n-ZHU z0BkjNr@(P;omCm7%fVcU{F|X7xpQcFK_nBKD-~7=mOXQ7X_Wu?eO^;t9coKVludi& z$dVfX?CwUghFuAIas#U>7{WRxenKmPhN0d6qd}fBP~T83b_Qx2(q51^!)QkS;nb8z zjv2YuXjX^S>S~hFd0pf>#Wh5{6g+BeL<4Y?#K_TmLV5pn4r*wjemZ5 z{6Ro+M_c_iM@tR_d4f6y&uUfV91kJf?#^2_G?~=#e z8l2R8>B^OSGdZVCe9khff$+GhU4vV^NT!ru?b90@wvRCcT zA)kvWbl^TJb2g}ce{9Ahw!2EK`tqL8>>&I^Z29T0_Lcm?uPehV4LnD4Rb{*WNIL&5 zJF@I-`!Te4-SZ52+dD48CR{Ei0%6wa@+Ob|Jjh63uq8%@D3fw>d0lhJ`m_fva__pG zOcE8WINaS&ZBqF7!Q}g7?O3SFl4(Bqc5SUf<@`UtyZ)SR|9ZV=`1g);rGA&szrxoJU7mk8R;YCm32X?-c|kCzaWLW?ueP_F z_7-nsBUwb8v45}TB*&Nf!nxyc^(JaniaH@x8o)i=Od6cf`v1YD1P%N)eRGr}*-M4c zvn+646R-%jPTz6%w+{yIZZplba*GqQ>|B@F=LPOFnK$WCe z?+(u`FuAe?OM6pyGjPV=f0w?8Esh9^HUnCNFbyUX9q}%G4b!flIJTo>V?8>#ba7`R^gv4wC{+vP6s&e>h6A)jb~jP+E0kHoSmar+se2S zEh26*GOu5Eb9J@0wH_ z1q1(Yz4e1jCwOaC>`kS4JSu}dJWM0+8D(>=;-L{n|7Zqo=mFPNH>3r zosB@CtW%m%ug8i(6$DJ@+HC=%uOI9uC?}DA41jDfny_!3BO-7TLMC0v&RW1InR7lH zaHZAK*0$CC+dz=5*IH7AEZzJvJSG!9TQ77$vk2zo6&7(z9ik*?c^ZDXtl)kD3VN zVhg&WSYVTW3^NmEldWB?JDp%!o|+Qdu;GEc-~1Otg*wj_jLPvx6-QWQcsHu)BOKvM(yZISTGuu27G1ylRk# zP=Ku`ydHJ4@vgOqFfoUr8aYD053btcN^RHRrjv1@mXwryv)zh$ICSC1;9Cz5wzH*U zpQ=prw|NcFOY+JVXc>mmZvaxgJGrPLr?xGd!_HU_I*2M$FA1VIi5~7Kl;0&Bu-GcQ zjimDgaB{wB7VX{yXNsXS`gKf9ub(#)V{%ReAzvY{b9^pndX5oA`(owpdQC%!3(nxB zeRCgq!aL~HT}0FT`^dy>RX^C~!nAn7Ox?WnH6(&dG8$r8sD9JLr9++2E<#y2v*B)%gE%^T^q^+#$r&AAm* zA=ArOx<=V{MZ&HSOU_MF*3zmP*{&Gfu~NGXXU*Xo15egF+V}+o1VFLO_x2txd8bV#8w)eQp;al5BZg3Sm>uv)KhJnMh zYj>pvheSBNoUFv9x?=~ll9_?eZ})!>1G|4wY)1`3M90otZyqm<%|jh#Kf?27B!PnM zhpg1X!h{BoHz&4z@MS3~Qx618t)}+CSBp#_MH}OGgvT1-Q(LXmpw|LSrf{sd4nYUDaCrRVG9_&5sd&YPvu z+Oj(QDrufnN^%6sjajQF}*o{bn*5ea#;+&WhFJ1`o64M1*p{auKXHaaXey;a!J z#wx!HC{8H?Vbv6!$vK}tf5tEsNhOu6$>zxX+iH{=z2U0nZB|X=3`D6JPue}r;6mJ1Go&k4kDix7OGykv~D+*-<-I} zMzpkky-wn7Z?9|Rho1iMGgPVp5pU~hXl-e!r|uYq0dw+>&Ire=$UHxgZ#vmqK0Mx; z_n&=gQ|k9;|vLpDH=+2O;hY$Hjh@8MOmq}_szOuh{R1SjvovD0@Y8jZZK8}%AB-qh z>Fl7Fb!kuKg9poq;5-6T7(OHjK>&DnkXp<`thIu<8O!_&(hEc@K0E}S_TWmIOXea= zvp4jH7Bte=PWP@jul$4c$*fx!vnh4}gY}zAx>BA(r4D`a7O&(rZ_4GzKZ8-@cZI@d|K73w! z?Ku&tPOXcmo0(CGbp%Ok?}>Egv$Lv^QD@^*cM+mti9BRu13>Gk*I;DV1duqiO@a3b z$-0Nocrfx#1f4j+-t4`WB*8(Uh!eOPFst>v8oHj94GuFmzC$dK`sf80JuDnZJd&5Z9$pEY#_N zf0qMmLJmws(#l|6(qBK*bkH$s1Jz88C=|ORWTE5xeExn>fP5Ky^i4MK3}vw}#*z5K z%-q#}^msRnFa<{k&1{-D<3e}jYK|9Kf1#h``{FW?1tx;oo*Px`?IeCF#5 zzDUL7xHgjXJr0PDy}XoEsa2e$aQZpAnh1P-hWE;~RaIGwsNLrz>@Df!+XA^fr#d5# z(8K+S33^UANvP2&h7gd~39b3e&RL(WXGxHN>?K3&^v3Aa@a-%SsZ@H`12~dh)ex7C zWt2%d-r{UZk}l#{8^=02{KdkYszfp5HS{&b{>0&(U3}9sNEapDD&QdJK*UETHJV2c zuu*yih*rf9F&O3KIDT@ScYnbp{ZfjssVMT32gtGQ4AKEQ{TfN`+(}Q*n^{?Dcb1&y z4xKCN08M?my75r%fFMOqHUhO9UKO!!%4XSFM!w8eOCZ`LojOg=oXrBgSIC6u4%pNo zLIq-_XD3jb`DQ;`bO+w(K-9sX??go9Wg|dgPY0lP=_+>OQ}s1W^e5tXM4MOsE_p7P z4b+N6=p^t$Epja@>w=ynE|wuVy@7uoSkybK)N9vC7Can?>>y*7hcPv=3GOqly+(}9 zS$4Bh5|+r<2e0>w>&3%!^Z;s^3?bHWXgWYmq)CaZ*&9OqBVTM8ylyP)g$ymx*bB$m zY`GgvV<0i7qnFe12(2jFg0^Ort^_%9FO`L~AFZ{C!oyb;ZYmky#>bH_&8j7{o6b{& zeoKifDkjXN#E%hclE`9|3Jh0tZGOdG^UFP7vu@suv%hCtEGm=3K})0k;W%)piM1Ma zl9`HrROr{q8~Ajf5_`K!4@V!B;H5mJNnd)Ao-SamX4~?RG9xQOBum6FrvEh<=W1wc zZ;x$o6yiHfyDcBeTo#hfW#d3P0E|N34p%kLwR9wgpK^DP33D>yD`~-o13eT~?_k8Y z%9)28AC5#S?9ET(Qq0z@{_tPDfxIevN;Qo_Qij@LN|N+FJiLR9}d%H#-VAuHho4;rM5jqEWEj)*T?^MrU;EY}iK5;JdC zQHpr?OtMS@ytD2^$y|hEZMAu^@=$V5P>x8WG!cQvSBnj9}u1|zsbis;_6aL zl2E-Z+0TEE2B95&);wi1uk>otVHte8!lRE7t0iuoT?|&26!lajco$)Vl@u4-Y9_e^ z>*)SVr$>??Xh=VLfx;l^z<@vxE~TH0*RqU|ei5*J3#Bo64V7v`vnhIUBA2#pZ(~OAG%Pj1u8%GwF)nlESW!Q7wd>N6}l0Z`(Bk^q{cfO zBpn}L-}*#@!INCptBBP+s8rBg^fenx^JrwcA3G+qBu7czO>{aCVQLF)2I>3YrD0O&hz3;QeX3{j-+xsyUlDzb8*O;fXo#4t{Gc%OhS(EM zPvEHvSyZXycSRHzBPaVrjot>uCbvXm{__S>dy?dv4v_-|b`Z|x8m4~vHVP*P&=k=P zlB0Tbiy~%>(sjcOUMVsc7WM}7dtyLZX|2aM6M*20h)LCAZQGO^V1Y|pS-Jk+q{>ET z3gS{D?ARTIy78#j{RqSWc?a``-KE$c)jX6W8aPO}y6pbM{h+gu`QmWgP!bn!jrcu= zjQWPb%!_cnp>w_vM`Y5ozmU1stN|G~nlWiDKROqr>N%Z$oQGn+y$Fp4 z;pqMx1}mYS2TTRp#FcNbr$D&0=C{zy#_9~Vlmg=3E)Yp^`&wU}6E0yTNHCL@7n79r z$u{@8Atunp8ICM7%x(Z;tU{iF{&l&DJbSXN=6YHMrL?jPVIvk-K+ zspQB~&zQ?cuo-`7w*+%1>hU{R6ThpoauEri*-26L5MR!?YN(5Cu<97*-qc#*WQNiK z)qKv^g#K%U?r@gxC{FunY0KAcp9n(S`*ZObLrbnA$^`@DQv^g4?}W2Zv=uT{oMEcoJh2m3JD=SAr=-EiJGdS4i**y9}5dR7KMPHL??+Y zU}3RhsVU0qd0}s4d7BvPpZuFtQ!xHJGO{}0_v9>A_ld_JG2!nG2EE@aohoAMr^dyd zDjKFdmCN$SjOrz+({*&zuYOgKKSWqvy($@s#kS#~d#HdSXC+co)p}O7dY-O~V&nWf zH{-kilVwZ#Z{~{BivN(e%*>{V7{^&47I`iMc8T8F_V)E;_0?bEM;bT?Cy^Zr6C^^e zGrIHR$51`q$M*I@8XZ#f6+R==JOezD7Bk)Uli|^jws5jEux6 z)bHQF%`KL4?<8?xmC7{>V2207N0$$NjFsIRq zWLF`P_hvO0hFfIZl~-n!6Tl9QHxU>f91L4Qf5P2fs}JIBIza^<>Ly|-@CXanmX}AT zZw1{W=E5rNoF57+97*lm+1XhgExJih5;KieISMb1kUk}8vla<@_3Bkii$s&l$KP6o zPD^q$#nWQ*X%3WhOiU#3w40kx27lcy%hJNq>soz)MT!-~fc)v^9T4yjmNABN0)hBR ziKWk)BK8drS;#FYBQvzL%X{rw(J(?K5NiRmTq?vgSlGs>-v>U)>iYNY*=Shz;UFV0 zZ_j94O^kHB5=gGDruJ!QsG%O~Ck`T%0xn0)PltyPr9zjDT@o<)vg#q45*RHP$OF5g zn1I_V*Qt!Cudly#>z1hXb4R&ATg=a?@J{7A>9H#ed>20wq-k37Q!(NoI5E#gA*zRq ze5RG#+G@;6xq5Jt!~KDo+=UAk)8=b<%Y(E)of6oW!0S#edvv+h)ABUMlh@~IJ`kuD zeBIh|@-mKDnAObrbw^XPuj(H)A#O3k|Aa)!iZEzoWTdmR^W?;*Py{t4&yBzfk*_cq z|Ni~^`1s$$!{^VR_jGrwaZ(DTWF#bvjF01&$`x%P%`VHCdw6&_Iugq?ehRF7^NfmI zLA^ky!hi@F{PpYCpr9bQW<&%kP4iWJJo^6qTQV|p)6->R_Jh-iQgbbwh9ImOBsHOu zi%Yd3A6El?^;Rj8T*0WKp}Ja7SXfseW&1~mEIYeGfsU26wZXl6+M1ft(a{43}lQc@g5(y6$$cD$tOjrbE(zuDI>-NDg!$z(Ic zLI{%!(h=*Fh{(zY^d$bhOx*SG5?3I(5FPQs!2tmQfxo{$?5e7U1_J{_hR3~5SA|@{ zSYad)X8W?VF4548egFPH+c%22kWqyJE4le_1;h?4?xLHP;GHmKbl7U2oCJAixSX-E zv74Jv=9T%|qsisA^;5ro{mNH~gP>L~_`0z0&`p`5IQUwOknOc*Sf`Sb61e+MO=~v> z{CWx{a|;Uv-elM*t}9nQExVQIsq5Vtoxs&k#Utj#!44;g=w5{58W~9t&L4#Ri>lL9 zASyQY*RB_Rj52$I_<9Zj8uwS6s4d$uT)MlvJ3l|4mEh-xqI)sFPp(T#&;IyfmOt`s ze0=HIU#|u^IT~vX;ys+8Gy+uEd)TcQWnp)NzJ>S5PzAP>{>{}@J4Z)GCZ+-uT=j(q zvZ;#^5fc-`oBZNSkzy)N{}p2)5fP7t_qedw5Mw`nXy3%kCDdD|*a@FQ^78U(Ws2wN z@vhDi?_|><&d<-`fK*geK>A3MPDbjp7VdYIYEZ_T{=2)P6R6>dP-5Uu`~(LXjYeBp zT~T^)_K6=ImZREf#yU?Il%AfRo6Fkd@{>-fFuBKx>)+8*oQc4_{1G~0ytPJhy`U3+ zB=gt6&fmXnZ{No8dzOaxK4howg#cl9R(i zL%%Hkko$d|62%%y&%n@a;i{pb;qTvGYbsgYT98ZVnI94?H{XH$X8+{jLpDDLD&>$7 zTSe4^R?mu}B5o_`h>;tdf#fZI$8HeXS<88JwQxZT*vZ?spGYum4v`JC zBJ{d4@f>lmjR{yoA=*brNA-D=E38;qZWH|WXgNDOYiMW~8q&fuQAO&T{}vCkrcmoN z7c^;d2^wCZx=%1sh>snna93YHIX+%cR8*NP&SsBN?;)3h3nS_*GqB5??($_db@jK~ z`{A-;c)lWBxudI#i;L{+?6&^xw)XgeyqZ>st8(T>2r4S78#iw304v@-Zz%Y< zf1&f>62;ouT9Ufe-MbV^+uT9Co$>f^M$tUfckkZiO(x`gh^I3kJ+QL>;r)9P%h}ry z)TEZSm$i^Oy1GO}M6N=3*0##?Q}qtGxVUc3nch#6i`EJL_W%l#l8{{C=5Eyz4-^pN z4kZ6-D`Fzh`0m}DRMzfvE@AYxg>7yYydVUIMa{&}9y)pmDMEk8&(BXogJ@}+U32pa zI;=#K6&FQUvyLY~N0GZ7qnvM0R#8^g-`D3dII4)oO~sWn7lOpjKu!H^W=855YeP5- zOF@-~+O64S{2NZWuRKkv%s`%hEhlS&DunKQqJ8bhp3n_Ar2;9JsHus`$b|Ex4;!%c zx=h{Bv609(I(Bk$ayB;HR1El!-zv*-CAv171j(86Cps`f4vTsA++au%i%rkOgfH3SCz6%`c|6Gr30{Y1L>Jtu4Rx&qS2*Z0`(opQcwp6G4eDk^k|-s8uQ z+uPe&33OGE#qagF;uk5A9uiC`{g3VJTqD0La15d#9mdDUx3x*ticGZ0W9cp65ly&J zAW(U4-@Z*xr*BG_XP0)G8wd&lC^a=UW|fVa{skp_z^=1FgZ%f_7Nk1O^Y~X99(nCC zALmr;?Csx<2Wlk28bvxiSGIuLJoBcKJ>qJ zidR=x*SGAJrYU;*y3!ENGmY=;*i_KsgxG1LbaiwT6cpZ_A5L#hH+CHV%D8r~(&Vk>C$oPi<0>rv9$mq>9jzC})#hFK zaWW_49T!hNy}SayVzcqb^U%;YZ{9?7TX@|ax*x*D!GXgpP|YAy96b9w zmz4&SF=l3FV55yQZ=+yaY^<%BB|Lt|h|PJO?e;piZZ>=fC&S0b&yn$;8eI6X@F5)Y zvtE{fGx!y8kKbr(YwM>^8~u%}G~8L^Mr`%U#sEIM#QyFx$I^ERWlky}#}4U=&&u-O znz^+uQ=(T2sn!4Vu)?%`>cylamv* zN?47bKY!lI5XD6zk@)yjj0;RRS;)z&?M4fK{KR*{2-p4Uz6N9%w zyoNzI;l)~5Y*2AUrKDy6m+a9P^Z2fRufWE}j(u*=o&2NaiNpQ-m(PYB)^yhyCeHIN zE}k`InKLEDsL0beB5@~+RaviHi|SoUtE7M8;juB@7}vk7^KYP&wt2y=`Sfse{rB%& zb|2njPHMv23JT^-CT%B3J?!f*&BOH&Zq04)-n}a-QYjnbP5vAa5n+?<%_S)K<&~{Q ztJJX6zNVsLs7?td&5b*}w^5PZ7R@GFQ~`GLT*U|y2?CQ$MY#eUcv%2z{mXmX9sjc5 z-FsnOrVTd@*|CwKgFI|&%fshxIrMS&F&ek`axm^5WH~ru5aCrO&3nr!W-YPIsq4Kd zX3uU33d%8i5RSuR3JVKg-C*T^fTN#l)!1A<%AUX@F75?att`R+HMLU}aNgg2>A0k- ziiMs&I6T%R4sc2n2X06xdAxc7w^ruFTdSy!jt*}ZkKIjv;|9nY$>fXQM5o5bSGKoh zrKB_;i`lI*6(jgt2gfoEc&LpV9N~00o0#AfI$Uhcwmw+9X$N@O%$!RA70658OUt(; z2j!bl+UL*yuxyS1t3pepoRJYd>BpgbhHP&Lp1K%NG2mH3nt6^o*TyEF%gv5Nb7)ZkBa~0+E%KCHe%bUN}682R)48 zy1KeKK5JKvEiV7;N|5vP6piVLH?3k}WDM2+_-R83jVok#`+*p0$E%G)C3c=}qcdp} z`8q$}`46(b@kLZrz}c>f{b`@bHgw0|^XqJfZF2mreNiEqisUF_;y2ysW{*`$z91Dh z?I7NG;+cZ7+bAnbOTRxODvF`Es_pQxUj)!gaC76o6H{bC<0?gP$W693QAYm!7)ezj(+o^qs)q zG8d>l1vwgISWwD8W#aE=+=B?O!3MdIy1!oPIn3IzoP^f7qjyQm&(DBKTet69rp zkg#xOUJGGQfB4@6Mq-KOA1n83dHyDHmlItz=oO@x$qc$`T`MUPNc4hGrIil4dFYL~ z_ER{=v?wHDn8kSIgQiekK?N>sZc;N0gRs56?*5t#eX|%5jXi@(diCnv$y(WV``>I; zP6ZUCj`+*{xdMy?^P*hVcE#}C*RDCd3S*TVf)eS1x0e1(k9SP$hhMGbr_3f}k0)XLMh|>mgITS2rg;Bjdq$oJ3 zTx!LorHi{>LoY1Q*SC?CXu()`E@7sj&2`hwx)Bq61BU18+pIdtpF661)Lv1Y32|T zqV)aJXF@aYiIAsABeZU9X+bgV3#DnYCy*QA(lurQ)Y&XI5i2sPASER=g#{VPlEg&> zHPe|-yGRBR)?}brB3iq?jE|>eXK%ICM)~mL>*t#0pa=3_zkYqm)NA2j-0V6JPiiT? zA>oV`s|dU9M{#)^;aj)vvyzirG7d~Z#C4I{R_a*V+S)?Qlo?c<98Np;_xBeihW4ji zcW*X%p(x-IB98F(_HH8c2gHu%iIAk|ntgar5LG%)*e*q5S-ZwN_9_{?_(T{81??SI9e za^0+<5`TwYIIk<^ZI7$pLNic56$ZkVdxFK6fz(*j#80;nq|?#S!5r4LvZ`P3eEvJ% zUMqx#hwF-Z1wHym;bNXU%kzSK(XAPJX|b2)QS=b=#Uo@|2MU~&?H4EO>*H1b7Q$Ho z5AqRqe*3twu@N6nzNkQESSWVVtzdIR`MO zucs$+^N)54#E7}R9+g=f8#`x7K6U!K=Q;W*(Ax)~v$?ssk`iw6BibWnk)X1BRa4THH|b*x`5IcqsX3G2 zsq?(9+Oz?e38@cO^%QDwd0VP=CAMxO1k%fwFJWgQVug6}$H`uJ^)!+f@&;WkC@<$@WzBv2_T?fr(F{kBoU?Nk(`}PH zG^30k-JDGW4%00qIhwwOjRB)SKIhN_kC)%yhjoTFK4Y=fp8?wGR0_&qQayQpglF^y z;L+@CW=TQ?3OB$4@gF8{)w71~?d^%e*|i?Tuo#j~Y??Z;@FT#WP5E-?=6BM=h0+`w zLQZFz-Cd4t8@}`nkd?}DJ=R&bcXaf_B)?}Tt5CEijtr(aNm5%F0NVHGzod0p)fp*& zUa!eTL`WEX-F1kN{!^MfjVhj&@)J1FIevSeAelpBlb(_ycC%?ZMF-k#a&myLtCSU; z+HNRlXQspJ4a%OJJ;0wX3(52(hopf+|0Jq!c@J>-^#?6~0McuztG{2T#@0;;4MlpX z1Z9eAv>G{PQlj$URT5uxUJi+wQ60i7l@oG#UCO}1f=M=OV`XOE%gJ?hBBw)mMuB$KUnq9p|Ti zjn7`cofQ%+F$YMQGhAfXiD*<~6q%979hqON13O1^Ujg0Ktx&p-GydZuj@&+8m zhz0dGV?8}RgBfD72j6t@$(ZXNJ#1B@`0;8MvvRD-?{?EghAZNHO7!fFILADgKKW3H zuTev2YIQl;6g+wIBty*k+2N$k-_7apC5|FtLL9%ew7O39^%v!`x=E?2hQ`JYBJ@ur zvJNsmwa9p$W6D>i9HnDnP0cPeWJZwRp-Z#uZxps6{?lO7H#|&6N?Q1&4zcoy4K}@E zAY^01al-`r-DkTnN*dB2UUc52^5ZWvGiN#f&TOESn{Ieqdw$!l0ss86`+G^kpP_oz z--Kq-ukrAhN!o8fHzGK2R0 zAxSGMt0RGjmP=_}ZyYUZ=mc02Xf-eE0yR1corbqm_K0n!PXzBM*_j~70_J!hE@zF@ z#%E--LQh9?&A{(q>>ki+-$rmWX%?53mKGQLh)(N1N>CMfq*$ncXGjruX8!pN{hfVY85!sunFUzV0?`3D zdO@8sr6nbk4UeZGgk+9?Cc-JzF$66;oxFKG%Q=|%7fn@b7#lZxq12H+8 zo$Y)`uu+$;V^|6(0n^az8W?>4ma1`19S{)katWo^%ZZq>v9XUPPR!!rRrpeGBnzP`0_Y z28830rf{_aCZ~i8LU#p)xN*+MVKDt>PQZn?vNGNXOMj+7>{3Q{QqspaDBQ=cgxL8b zaJr54^>J4SNtG^tB?{r4h&16!%#!kUgU>-_CnF^M+}D>oK4`hli-=mhbtPJ;Tql1d zH6h_HMBeP)l;@B%kFp>(I&2cV=N13S-;RInQ0IWiVUh6@mzDkD6I!q|0+?8kPeId*)_zKvS695Fj+>VNT9{#=w zxNv^nd@ls`txphPQPb4X5imu7hhMA?t%ut%Ybc{R#~WTV7tilWktDjS)}9T5Mfh1lidw;Po_81kOP~*x%br-A!F})MvYS zbL^@-lGlnk2yUu}e)Gn%At6ca7<%*6OWCEteV^^42OjNxo=Kl|G%d%mh2C$-lHf%aj+rLC&}LioY@_;8MF0BjtDTUk+2QTUh{h$+Bq+u4=O z{_`2FWGxT;Sx)!4&1d1=`xrxw9R3tEZfLwF7Y0bt@)^1SkN0owUdP_SL47GMEh+3O z2wh(UK29&}d`jd_`=9rXfAvZ^#~hV?!Gg_IhEPzgFerNSW&@7?pf%h+r`zIw#NS%A z7cnsf7ri$((TII^Ha0e`NLKXKeH0QGSH8S}2^+68xXT>6pu$2tT-;B~dn62^;sSVy zp-a$({d$=6aQgq=v+hwZ=~TC(OX{ssb3wX4KGHeEfB*gk8V8Ubh!*M8gRV1o)YKlP z(xs+zQOq?}?x#unKQF*@ilaZH+H8GaW3e{%vDw~?u2wsT*Eck%b5b^&IEm2X zBCuoW%}4a~^r$(^+$B9X=ss9biS*t_!rCjerlLqk^=Ybo@t~E3z7C28(AytAd??)F zl&2KT5_kVayl?6X$=ZO}%CsG-%gsUciCiM=^b%N?JhaD?Cm>LO>iKzjFE1}otsMF$ zz6%F!w1uBv+v*gNuxOKsldJ2EeRk@)2tUN++yu9qP!E!MJ9IUia{6o5`Z-lVb%K)4>IXZq@ z^_V#A@o6{ZO=b@*$MQcv7_SI*UL>WVr4>@91Dbble?RR~UarzlDi9Q_g^U--ZxW#I z(m?rxnAhi}iR%Tzf6P_{%5TGb|EEuE0$anjX*Wt;_I`eXVz9>nCsPVBk?4c)H-bu04{SI+((1f{upyjDW@LA!%I;p*zDt*!0r+iF_%^vz?Vitn$A?|5Vb z7;VWBfQ`MAGV}X4k14;J zrY5Jv;Hx@Bmv zL7wHZ1K}FPI_RLI$+W-7wUF=p`D0mQ$Vl2dJRCP@eR_1%)Y=Mv&v=a90e0vw4w=+W zO2?Vi^5Lj=%^_)HP*anY7%$Tx>PNBLm{uasfjLX8z7nCM{QMAp6l0# z2L=ZE`ih~mtyBBcufhF5(F%knCf%27nx+MjqE1B$Bd|KLl03J{-e*D;8 z6#KM$H|*l#;>8QXEUn(9U4X#AWkbHu)+W1kl9`qD_)#Ah8$(=g#*K}s?7Y%abw1jZ z;pE0hbiw1wM131 z5t>&52_hRC8)36rTU$Yl4*$@+*)aX=eBJE2VYNA|DO7OLdlVaA9pD_82yic+gfsnP zSH>_;?n|Jr_;akdo)dL{L_grH#$_`1t7JyAwV=`8@Quu`v=7 z5@1#trM#-az5r2CUq7~LV+A^#>XX>-?iM-mqXdrPl49OdF2Wa=s%a2F#tkZ zS{mXs$p>pbFPxd3?fbN;lD)k>9QXV8@Beq`jUX36M*}Ad{sHGlODh)511;?}e*P+x%(2HMQWBva*0OV+RZZ>vZW)(C>K(NAdXJ=#H29z9wrM;!b-C9LJuOc?06IH-C|Hp%%@ zQ(L=tJ;0NDYWMHoON3$HE-%g#kYgblsCEty4|jIp{9l-#-m%t|vI*vuI{!1u`O#;( ztZ#7eiG@gS+1hB4Hq?M=8A3L0_>dm!yzlwS*48`MCFN5A+#B*VqRw-UzHs!5&^#Zn ziAauULFILHo3s7de`x(Hx9Hp@946anEl$s6STjH_5dLn8`S?RO@uiTHDC?sTAA!bzDR zZ@6t4hEG9Yr6yoy4EAjC|A3Q68TnD_<8;j+5+eG1_}>}X$ikfR=|Iz1bO}XVZwQ(A zus9nV4(2|IoPb3+n*4Y&2uh(_=r~!s#*i;MGO1~H)n&2c*h`-YLiN(6l^F`MdK_$4 zK_=`CCTqv6ae$$qTu2TP7t%hA;H|5#r(oK8ToZ7(alegSh-L$rS7!*a^qa`}!%Brezc62Q7o_Bi6?yi?tTbuYLLNyhR8}@(Oo~Ur z2Xs+hK0YTV|A2o5A>bYl^%T>2(X~ECeL?ydfZ^#kJgHKGE>~UEq~!EU7`!UX!i$Tb zB{07iGvU|}9^QL)ye}y!SroMq`$kxu=6QH{B+|k836!H7QA%Bt#w&dkBUY18^}h zF}ZW+4!AZfEjbUpA2P>*fWSpf2$Z1_qknR+g6mTs&g2r6LT2n_Rzkt*oRZ z@;}oV*JB!6mDlX!b}!0ig+s2eOZIeseRX;@KLk{?^trXo8};Ep#I|JRZ@O zn&+^f*y@eII428)K4|w)lp*~T7J@?m6aIetR!ATPRDn;R7%@u&##3UytDx{6lCkf9 ziuG%qk`2je@C+(;?7(VkJ`40zk3j^@LlU&qA}A(8H3?yFlv0F$aD^`V&!4uxbMQIe z&8SY#Bz6-T$3JRS_I zpa1d&B+r}?FGt6XZvi{5Y7YMXaQft z5Z$`VfEm8s;Z!0rPGV0WxdSKCUve$puLpKKF&G6wDh6n;zK$}dad63*2Wj-H{-lw zok!(p%0=AZxaQ~IF423@y_l4g1keenE+B26dU)&{pFvfDehKn#Y;5eCH=MeLjlLXk zS`w;CCtusJC!h>ETn5p&6&7_L1pzBd_7lU}=@<(NSG}{Q@)( zz-mTjW`SgNSTjr?k7=YYU#k`1b7&9kr6@r%Z?meD`WG@S)ALwYRf)&4Y7F;-+Cj+TzzzL4rDiGO$0AKtV;Jyq1&iU4U%| zFpmBC$-#7^v+UC?6X2slQtGSkE&z^O@aTGCL0gxEMidrk*BJTv`-8|+Vo=82eP!>d zJWZih<@h?rhVg++)(;v=VCdm_7l6K-^I5OJ^d`VBLd>uy^z{Jc=LpKk?(S~r5Un67 zGW8BD>ZMi}OZ&pAs%?P(T+*_)9y_uhfpl0ANTC3N1-Pf7QJDSl@8WOA`KB|t0e)Vq zYTKKA`eWBiYP|W<0|NuRBBH`i#0+xg4af=Eb4^@`QD}aw95~r!Sc-$sqv7maH*ISI zeJJ_bJy^^g;6N`{WdE&hZ|9_>^lmuZ0niHorSJv`CNoZ`V)=gW16Y#uV|e(wnArG* zprV`_kbb%LBI(ef-3}*h-|b-l!1HXar0C*!IA9CB%)GoWyyFCuU%kS^!%KgD(-E+w zAP2VN1CG&JWoVO_nVFx?dE0=SQ04|o_F69CQO(&WN(GEq&BnHn1^@Re&4%{6>DlLN zRenI*fR8!)xEgXXV_U1>Bi2A-IV_IO1()h|WiD2zi2}AV-6s29APRDs8D6r`Z-VnWOogg%1Fz>vSVB zGc&=mw`z@e166(=8YHMw>+24&@4-|KGG4XwRa;-2;f>EhyaTb9Vw>xY9_#Cmb%o%A zOjZjFB&0&;xi;8akaE8)t9=L8|F>^?`xIo;umR@CY7ONH`w1>CKH7Cqzr>$YuxkeK zlFL8&E((tDoZ)}-A!OexA7IQ@7(z`YjyWbWGVf@y91(=&B$>e_1*=bm4ZYj?dX)d| z!6fmgTQjh6_f_z}5`p>_>sLrvpkt?_^A+02CNKpQW&7BJR|=5OW1u5$YO}&G4`oX` z(Eo+CGRed=--ln{-on?`9`@a8UI8IXc<`AzBdFDiVul_FHjjg~F^r!KXylRCN}$Nk zzO~X&R74hNu>#We08b?qZ zT?yiy?|sRqK^bWY9yBJ|E^`;JTW_Gs7^yd3_ znfq{x?jE~xM9CBBb+Oa>aF*(oLf!?Q!xn@e;6rDDvIN|j^%l!ZUmwUH4Q=hGC5Bir zxCq1FId$Kdo`-c?T;b&W!jW_~qXB-A{oEC11xWiCE##U(xfeW!?AgwTcHh5X(R+DJ zij;~&vVFzH0HJ~L8W*TgPoH+I7G?l%`}?w1bS|ODW|Q6Q*7`d1jz%5N&fkX-{Qw^! zCZs_K{wdXwl$c1x$hZ-lhn>EWj;v031sP&6V|#h|VEV^J1F(NnSJjVk{u_$%Wda`{ z93xCV0&&-&s=Wbr22L#{KiN)!=sp(qG&IcZHBzh8*sbYxUb~AxH2B)^UxAoKzh*!^ zQ79S(ru{1?8AwXd)zixF16m=Hu^<7D0T$Sfdld!2^^+!t%xC7sb(PS^9?Bo&BAi zri1Us7>_r#2)LWRWgIptRTu!Nk4y}QZHG@b0%b4nohlMwehKv@3G1-u?J+#{b1z@t zf7|~qw&9mHa=eoG2ukHXIk{%*0)T-`Uj^12=ts?bH|v*r<0SXK;@ru{Y9c`jA|`a6 zCd$MIGFj9Zf<~hY7$c)xag4ZBj{1Jf^x*LDzs0EQ-yuCXPQC?hNDKx_-sy(djt7ui z1!8TY%$@maCljmap_0@XmV?uYo*1u1+db+cgxByRBJ!UK78|IcP2T&zz})oi&sPnz zXUA6Z@?GUWfmm7lvpNdZ5qPP(D5Cl5eoTKcv81d^P;FR_Q9s0$19=6T+;<(P0C4Os z^yx?SUf% zO_g@><_MH|*t6Xk_hEjscYcsnu3o*`kSPHaBg~+9?WYA(kedi`2d)Nnmnmb4!i=lR zqemR|+&rXnaEh@;Zr%Z_Y#WG?5UCg75xW=^`vGUtFaAk`a77TgKmr zlkzSnc_36fjzE8F@2@&fCqTNZ2PXo6N(47$vStV`xrnG zM+BL-=!Q>BOn@S2prl9bBVJ$Sf&{zJPhhs&A0%)XAcwy5D-a@UM=3G3Db(j~8vquv2e2n+cP@_WuR_`P%wps4_mL$KXR zq!kUsaz$46Y8NFUMKju;o%>W6XzZ8#ia-6I(Ue09jHu8cv);P>E^0Pm=+h?xVq#7K z+CVGTz*%XyIZzVSsv+GL7(!p*pedpIn5fj8f{62_JWK^1g^xN zHdE$5G$TrrJ+Q)EY<8&#@G3AtKwDXz=+)Ny=Mpx&4E779gk}MHF7Pd2gl6!3aSz&0 z;37P!I+T4lL<{ex`$Oy@AC+;!Uctp>=gJmLD)=em^`WyM>u-1cKk$d3!bcrklI_ zquR*~(Z}hjsjOCtqa~DRT#18MWyhs@yig$>WX52EaY7*wWGQbBY)K7qmw7BHC(9de z0{=@U)a)=I$b9LNjRs$!lw9YZqmrVc6%UaKN8s!z!=8(Gn_%nb8iof-j$+IVfM!Pr z-Bs}sbl4m1%d56tUS2b9{rv0+w&{2AKK;9bRf@F~s0G6%N=izjgWjr7tq^nL0i)9Y zwU(Qk{s3>m^ge3$QS!q*nDs-4OE7VPIa2=ZP^Mm4GfnB9AbT$$vfqSq<#d?@X&~c1${J>~aak-y?OkSOdw|R##oS z(5O3}|5e<-dwXx)UIfnikrEQRz5nv&aWcf|rUbo&%#9mt9T&Ph)L=USjGv%h0Q(4> zFz8#5J;90q9XI5Uc9>~`JA)%5XLx&S3)(ROKE933%{%Jql!RfBg`g{k{sJ0p_5@-Q z61#dM;Eauo2y4DRL75k!44gQdnwwq4GodEY57F4P5SPwto)A|~n+q0?txZi$fejuY zE=VgtOGYZbUv?7~5`v!rCTb{1KB@&&Mt_<=)N5hC!i*91CuN#`14SCN8;lulw*fKAU>!ESa3|peF zgvJ|`@xvIxz(7*}^6B60xQGZCodM<=5)csc&}wT1ICxlCyaojq)Mf}`7U%&_w>z}g z#Zg0#kZqO!%F7=G@mtkcbQ314FAE7%t~?LsohMEz`9-b(9T8s00`OD-mB&^+0E@r_ zqS%0znKW>yp8}}~EJ`4*gS-sO4h^hxOI)Sg&jN9vArcOJ`yEAndt;gKLW15tdU+BH zrLH3`b9Dg*NPsj@&cEflh>YviEgJ)lvBE%dl)H6JfS>>1?_coq-@bhtc7mELV17;y zF>yZ_mV?}>Oh|cnzAU2wY`6U z{rdPn+w(CPmO(2>TSPg22@8B84FEC&7gkZ?5lEM6R}@#JqzkCvt;49~#w0XG2z zNwT^#& z9HLeS+vo9PJ4{?d65#%+?7!nU4U&1arL^1!Xx!jVoqoQS3n-1Cc#qqPz^E#5ldmKG zBJ5shX1HcFtU`Ems`rY?>r7R5ePRPOd{DmyydwwFYkv>U>LG3 zDr`w?E|!R~;|rvejo6w~&_$ht(zIYu>ksDH0w6^0LQ7ZE$~NMJaH%vGlPINjban>i z#M#NI$Dk_zh4HujNB=I)s}Yn|O9eegbgh2j#N)H6QBmS*4t#%Z}@`nS^QiqEiHTI!igI&Zt5%=eK+>d$_K6Affr(C zCVe{XxSc%h)Ee_PkA%@Zv@_shp9MSxr>cRO-@)l^xN^HWAC(8W2ZkfEwD4E(8=l7L z@rEhwGDf!P37mr2<))a}2ajrh3BzGv*t5vOV%Pq^QP8Fwsp;5euU+;T`$9L%rymwwrZb8~N_y#NnFRv!|S# z^7nbkVX*nb+~irwhlQ$hFnVp+sA#FdSTp>gpupzti^Vc~Ye_&8eCbGzJO~`QaHyJ1 zvNJM>gu4^c5Zl+pRpTZWecHkLq9~9u{_PvMGRciE=T~rq{u<0sK}#WO^;mcMIO6DH zl;Nt(%%*qmcKu$^^jexX33B;(s1L~S=)d97g%ZhAtn`#M7~^vh*F%}k?*Nej%0JI)(4P z4jLU8^9oWw^iiPGEeUy!X%j3z?@a2#|w)5yd5ElUjB>#n;=uroW=-i|s1({Nr%-Uw4U(wI5ZC@*WhQI4Q`gV{FZCfa zJ=Ch_0Xpn51w{s!P)2N_q-)u>(znBi68 zv*d(n1t^G6cEvwjq5ca4bQ@b+TDDS%CDWIs(qv<1*`PCa`d~NM1Hj zC@AE`_b&%C$IG21s4(X#3?Nt{xLp37|24j>Wl?hkUAjw;Ic~x#IT-SA)foP7ptbXn zJ16=0`a!iG?+EP9Aq?!fu5%EwVaSN6VdEm?HPeAU{1sxMwCMh2LL?${Gq~9fB_b*c zm@$R@A<+zLQm62+l<*)=Qvz@nOmMt3NPnbwfL0$jaH9{7j05O%DuD1_p=wmJ_Z2GhM2HneFkG%2vo@t)mr` ziR|>E(aeuy%$V5W%YUpWcVfshOO&Y1m8C*`jA z$H&2T-G+ynu^;T>@-^2>f960+{7p-`vDiV~yYY zQ`l{Bqpd^Pmai~&7aq8=pup;+#{3wiU<*nOOal%r4PpoJrjB;H8<&m2%q8g23wG3w zgU>rlbc@U@h}Mu!3ewHcT5g{HAYw~$KgX{UO8o`)Wdhu61}KeSt|==c(#|(`c!iwv z+rOj0K|xnU8U!}10XL7CzF5pxBLGvnQ^8D3So}VwD`@TJfFdBmh2vuS+=m`*#W6Xi_P+ynLfD!|Ao^ z1VRjTrP^avr?n>{OaYY#2KsmJWbR#EPd9R6v#|&Dx zdxF6+O-)WdZ~q?L!w-1|cuVT*Zwd;+w}%XsQd@E*1uEnPHl|;ttS5M~1V*E+jSWr@ zJ`$*5q@>nXR?S1Tm>b3Lgmj_r0x>UE$oO8xa3MGt(KM!MD_$6}3nX%QwY9vjVkD&CWI^D+Y#VOOaH8@@kwrep7CDE8bJL}tb0E?nuyJf%z}oOmWpbLJ&t{Vl*Gynw93ELh_7$twx67f zT}>!#h4G@--;jDd)FuLA($ZN%!ku?jUkqGkoofnRWkDn#-wh*k5qX&nF2KxF0NQC;;?{&<^(hv|dag*S5p`)aH z-{ufueaEuz7s%Y|ie3fzcQ)>GT)$qmnz`a44th$!g9o!9E{Q&1UVHNcm@>T!>ra3t zJUlRk1MXqxA9h) znoB8&5r}`6vPo$6PHL5btgmd{;=OwH#&!*?C2;Ghbv&|VFCdg<)--|%xD<*3eKt0N zb^2Rum0HGzxC4&fL+d?-JorW!_g{YTAqXUphu7Bsu@3XnjohdO;|HMc&93xecA=QzC~jSzrh+vk=C`^*-~~^)X_09k7t@jEL@8?K?!>i z+?Y~%kt=}UBrh*-U!T4>1ql7| z&r$pO9o%1btLQzsd-pDdf5=l1=a|F?C)%}jLySG)_&Dp9d(Rsr@QD*C>qYB5P|9H* z2RO>epU+cEVE{kK{fB9GY;?#fXjdR@!gLLI%}CSPE1^ZPYCz?IjcjqzqCcE1`6ZH) zifUyr!{!B_z}p3ANfs7v%trabbAxC(@upsh1P`ccm;}=)@o32|uc(00Lm*y30b)(# z+-_dU#=$2QcZkVfwVlrpNc;o?15kruGDxw@`2<>rEvEt+v|w_`JvKb-kX~Wg~D9S_jrKERtALT#Sbe3=Dv7T#s_y zZ11I|t4VTc?dzTAg2H24Y~n^R`TL3n`0GwX7vsY+HG=PBoSmO^rqaq_A zOIFDI+7iL1a0s&M{{bQd#G-WLFY4W6Z!`#CVbSu370R3#6kQAu>!?P_L72bbl1#nExA*QJh+!OCxv6a zt^5h?E$GC7wg=$;xpI&*e0*^53iL3HAGET@$Hu%ZisUZsY>LSy9Gr?_oBQ}Ngu6e8 zfg+)SChWq84qr_xi*Z`0LeB@3pb9AjEySXDwYzxBsSJnuIS&u$2FF<3TwP82w&5|{ zxbYB`F#6T^=q(&8U1Q`%AhKV8e{2kg@@`cxwTpAt<{e~j8TA?c^Movk5P*aPo8nEt z=>7PWE!IEmzDEDCa=*~r_Py%i-ar_!UJwP0HzlrC@2vjjnrnwpwtN!1oA@22nn+_55A__Qk;+6u{Eddl7IWRx=+3@mjSn2WOAI~udm*v^kaTIH^SrI?THLLytnsQYt=NI!eUOQ;yN>PA z_4TdL6Upg|CTCYcq5*u!5fjlhBX}_A5pV#BRH^GmS8o%Fz6ERkv8Lbe`TBcmxZ%Ew zY1x3i-Os5008DWrM-6WVNW4e#45kUl`nY<|7_Jl3e(vpI8sK%g<|(CX zD19Ab8!$Tot*f<|!vcc@KRHLQtuex2{X;<+7o(b5bi@0%Zv@SsY0=`#nKV)rN8NkT zPGAABhy4x)+yo;{<`S3tv12>}nKjBV1JnkJ-1KOz zNCZwOpP%PAxmlk?AEw2m4nH`lbOnbcc0Xc$Z~{W$LMB*MRnIDi?M)qX%EtNHKZbgD z--tKj3mA*%{5o~_$ZwZaWnd5ZaM*Odfw1&zZ`>PT@PX6`80lgu@& zCe>*C*7qbELXHE8jRZ4u^CYtZ7FJdSj4A&~_CnjYZ&|@cv@mQhkn?JTCcdw3<>cgM zu*iy1Mco0H>sycF!r5F^t*vspLXs9a=9u0rt*kh&K-B=I$y~(Jk)pjt*bn3nLb0Hx zFJ%w>5Pdp~r{yMl9SZ0yPH*c;JY%Q8W$PKIn*S-Hf1n*Bu@r2{;mdncqiMFNE{Ma7 zf?g;oIXP6pyj))^6myhzD+(ATE4NNp-|Rb?=GCQ$cB0N!ZR=s$v#$k9frP+ zU;|IGSnSOeb*v+T)@CqO;7T7sX_gt_GSt;|ZnirQGGp(o0|LWTRc~Zw-hbnPgK2_y z`<&nQgv{DPX`u)sV`J0Akx3>_ljNflaOkN}j;ni{G$w~MX11QMt>vNnf0tbUM#l#}Q_9!c=@Ci@+Qv_8Hvx#XY6-i@$TJUb}6}G9)GRv0> zg7o9DD1py##pv~()X3d~WI83KN-FjAi#ti7`g9H!L^QLA7BI>+qdi{AW?SRUzpT6upT9Jl0( ziVEu2tLe1zeX99dL31-RpgPp+6>7W3$H(8iVdvrTAQ8iF<#H%BC-+4_k$7}0my+94UsVt?Si->Am*WVgF)l=55~JIhCX2qpTbpEFf?EaB_2!5 zb}O1c2YFPNQTrHvk=1Li6&LEBKVPXWJSC4~;GkNvsEzCIh`bwe?D3m!4zc7;hECyc*{*Rk|1i`FO6w#mwF z)2BWvh1{8TM{#zM>-oONo|`3^`>Q(`wzwzz+BD|7H^C*4uN8vSpUbF& zZpOTt%dqQf_rWRSTQ>sq&rT<_qj%4yuMEN#*n#}C8|!OpT=EWs`2T?+&-@FKgSD&k zUO^(8E|3D>bpwY!GA}pnw&U~wPJ#ThNGa+{(EaN7&%*s09 z>iYiPo`ts4D*R_~1*R{sXfg@^UKZrv{n9Ecol1a-MN*QjXb{# zqsjGYh2V-G+q6W5r}_#}C-7#e=rU3J=CJ>3$6~oJF@9D&2Jb{^Y>DM8`Fl^r51bkJ zAjV5|VR+|;28~Ofqgy8V0LnNWt#YXzydr>@N1sVu66qGdwKn?*v!XdpU-Wh#<}XZ| zZQrJz+}vMkUoj99vy-96T69O$1t<$(Ni`}OtM8NK)9^HgyXhj5EUB^z3XIDS=(%(J zc?t;#CRI{OG4~{o#Lx)@{W$qr}R1?r>CtDn`@fu3g|~8otyQ-@6xaM}Kbv7ZL@3 zaStIQ4}K>D1I7_fzjuY?Tez)JCT~u^UUC*mBxpN2^6Ts;mfJI-^*di(0rZ&M2uLJ#eM@I4D4-6jo&Z+zz5a6spMMLbO zs&$~vs$8$e7=V<)I}jCM!D)L_T4gpTgIPsclZBmpw>k$5b~JhmyzRSd9F{VlQcme5kkp! z&Slt67*l*VXGc`fW5EgzPWmQ2Eg~?M;Nqk8wA!ic zIMwR4b!nexn=8i$p4Z7&t+q;(_-JJ{Iw@?E6RhJ6pD`;~6gOhq(JRIzB9NFHQMEV3 z?102;<@ijOe;2P7^bCEzG|_+JKUus=Q()t7t_cNUroJXdnyMk$6k@~!CORG4QXAXH z{|S7J_7YDvjMEoQretxWx0^oy)1UW>%yt?R+t9m`hVD1|w`%EnHaf*R^j(eL<*zBQ z)YYB1WhVTZm-4Rlpc7n_zY_2&HiH!Ujs_#elbGZ(GP;e{aTN@EK9F`RvMcT*Ofmm+ z*GEZkx4rF+>t{-Y$d~jE@>+OUA(|AkjwRc8g zv?A<=1wG+Uv|UdwJm-l_H<3s>AtX?-M|^|!?pkn$g-h5mWV~-Va@b7ozAicJ{{Sqe B)5ib+ literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E6996B4A5DF706332.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E6996B4A5DF706332.png new file mode 100644 index 0000000000000000000000000000000000000000..40a36acf88a89c8a1e939454b442c3412793bf91 GIT binary patch literal 31975 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 Du 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 S!CwzTd-PCM_LGch$o~WQ_KG?H literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E9D87E7B297A94C9F.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018E9D87E7B297A94C9F.png new file mode 100644 index 0000000000000000000000000000000000000000..d18d3a42cc545b12f8f8a55979088ee72425b98c GIT binary patch literal 11486 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 X`WFa@Gu(U&Tg8vd_vT^LJs7#egGcl? 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 bIm0K6-~WALwO2fJ1ODl19X(V+wh#OtshAE0 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018ECB3181C74F9EDC35.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018ECB3181C74F9EDC35.png new file mode 100644 index 0000000000000000000000000000000000000000..d30d4927b56c72a683c3f369593abb9f865a3f09 GIT binary patch literal 21594 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

)Ml| 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 jv#6*@iww>qBMv|Nl3%l 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 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EEE6FC1E017012EDA.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018EEE6FC1E017012EDA.png new file mode 100644 index 0000000000000000000000000000000000000000..66ab6e24eb43a49b67ccb89106bceec9cda09d11 GIT binary patch literal 24317 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 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002C90000027876C8370C9358FB94.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002C90000027876C8370C9358FB94.png new file mode 100644 index 0000000000000000000000000000000000000000..50e9f91d321ae1ca2085775d8483f956a332d3bb GIT binary patch literal 172945 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

7BBWZmHJu!7Yxi|9{M_zvTjzGTCW}@l9~Xr+ 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鷐h;rW1i% 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002C900000278AEBB2DF17488D353.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002C900000278AEBB2DF17488D353.png new file mode 100644 index 0000000000000000000000000000000000000000..4618a5411f08710354f526fdf7c6b1218260d0ad GIT binary patch literal 38347 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

5+8qw-@@pnpBeID=7n|>1 z)GCh;|9>MkV4CDRw8y0m^8*6fut5QZh$%ltv@ZcE@SJkh^cv|m(}c{Oy@ogemn1<|8}m&1oZumQw1x@oW!eZCZd8A}&+ zt_!uhi^5#&4#ih?zPkaFGV9K{Z0b90BoX*l#jrT%yu9w9I|I?3`vYNc zcu1ZL4yk-qoOE80avc5tZdYXT#ADM#t%_YRCGW=GIE7`>#_UoAF%n}PwDP@ z)pd1sy{_teeRWm!U$tV0$QM}N*%$1k0;rVi$`ctU=R+hO54!jhMkuw$uC^$I5YqxZ z&#IZp6?(P90gk!<5anLC5907$8O&VV7C?+JTeNbWfbR%fRj_hKJ{x?ux;4u4pMdlnAgvIY@E{BEn580q zcWis}VckD`%w>5yj+h5dN%j`sXZ}bk$%leu4Owyod~=8Ml>V$lx0y_s;DZ z^7*he9$`?a2Ze+?4eNE3ZbXG&ukbUsszEmA+?4SO{0poQF7{sZP@P(+i`d@$Y9Vir zj29Mpm9gIp`&{^-3vrxtz$^WvBj*fZjp0lNIam4J53Eejaq-(UQmKjPKr0JPkEa$I z3%(VUCOeIFKm9gPm(=B7$04i4EvrtXw!isos(JN24kjhzT;ZI0_pZ#@ffFCo=4|O| z8+1t>EN5$pf4-{9JakdMAW<+Z5|Kp9b2FDrv)gB8HjTc0lbhn{ZBn@uJb{HhBkU9T zeA}RZe)p2L0#<4;Kx#KdtWmAn*b|i%O-g703v$DXVTV zU!K`1#U4M|IuW}h-Dta7xN3jEOU4ifuJPEOun8G0vdhBb5Al)?Ym(k2$27S0#U z=l`aXFoE^n?TpZvdzAg{#RND)tyi0>!?f?P#rRcUW1&xUi7Zq3xYOyktHtIa$=A1a zNLl4(8$4~uWHPg?E~@HI9ApM~H0o>bIrKk{@c9X7Sx=KCr`p=;&&PN2IyyQ+Zik=0 ze3=`Lur9lUysgk$!axKJWO_V^RY?y$qC6K~W5=>)sRHxNpk0s5a3RJpd&SXR@1}&5 zm`^4t3l)Qw15*3Cc5!5vFHmGv)z%!Qbr3Y(VN>CL0@ zySG>fE$FgQAerC19)aMh&JFb{^_tZ5_X+l1Tsn1fbn<4<)OBr;inp-3_3y7IRTvOg z_`)&#*iJk5@@6tDY{y`9mi>+9W)iyGzIgZ%&BKy~!2d^ZsP=si@ttvrMbVrSE)7|sFdGY8hfggnz(50g9IN6E zzKeL4B!B+>;?|4z({Odt1KBAd8kS=+L;Re^@QI>~QhZ^8CQ@%Uh8t~*cWB3LtHWQQbq1~kvRF% znFwB9igH_velK*xlAzl&+qA_bMH==;?701`*Kkq?Wk0UR{Ag%%7HLJ<8VH^XEq(O| zfUx>GFbi6fUYG#Pxu>YO?EF41@#cHeb%6gS;9xVIyb+UaMv{5>##1nxaV!V z?xs35Kn;cpyHx6V01=$fzZlt|b8Oxyv7x}l-7{zAqT{931KbR#k$`Ezixb$VmcjvX z5TyD2aHt!$j|vP_C_NChMYvkfl*tKt_8r zx~-yk{~^x+(tX(b>tE*1rbM_Ji&E^HV; z0G;L~|U{!u`&%hX3Sy2pP96#gG5%$aO&_0y0vHmeih=gkc8 JC}(g|{|)IJmy7@a literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002C900000278EEE925F5104E07BE.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002C900000278EEE925F5104E07BE.png new file mode 100644 index 0000000000000000000000000000000000000000..a2263757b5ba9b77885d412290d61c6a119cf988 GIT binary patch literal 285496 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 ?YO<%=EJx)cX4*c(!a}?D5x$Fo!pb#fdoz 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

u-UaZkWi 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 *EJ$wIzX~ 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 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/1000000000000400000004007DA1871E5E883934.png b/modules/many_bone_ik/design_docs/Pictures/1000000000000400000004007DA1871E5E883934.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6ceecb5be6e4c0df255e46df945584338e20ab GIT binary patch literal 105852 zcmce;WmHsO*av!M=tepuq>&Vm?nY8Vx}>BVh8~qrLQ3gwQMwyJT0la&LsD|+n0xrY z?|Z-9uXomB%~`O{v!A`6`aQAvsHLHVhfReI005qfvb;6`pn{L6045atItpo>1OSMu zy_}quy_FRJu*G}Fi>ac>kc3GQGv~d;;gToOE-|1WM63FYIai_(z4C3qMet+gEN2U~ zyb~HV&JWqzW4%j)T2d!cRGCNeoVRH0R9JhN-w7XO+MEYxq=9^4?mC+sbYKZmlXcG241@MUQRXufSJm{_Co#F zfZC`k8bH*K(wJ8oRR;j{fQr0~E^KZ;6C?2PX5INRyV$%hvtg3;P}{p7y%x&bMd7ye zsF+MoB!qI&h&)teC5dDc(mh=LmEU?PGZXq_5z>3<;1xAqlr}s2*xC8ow%2$T92Rg=FsdnU3aau_fY|G4iF$QAg3?@ISF|IZ`vpg;e8ApiRf|KD#w`u`s2 z|L=kD{~j>^@8LlS|NH!ZlllMti}e4#3!cLNe*XVlpwis^abGoOv*o;CIr_u;oo{4& zn1MESvZz!wmM<@Q){ox^l(J!$WBvEXZGZ#FA$Z)EyDfF7%|_xT^B>EKcm@z4$Rf>F zFkQWPB7q6*z0995UC3SJ!H={54ipXm`PlRIDgaZWiu#0?X#-~zDiFdd0jK#N0)&7C ziR`10Dg!1++|VX&cMct6yt0**6&p!c&;LsRL*XS8IS~*h`!=|M`lEc8z;JW3s0rPF z9AE;xr7JP_Nj5JLhr*wh54Y$%n;tv7`|n*vfo&+N|LZiC2H-VBdilBf=~Z9>>h_42 zXy&kO6Mdu9-(SY}=E*KyU;dLLMYshTupjC?-(1d0g!Snps)u1QzqEAuFxf^Vd5Af2 zK#Og|bLSM7T8MP2LMWZ;c699YEdE@N*szNZiH7lPwm$&wR z^b-}JI6tbVd*`Cnc-Yv_9o%8Ar+57aDC~?CPn!y?X8JggDDWTAo5ip0D%35!CWHV* zfxXN!GzYO7r%FdKU%#Wljq z=ekeBxP1U=03KXr%67eF4|t{HvMpkwzke$YN0SyzXU6;8LjGHo$ELxFTanSj8LtQp z1$;X@E|CxSy==%hAU;Ag4LW4tcSDmkNPtT^2?q-vhqLIK#)1WxT zon~Qubt{`(NWHjTgVH#*ED1cybJmSkZSIZf6K(@ggirthp;W@(WB+||6-aV1A+ z-2lWt%?aR3RpUX7k<4BgLtLG>a!PGcyrwqg>wsT~g(V zcQmlX4z`2h?QG7XZ8PE(QHycF1Ve3#KYjQ-^#vAsq0>}v54d1uNPfst*?)?#D&=Tj(|ppkMD-=v=`3fPZvzR{&|GEZG@n{7Ce%{}dmeEUN!I z$i$56#;ITAnX!?PmuWGbpE-w20-PM;Utxg)K!8$`PxoyM7DNEaUVwLJmoqLEeuN4N zrmtCwB}H3H>2T`0t4lA1#lv1OJgiC9bP&r^Q;NZnc_AKVlG&q&7l}NKTRqMPZn5Ob?nN%N*DqRfZr02$ScUTB(r%&^Er)^Le87^_1hOd?12_<(INebJzlxC zp<%Ci#I(#0hXWbOZ_@YzJYzUFq?0;88RdwK-qnS{6)*1)VKrmZGq@IxCz7Yc{>Su! z$vo&eHP*T(8c0VWSwQOvA~-}ofkiy^t;LDx zWlvX5b;y|2OV$15C)RG$Yfnx+82uT2Gta8ZF zl-j_XtUzt2)#LaOsrZ1SRn#rj%YN^@{_tx#nHYRQ-1h=NIW4%gJAA)FYrfQ>&Bmi? z4q!zD=o+?kSJe^)l5wO#ZOg|YG*)wgc=gzvRh4+1aygedn+DveV2Yo^d;&ea)(S8e z<$MIwhh;&-1ZED+qD{0#Gr7s4B*}g3f;+P9=G=ZC+M}2}d*CY>IGR!%@JjfS@r?24 ztLBu`l1bxn?{Jaf-0tbV=d4{eN0y(_dSlTCw_?b4^QWp^kmNbfMl9R)sBI0&g6D6| zPb!}A&A9pzFWitf2AQat)bw zG2Fe{5(<-jl7${OU`-Fw1ooBKa)fXhQ`Hjm^R~0!1uva;H#AYDM9mKF!QB@@wJq_v zznvcWR$dei_O0YQW3ka#s4rsvz+%4a!P_KrL8d#~Lmz8#C#x1}BQh6W z@lr62D!gqkvfn6$si#w$!lD4PEF93AX?crZwB9eBPG|a^&n@59TMZjojWgNpel8!D z%4^Y%bV+OqT=uJ?oY-`p4~iHe$nsYF+<pg>)RL%Nuc>{ zgGMr=%AA9Y+j9TPAGc%i)zS&M1kQO6?T{bkW!R7Y%6m3 z4hIL6Q}#up88qY4%_oN*KW zZcmju7AUFNoBWGgA8lpsA^2gyc0x{MHlkmH2!v>0(<8|yK7c_=0Sea#U^3|q_r$GA znE0Ua!Aq@fg_kdD0=?FE>=5ed*!m`9BI~usMX410EPR%->OprDe92%CY09V$4q8pM z^E@SZIU>wey`G<63L!5?c{tHb0f3tmH1i;op5ujE*6dN8MsppV^^2PU&v@Py&~F^^ zbh)omn_vObf8I&BNpl(|aFF%1Hr=~5P6D4X*s8}i3dj4hf8)trS7`p}eJxg61Pfs1 zsq{cTpAfLr1~Jb*fB%gZVzjJ8E>}yyX!qrhe0vyLC-wD^DO`LOE|~M6@XvelPA?Nv zm1oi<)ia6&cOTVo=Oxy{fCDVu#d1skN7@>T-6d9Dp4a*`T$wLwLGZ0>g{h=T@zvn-1#H#Kg&X#W-Zarb+wLzTh)699$=Pv@S9ZOX`f z+N5u;ZhCa@{gp%jTn65ThK5L03r7X6Sa?YF*hpF(1R_uTo~Os!P4{x+j!A(&Qd&Te zP3mT#5sSEBsvc^r=qfvS5i&V7Rg}@lyLOT6Q0DJ?3_>qdiJ!bDk*}SWT?!|BnBM*S z0+K%`y9#WtsnMDCJ~8}Z5jT&V$OK`d7>7P^`onB$c@G*I`5fE>oZbp{B-8%PyYOGa z(tWn|xc|`)H8!Vg4{Z=_mFMifMDI*|1)FNNB#91ug?W=vlfM+LP>Tjiq0;V&=I3Es zov*sNTJ#tsALV6p2^T@sc*A~Th-dz4@3)Zo&xpN~D*(`C)#}U%ZLqIybtv6qTyx3XuMc)HjwV zqrr>pbG1sufBKpj0H2ea|I^?{_EEDuiCag zsTL`VkPwLf9`nu=B6-M?0th|0XPuHzfv}q&7QAFpW4;H6Di=q5-t>ekOJ1AMPDi&s zZx=yP-G_KqHx^RW$e5`)6^BuLF%os;qas+*rVoUQ;YWXWHl~(nExA(T8*Up411ZB7 zf2bmfH=>2_Mva4JB=ob=BPL z8(q0I2MP8@7fd}TB5}>zX$fa?`Q3l0!IG*-+4xT}Gz&yPqf|H&OSg z=lCu8a%JD}E(0}|diX0iUTtVfIsSXrSJAxHZY}UG_A$5#)9}Y}_G!&HSLBf=Z3rnG zpqqCaXl5nEM7%j!*TbyTSVsPyzCok_X??5@> zKBB$vQD;TF8`G%cu(Xxy|dXk3xVn0CxzTmJ@lt)}dzBGU$J) zvy(5_+ltcv!ebOw19`y;$UfOjGFL}l3!RL1RJ#0|+qkqvLTcoagNv>*6wZ!?i5@bp zaC|?uZeHO#%~dfhxSQ~P;nh_G6VRGhx5NSL4+$5BZPNjmaEFKn1^;h(N#9AZwOMKy z2U$G_CVs$h2!)`#i|ii`QiY%0F1l(OHjUdmstO4F?2Cy~Pa*syPk8r`kecc%jD-lM zZ!RLAKY#vKy7Pu>QKe%I+hXM4!bkh@9dWCCXUw6SrOY4bBa=Tz<+Kw5P0k%+s)f2_ zPH7r`*5;Bp-#avNob(n;zf1G7Q7V2Ke#Q+#dH7=JEy+bPqZBEAME=+tzkJOlq};*B zHoZd;^FY>?r|5zo z@RtH~NkHepx-fpv#fHucW4*h3WhU*cdsf`;mE{wG^d*JPP0-h_bCf@Y1Av~ho+0qz zK&@l_w~{OaqrEH1`3ZN+&T~Eb78Q((22A=FK?*^^gj0GB!XXJtk#nr#>Of(S5_` zp824G5N;$hL^`mK>2!B~#}l2m(m5uy2si7z0D6G6!_5x@;$jELO5OR^4jZwv z`BxmRtKxzHCu|{2iX6-oj_~(C=x5(({E9<|XQBZBFY3k579@Wv?p2O5lPpzE>rJs+ zA4+=B02CgqfPr8KV3L3klnPcV0ip&AM7Kg)D{SyddtQIVH<5s?qa|Zr8eQP%M_SP_ zr=lo7&q&uKD4-eUeqZYvLlEk$VL%}V_p?@qlCjl0RJMm?0D>06vLKMOU5>g^tDhb5 zU$B5`gjND8q}mF(VhXXOfGY)W1B9mbeRXN6^#?z4LM-556#fkl0CHp-T{T5Br@S)* zwZNnRBArzt?q)~+*V&r6W5OyZ=T@1AGzAT_A-DXf)54}Uwu+zv7!hsvOk8k`d(-2SBh};d@R0C3rH$%o>`W8s03-X z!HoTd?+$HVfe6-LhQ#IR&G*I__~oUHq+Ye!n3SC(j0!AEDKI~f#2(l>1<_EutMFr% zi1C&-g2UIFT+#^R6S2FnvsR@KZ4}ce7C3|@9=ay)9KwlNt>p&1JhJIV_LEug9d zhH@8F$+juOu-~S$;;n6V@e#RK$|((UZDu{v(cV%A&3 zQWU$PNF-yzjma*_n?jtP(4BJOSSIFSj1hAr30^2iVTINesXy$wyUmKbNa? zzLnY+PWjG?1023Y$<9DSNw$vvI@}U>tguK5l6)JKSiT2>ws!#)H+I=d9>w(62b<~F z^Rt>APn+Ekqp1}^g?93MHh+FrEn-T8wN7|4+A5cHDNd@gLN0|V!c55~zEiNa3v0KP zMU@JUQMchCa;+hihXAv6>5#Z$A+={NHB zL@B*o&<6#n$ibqqv}=D8SY(lBkU996hg4=F!jHJY-SZp4Z6dwqx~QV)Y;s!|ZC7hd z*S#=%8p$-!8}k>;CaWC2T+Jnz2s#Q0l(KS02i`fx7+?V182f!C+QKxl?jksVFKWt~ z;#J{GAZ;oFun5yy<>b`_;{Fw3jMJTfXLAhtCj^!VPUQW7`ETbXB){~Ha5t|qiW?oy zxz-)cfaJG;g_vDZ)I+r8rw7ffS6Td1;unGSMXy9oe{GxkYFr&U_AdFFpSXsouH2z@ zV}PYfo>sIE4G5Sq{6(G?S@oonz^E~NkX##M>9=Md#(SA@z&fodpTGAlxH3g2NBqO# zhRMoI2)H1ZvjH&S6o*C+&7f~X2IYX6D0f6hvcov%(ADx`!>@Gm)&o^Muq5G-CZAyO z!}13mvf$s8ly_E0aG;aK8aD{s!ruZbMr;Qs1FCt}Wxw7{*h!DZzMc>%IV-3E4FyNT zC&MMNP!JadbWDJBwxwv#-G5kLg#3hN?9Jy4<&XgH{#2-sB3MyyhRX zT>;zpH=dCfOuo8z;}Z>>&w^Wopdl zKvewx0UFgj|3o$;o^;5g|Kv;nyCm;HY_JDPnukn;NWgl~DKDp;0$F@w(OjF?QJXw>_IW>8ua$1Gu5IY*XrRbt>5P9x1+GMR}E9N?wtw*#x*{jO&BT@m7$X&vyl@qJARM zZu~YFsc+?X_t_2;m*JUBY5*kOy;#Y8_!T{&^nZzYmed-T1c=@*kc23;F@ItXr_(IA9%Ex`}_>6m&&sh_N@5j&#$SCT1H?1jSKOZq#r&0fVRgiAjOzE_dBOX>riK1~-RJ)z@_^mM%8+t2=Jwwi1y8-%ad;SMn}ZSQSUagd`o4 z=ni=(vT`sRU+h#tD<|w^59W7IWZzDsy@4~V=nfj)zOFa$G63S6uB4q=q8#ox9LpPKx{N4Ji=H#hiRVVHP$ z{LOdi88>pjNQqAMGa-yJH3kSbW`0mJ4D|s4V^WKV zo13(j`*-^>(3NwUyUg3H8|~ukx}vJ9f9IdL<2$L~O3-{tHjtli6BX{{{O#;kl%|xD zAz&gTtOeR>y8pOuOdv*}voj>G6|Y37uP9-QES7`c_Ojl&Av-{Z$2HJ7ZRDRXlb9$M zk8yoafO}8mZGlSr@`Ctk*Xg=Wu>;HwG)an2M?_CkyOvIM`g6`^*OvX1$(n!GK>JVd zd9f`9tz(ig)M|$M$IY?84xu#s!X*K{q%sO*3jPw;6>r$KW`m?(X>xKBcY)>8bones z{8rv}M^_S&*;Mu(&F$G?rd>9v*uf0%GQZ_J z9ulUllI`ZQ(rtGPMW6&yq9}~k)f9I^*;#Jm#l|;XgD@WJhH_xUQ*vSfg6$~sNAvaM z{qz{O39N+5Rv;b)3mneU15*>u0w`zz{At7j1Pe%jki;jZf9QFQqK~LXS^LVjlr!)m zFGR!0ee3s{c@%bSKQ@;}!O!|$ z_toC;a{9>D?O&<)0SEjY_c8wnBtK^fjQMWo{&-J-Kl$@Zp(>uJ#Tt`&?2g3)P7A{G zmH$g*maRHVQkj6xi(3r30U4#m(thXnt~tMUtu2|aC4vqGKec~Qm24TOrw{-YObroZNXIge`W#7LUv8u47NWo z`t0t794kEM(En?0?yzvX=i`x2a!@>e9*Wg&p!-SjOL*1OkD)~@XLCpw3LOk)@b%8% z>ZWK`pcOZA9%)B!HRzK#&x2?{E8&+Znu@<8qHHf8O)U-Yw#@n?8=k`1Zb@O?axu)Q z2r6%PT%csOMsdw7=VFmo@NYy1+dNc0>w|#Y6}C?Z%ozlOzhhpH`K=8gG+iBx>*l5e z_I5|7kau(+M@G7~Drl$kEu}JVOqD{rEO(l=hC!okdWy_EtRul5`J?~mqJNu?j|bNG zPe;(@>Fw6nUmO*G1)VuLgE)M*pZxg8#T?P-r~0LQ}|j!@s%N4Up39=)^`xWA9q;rbDt<2)aX{?U5$7*8eU4@Pxp9cHsDUQzQoai zE&6z6EdfpZcM&0a38ZVJfQKR|ACatvyU#H#@kU0&>A_j8NJ!+_gjYL7qdI#U)Pr3=;vuUNHU25_Teg#c_9@s1fv&cPHcC}=_t}9E@T=}m_^C1Vv>8ybEMt|=y-pMlK9y}oz@;JNmFUbDy^4+@*rf+VLL3Ab}gobJytCSD`%N ztdQgbMq+)Ek=_Jg`}${NU%fGkzv#QAz@-a3BYU@z#(!BFKuf=Oz(UowzuQNMh4^ z*1gvxXt-!9iA1R9a?hL}d8xEz84F$)4Qfnvo${g>?ZzVjR{-Eb+6?{=Z$6+_`CNl$3=Q-;atZhRd!pZ3+OzFvXP zz9rWDa0I+X!9PN7M68<|CpbDR45TGi;fKkl6~*_kPPkGihT(x02t-o}M`aIKd$mm( zr-8atjf|jEZkPK^^v@_8>-#-zf7_w_#V2|XNyMF$rp-Z~BbYFn)_+C+9APXwTUMvlq_ zVr|ZpL*eCgi`&`wW^HqqU3GgTb(aUe(`F_w5-(}}1k|_0))5rcZhBt^soBAXY)eRy zHhcM9-n{ko*h6qG#W;}^ze|1$={Xj^b^Lu|9BYZNKcZ89I3=p$~ouOAqEd_^gv>wjKf~ zioWSGh;hS%3*l8o06G2Hj)1>~8P7?w^2qR0v}1_0+Yv@UPj2%%%r-# zUulii4s{~Gi-*e~IUllhF)EOMJwy;tu(MxE1Z3Q^;z?^fd5o`vFkdyG@OZrOyfNar zP+^HY;P#Ivp!wt#Sy@?+)0E_Tt-;ksg~wDGf5_4Lxy?`%9n#B=A>QvLtM}+hqNfs?3uQTcp&tE;|*fR3%An1_=60&t|WqUGCPB|E>3Z zOBW&^-w6)5Ihuit1BlFfVD>mrlHlP4|9~y6-(b=DokLnLC|ZP6K#Uqo_bi7Qq@)sn z*O)Hh&D%_IhVYg=hUIi*D}9tg)~#m+h;p~m-}fM0I1m4!fTm6n4~0hnZrq{sC0}~B zyZ(Kd>cfWnhiefeohH=!m{yf*h@8*3DMk1#qkIJYU?xmSqMuo26I=jsEto#2_TZ!pNd*S%}? zlWBDapg=SX78f}U{h*YeJcM#RP_K|J*F5QWGH#<__==k9wxYdANJzDhPO09QL4puh zIehiEbBIM>#M9)O4v)L~vUzMAe4LT2ooVlu{E3sBpm=5bKGp%k>c1Pfikl45xht*5 z;V;=N-h<;pUVhmo+{rHrl>w5d9t&QI7{vi{-I;+1V#SQMJf(P`#BEW!QK8f1s+X$s zTOdxDwTI?L(;xv$_F12?m}^_vdh`TC6j{$vFW5`weWAwd8nV%TFTuxVtua6{p`X1& zAsT#YJHM!6NQAA_F4o_phlnXal@KIK+8GkN59=|!c5u>?Iv;Ch*AeJ@be!@S_qtiN z{RMg^YG=uJRM<7;U2aHW0z0P*s0GOvtAC}ePX}V}RyqnMa)a4s_?`!{w zsUjf22H5ODNn<%ir6!2H@3>p6zlxCOZt?n+()=QlSpKPvWvv9L1l?5C{!1jhBk%TG zp}+Oee-{He0S(T@%BF@b^@OoQ_0ClQY_raU+b%-RW09gRP+F7#LwGx6sa6`0~mdmW!ep@40;?%=bIBG6WM5phQ;ijjJ zjgZY9yn&qnHz&44r1z#Hetw=#{tfMHO4I)W4%8F2n$L00lxQf+H*Ph>Q?C~3L_zyM zCVT$~RdnuEJ{Al0U{jo=9oq@hiew^X&+D(QX{BtSN$b@)vf4R4wBWg7C|t@n8w zZs-nHJ01V35xonupQsI4`f}NE*kJ2*Lrhn3)2Zl~)I0M?US?g*G- z3Wdmzd^?dE{uqLPvB)z0sclPe-*wK!psqQ`?#mpN%`L1T06^{RU$qme%XB;0eY!KX z76Yt{?6##>xZ?p~Ye9s5Ko!4}C*ui{zIVGLc6E|?iKzY8#J z$iCJ5TQ}{|`sEE+(}+q>>$v&nZssSgWcTvrq?@oBK0J$vz;}aHFz?Ba(}mOP<35GU zJVizjV^7DtJgUG2w1%~QWe!+te{1IF3=g++RFoXPRKo??ue3dmnr&F(Q>!sTg-_$Yedx(bym}dxWVMmeYDk5? zuwM1|jNyoVb2ox|B!e`W$?ufKb8l+lvr0S8Xe^JoWFQDe(_qO8f;c0qII`Kdu*@Qr zNQR($Pb;40%A!F2&1##g@G2P(0L*7eFfX7CeY|T(5tX$r90&1Ct9cD>$5RB@>?$$B z?cUzsX95TEU^AEc_iki>NvERAkTXMrqt6$|4`K5=BaUw+Hj?xA&J(6R%ba_rlQ!-V zTNp+w4RE2!%@yx^%R&R(kK(KfIgi^GN=}i={$e+QODcT0AJ% zwQluM2FiCoqn~AZSJmzDDbZ23t-QOwI^AQ@+%+0to{bw7Be_hV$f+n|Sx({#JKIzD zMR%K~)c@YEnOTbV9{U11XwBDT@(C624V|IMZ(aV__XYO&Di~~Ayfx-ZQe{cJ3e3vD zS3r)vsXaL{=Xu8pv6vTBK$7C)b6f{F-iY6Uv)*t;h5h^qA1tP)o!Q-9V z+zYx?k>t>d_;f)Rwc#|<+J6HNu+joTFk> z((Pr8%>X!jK`dfD1tyEs+mE;a|2QEULoy<=2Z)00o7Hd4XT70dfAortEb5;&0o_<; zTi$8h{9GZVbE(@8p{~E6lXUe${7plfZpNj}GWWlwuVpVki3tX-bsf>UsxJg|xbL#J z5Al>qA%5rNDaYVpe(UT981%jyyN+bjl_Zc4sgNu=k1qc9M_p*W>Co+QJTvKD4N0Hg`xzSIQftY{JFR~4R5$SJ-2 zCBrSF+wFnEvHrAz6*@{F$0)Zy-6=pclZEl{^eS)c4HMC9A*I>lA2nMi{`$I0P-U+M z2s7+L%1>f++DZGDE9Y{%gI;iQmL_LWhObL&yIIg)=52<^TOL!f^Y8pt>wQ;XR~8c< zPf8qh6@mI~^~(t#+o<-c&F>}K&kQj2M1kx{JEYYW?-M2Fa=M(pq>66`UMUNDD&hf2 zQX~n)Dp3N`+;+=k{^~vSd*s zK+t$=;d@Bh*V#`qwO@0t3(|~i=Fis}I_714mu{o5tad+pKsr%qKn6d+-W|;T`Lnu; zWty%#_(@SQCIbRaJ-o*Yc>0BbQaU{Idk`DRTp`)LY1SOCN7Lijik%wYo*ZbWaYemp zsA+ReUE$@fV-tH~9oBG*3302F;r$=|ng}{t@smYM692dHn6HUt=1eC_H$~lW=$8lw z=3)Mv1qqf+jHzS)?$H^QxtVW_w~bQ&>7avEDi9p#u-uSkQl4HhiEcepir5;#LkN>r zV0uakS092sGJRVm$k$qhT&W^BI66Y?foJ_^Vn=||2W+R*BBVs9h=2m-*5l`L6x874 zQp-~gOY&g$pC{v2RZN`|@s!oTMV6AN%13R4S zPdoH?YGt70BkWgE!56&%$0EX8&Hho2@1sh)sHU_R<4hbK`NdkUU6xnd`CSO_{b#H7 z=W7b&QwYgkN6ca7*W%2^y~eVWVc%q&*;|adF@vtr|AaZDv;=Eyzf3!WVina zf`JNi4_Ggf6}4%*sz2Ua_KKz}<~AY;7-fHn2nUC$yW_#^PT2qp{o8A_oIuRi*`%Fa z|JGHCzNl>if@x>(8+2nnT;#G zjV(%_t8S`?y*4id=Z7ZQ2HMLZ(2Q3*HIKBy+$g2NQG_kIS6O)> z+%GB6H~?Z+hdvtWw;v&Z?i1_YrYizN(DoPZJTZ4d#!SIV;9Ex^{Ky)1S}KH+BA^nG zetJ#aTc9!*y(2eUvU8!j++4NuGi()vv}Go#v5KE(Ywp5VImIP|51QO1tc0F_RR$oK z@Kseo$7OF#KC}FVqd&b4u(rn)o*RqBPkdS~lU)$@g~L3U0q@<)bw00?nxU=~IPBNS@S-JTZO=#zQ(_m)4 z?-|ol>GS2kVS8N0WzW7%x^I;xvJ#AGMRcEt*!AtGHu7_yeQ&eEmqr1>Bh&)s*|T{j zneBCDW91NjEJ{PLb;97${zK&A#%N!k0QIZEp4G z-*fBOu-d9`A#ePQbDwmGl7T~!r@R*3g`=ifVjVM*X2RwrwB&tl6YR(`-^$V?s;q-T zU#{euZ`O{KVDl3GtFe3!k=d%oMD($5UC!~a*YF7$u;g)Ep7k>w+DrXvU~J>`e6Fsi zA!Ff~zi)DCA96_du^$n3K_d-BQ>0P-sW6pNJ_s3_>f#Cc)9#)>FEPPt*h2#;G)C8* z<6TGpQ&>=ur~LR$bEd#zw@;+J@6Y45?g`o_oOWxAO|4>3C!sW+GOMJB8Z+vwgFfxR z4jsgy#^1c+7thZ985?2_&aWbKE0?!aPv9iw*M-xsDSYgT&*BND>+2G83zFx~K3{S) zOCPsA@eMDV@;(p8>lqo5efmX{rREr>bvkjpL~q#_pnT;VT(wy-Cef+E62--(q10kn zi+#vBFKLTwsGTS;GY!$u*Br0L5WPdaHtpDLrnk8`(p#f5Jpa9i7q(eL-s7WpLm8fL zKb{lB`7n`GN?g4QUZ~2{&?zY^br7J!i|Cfy`(V<}^O@=AZ^1{$*?-TGt#*2&q7^*P z<#pA*rLjwc1^RtH)ufGJZ_fY*`<5Sp`nsmU-8gC@bLUXR(q{>+-P8LMx&UJlp5*1_ z?f~()Y_*+$9YKjFi`8E9d`ttZ9QAoAkqKL0+sr7`>z|P%@KfGo1tgr0u%C`&Epr8) zGAC*r>($nbcQ@}X zTyq~G>(lz!HIc~o+2U1b;c`=jZ=dA>NeWF!CT&kzgo!q9C646B1;VdCinFHn`bvu1 zSm%nx_S6iR@=9~FPyygNYA$i0pnPuw6P$Cvg69?@+f0kPOgZq;-^-;uS;>r`o^pTg z#=_NhRrJjAo$Fs*r%6=sT0wTo=vJc3rGwQ|=O#nHuVTgAelm8x!E@{c0z+rOGUFj; z2(u9D7^zuu&)3D{X6n|#!A}C7)0Ea9FSZX60-?$4ht1iicZ(OF54@7qGMxn5yj82( zOvi5DR-LJ9QdZ9NI_kNm@KFnq+H1@omwSG!xO8-Jt3kLVK& zO;1|`2QDKdcOD@;P0YAeTW_LzlS&IFj@#tS_QiqX!#o5l~zm^`=`7I?S47@Y`+c6`ZT) zU6ve~G8Cv3rW|f0=JnB$A78HpJaakR_T2J@(=_yqh}=l(+yqcp!#~PP(oPr|t6rrP z6>T@VTPMGlz{d&O*yK1NnbSz+(=wBvM)8xYS$f%h=3!b!p~I?>zw6TKj%Z+8Be1K% znrHFMPA-7XURloIC{Gj+lPMmwi(P?tMy{W2%x|3dBAd2q<{QX04JZ^51mJBbwF%H) z6hK17cET27(rKw8RW@kEzC&)g<-`b7KWHz`X%E=zWvCXOQ4dGEXr>kXi-$fmgU`|~}cCB$PPV_MjpfH-t zlJ&v9!{PP{=tl!gt3H(u7QJ5PQY}hr=@0%_r^ZV^oKike@(227@Xh5ud5hQ-9V`cV zd%CujMZ<`9G{5YP;8O$dD7oIRFjM1N{i=fM8))D11 zWdwPS%UJ%ez3MY?ri1^@`M0(efA2zf4ZJ7@A@YoWF(;qE) zzD~Kp1eK}Z%kz4f7uV&Uf8)e_m8ERP`IzmQ=xAK=@X=I=U0$KtYCm1g-2AZKx06Jc zYr7G7G~N<3#dETpFC3>NQ`sIKUb~Z-_mt-DvngQk5568(zgT!)=+}DKv~@OAzHoa! zKb}`pOBWQfkb`CPuXoHottnIXYpOjGn$yA<$6u1i=FHseuM|J!A}JwCt$>VIW&&?6 zHH|jMoz7tB7iqaAwcA_Q_=q~QCKNuys^_rN%_fN&l*}f<9>Ad8uArMZr5oB9m=oFh z>3ZdT6UAc_D=hBy^HDDLmSmFed$2S75)eTXTwJ(I{BAj8({CTJ1eK3`H!8SsS{brK zWh6DlP4a!%7&{Z|V^?^1)%JU6Y4W2csPu87rSMhj>8W|$L<~T zS52pZ?*3mN8qqJyhjtvAn%dLeSvd6s<+wp{OMyeMJ+Az+HVUkv0*bBY==iCmDbGxC z&^M!9DwZvLd=PCvby+A7QtxDmO=54u~*}lb8 z)PW86PF+`9J>Nuxx}O6JP($~fm+E?#?QHitKkpnSOtL+lkg{t7et zf!8D7q$%1BZF=0O0rCtdAjEI9T5R@--_$75XRdX{+GO%^%F`sTcMdrI$jVR5aycT& zk@RA|qBS9Cr*Oa8rWY(%4rlCKTwVKcA$Clg_@uUgeF-!mnie|@T8#Aj93cGIHlSTB zvJ1ReeTtwpm14V!janm?&0;L5m^p`~o90^19JcDbc@s_JMHtNs`ur!HK@*ohiv`n) zJbtduy+ixqro2>{``hFY%mCsI)a)s~jieGE<&~d*THCAG3O$NTed(B3 z(8zV%`!qUj49pCL-qjzeoS=3HN((Nl-~@pcn%H}>)01ya zas*hkZqk~R($n^5RGw?{&TH~&*eF0WQNPyKsh{aIIP_|G2ot9T3;0<>Eo0UZsDM4z z33Q>pykV5;7LfYc`{4c`{x5)`H}=?*{b^-v194R8&;ACgj?<)ne;p5}g<*l0eJw)W zj%3~j+>3m<$D;FfN?9w_9c;e1pJb-{-geIsBk?J4k82(DutB@_>)ZLY%oXXrOR2)A z2!rPrw#V0B<5f0?rP{uIox}+{OJj35??o9-&0DUG@%Q-pGGViKFAJE_8BNSG?qp6M zPAeLqvhej#mXpik$cWZj68rs(T8PZZIFbYr`*q%(Ilb>@L_$ol!{6$w%*jfOkS7j4 z9(dEvFT2fYN`slpL)@$mZYgYBPr^B5?{K1!zpab`Q1}@nDJZ7rg<#JPbjX|d6gw7g zbF=?_WWfpe7;5|s6)^5k3>8)^DKj}|scV>L(zYGerKSdNW6=YOn86)hg9DEa!LH!x zK&ba*{3>n4PIJ)gm-MUmLyj1sNvjD|fPP4J))z`we-pkzk|0Z#7Q@Yjufn7tR&7NY^lV zx>`ufRfWkHSE}N3ZuXZX9}fyDKvx9bnlLv{Gj16Xzi;G?#pOTISn}$f^uB8`u6v4H zz?n@-T5ELQ6^UA_R03P7mTz=7Q1gHrI2^ ziO+tJTrIb$?~K_*8R9B3U_An$`0CYsmON2(9^Dyy+H$^SUMYou{JUAEuCO2XHg|yi zKQvu~U)^uKKY7cx?bKJ{tE$ggvHihZ zRyiPGtpENwp;Uwa_j&uE_tW(&26$G~KFw_hO}YId&$RqGpMsl1&|{5fp>g2LwXCRt zj{5l)lBB=K0{-QcX^t+)2_;A3h7k`Lbd_M>DJ2(e=TkdYH}B!vB`VS+PALu>@K+?& z-vN<0b})QSZqseq|JVi+00*1MV2fu!H@re4rSlEYSFMbq)@{zls*{k+0UE@#bU(iz z<%pmFEQy-WyIaP)U$~W{`@iI>S@X?6SCMld>K%0@Vq>x06MF^8wTPRah6UrU-g+fZ$+w^ZhG34}9rOwoB3sBiPwwuPG zdOoyC-eA0!p_Y4s1IY-7nI5*PG^V|xTtJr~y=>%6;trvFP$z<%p6uc9kPf3EoDi3w zxI7^*@h13j8(R)~!7~pstY4Ggu}pH7iF&ByX83thYk4nLRUxN!Up&^-J?5-@9PYfJ z2s}-1xv37m&$THR5aUsk_$ns_?aE$VA%%6zs8KHjaTlV+1PwR+X%x2J=Z64_OtvVy zQ4OQo#wE)U^KUgT6N#uI6L9$Fofgd0_Yxjs~}`% z-~a5i&FgN3JM)fYNLwCFi<|iNEdwu2*2}14hkWugg}$ajKC2_rYBhj`CD4D}v|23PaljC6S%m z!=S#P7&PXNB+043BN)(k^oax|`fr8|FRJe8qhODl4D(B-=L39kVd|oUC|Iu)H5I14 zw`819;i`l8N5V4ex^=CXsHI$%&ky;kFhDc#Nadb-Nao;sgWUfC1ig5oyKn?^Z&we> z-x@~nbnM&Cq4tH{wT>tGk)tRi9P71}YJ_xw#HyMHGJvbFh?H>sC(%UY9uTHAndtiFl4=>cWppu8IOFBA^TSMAa9eDphu0{vO} z#;;=$DOyIP-3 z(!c=R_oJ@+@IgJ5U~AEA^QD5pQ*yzrN}mKp1=kZm*>@OMh+9a;;o~GYN*V8MWo1R5 zNcEyLPDdP*aI_AYiUIOU@;2)`_G{C9qE?Njqx3;)cGhu&v4acdS-*27Vq|t3Y{wiPj>?Vf*8!ry!lx!7OA-W{WGGF#o9sL4f{0uJ>((iW*>I*H zP9*%2Rn*k*m%%R|y1*WTC#~ss%0{*H#^O<50usLXBo7%gms=sCxS6NI_dnlxx!8}5 z6{0Slb7+D%r%R{hJ%Q@qc{0u<_GGg%*5u~U^(j z2p3i%8|tfe@i#niJjsPkRGWC8Y!xU6Nrh)fLq$U*{hk$hZ)0xQs-V*)HgUIcfU+bG z$YTB()`ZVf^JWu_RQJ_W(R zi@#xS(JJgPA)PH{s-&~%>;+NTJi8f(`d$8OwVAW?jK)yC9R@M=hd(%}fXKA-u2Ch5 z6QCvsE`Fx4jmDNHq6-xKPLR(!Ax>-m*lPmuzKP*;Nu!s}Q_##8Gz;tUYIpqArJ(`^ z;x`*=dUNn@fb&d}-erR@SAuj=L89J8uO zh2xT5^J89G2V|i|FuDz_@tr(U%5%&;HY3#}eEZ=Ai4hbx@E&>*!YwZsFEMVD)^ERp zTv0Kf#B?0;KG2j0aDlxGfS`tcSuNfJnqq1F%#_jNtQ9Z2;a67utZeRKKCsc{_2@u` zr=+=Lo#USlZk0K}4CW^UM=K^rtd-TXwf?sqYIO+PJrY$B8H@GoSjJmGaTF+S@-TC3Bp8X>$#|BEiYBb7l%+W(fP!GP)|wYjfQF{WSyDR@g!(U5 zBpOf&0eBMF%k`z!0ztc>0>9?4d{L(oh5Va&gwpXlKXvmX&v(=dT4;jmq2RvU_B+@X z+}!qJDC0d^f2%x`%D1G@{@ewSU8@c&v?hX#@yBDKn)~i!M<8g|tQk8Xqlet)L(M31 zXk{>aQsR{=JcyIk`m5Fk*fhpQ(C9W>Wd&GU^{!>kS2jp>a5mZ^v9IZcUs-;RIuGMt zEUv;0%#YF4^eqP~|8@=gT+@nqIXYAHRTv+~6$Jbeq|CvTli@$4K{B@l&avk#mH-boYO$}X|KAXIfysf*V2j^o}F@CDh z5}swA$0$XK)5IhM*S?q_o7{DtH zbWOM=cc=`FNuEZn4i#i-vy7!JYamoF;5h1JucYzpLof=AK4%zq(1RDmioZKvZ+(0x z!(9@51gwk%S;lqFW~O~42tIp1UjE@5PXrYwhxIb6EPw|2yj1uQpHdaH_&c;Zq|OkR z;uNZfM?3vqL&JSO>1{-<5hPz$B2v!nN4ddVOX5CVRHjf#M~Xg!=D;VRV6tH>V)Z-D z7x1QJC_fIufC$-V7k+T zvxN!GA~n3D>8^61OB0y;PkUC4Kcjm+q+4t&L*{vXP8xj;E3EC}S{T+V&p&zZ&8_w( zep3Gy#2QJZ3Pt$ZVd)ddF|v=ltQ}ud9uM?Cto_a%{+mvSI2SjK9s{j;BNPD z@foYpviBp1F@U~LPyY5oSI_H*+7JAZc*(5gi=Jh=1jnLdA+30H_b^dp@%a#9>`*Nm zrX19BkaA_H!{qSr5@A>kM=^}&fN)A0 zt;Q&u1vCFq22#_Wnk@0(O;`>^>9fir_t{_iI}k%J8e$?9%qH%a!#I7nz?1bn+j=u@48E3+ z2e7v$dk!NnF9@2kJ*jg=-;lRA8D9H1Bv>>=^XV-e@#WT6PU?r|$MiXaO3pucAZpG} zj8s&qy&Khsaep_iZ zHH$_YSqX-MQvAt zDZih~Q2XXitdeol`fK)u-A}xuZa6qDtLLlt@HE8bpxd$8(&aS|CBfIr$y&UD_Y5Hv zZT8C#om}j=#PL6)n}k~hzE`#w;(gvym_tZaSDAKFo>SuvAjYokswWsaJuUo$TM1Xx zCHddLi3L0$cN$mZumYrdDRtwzt^n(M;cIJPSn)+y=&z$-hfb7%7q<}Lo|b^|7A6Pk zn@@GIXl9CzcSk%=aE377qX3S)?UBANSS^i*OG~ufMJHQdHvH~N)nT=@!gFY~JKHfc zM3s{8$OIwB7+sX#>B3M`X(qmlPFIY;y)F)eBz~%^Ng$l{2;klA;q+|S!|RyZW$TiN zp0#V70`d*3qf05dm}sSOxq43zci@hJv$yI_Hr*u&>e&>v-q^Rp{z0`%^ymQstTgR) ztpAi?>yXMzqT<0Kr71nVXaJcQh`Hh6Em8bQ3~lC`nzHfRay2VfSxZzb0#rHh|Ki_* zDUd^(Up+9gvQLF4{20D%xe|$kaQ*3aQ-dF@RysSXof8F$KBaR<8YD}IMyK!GwGghS zRwE;XKRm=z=rBv}zg)C%-1T!fDi>EA{ZssXK%fus0=SlQ|w(2RCIsRiU5K%;X+RbMylWkr*Apds36j`p`#lsR(SoSwehqqf3C@ zZ$;#xXyAvo)!6J|*)|O_FnAzXQ0Zb(QE+Qyi#fvNUHF(i3Z&aOtWjDnQg@!5jK|wh z|EEp35|aAw*Sv>S08A0znjc78kfuRChA(6I8o1ehKnPV1mnpDMjf>IB$>^yUu<1uR zw#WNii>3Zks&Q;*2+Tkqx|IAcw{CAHP8?ZzjC=*s59^g?A{Q7%v!!C6k7Co(AFP#~ za@7E1sCksYM~div;Kq;(iwVRVumg08=ezFi=#EZR41X2mjSb(KYBH~Rr7nxTmcIc$ z+h=YNp$ZIt&%W*c);KBdveokU*!VcKWxReJ2a)U9E+X(&D>pXn88P zI6o^O=;8lXcHfs>uW>0TJ|aMvwDGY1*t^q5!i&pm&+Js+{#p58h3=A12zrdMR1x0n zBaRCQ-3L=Nh(1w3>U8F-bj^Sz=YBUapTJn_r5mo4!=R0aT*v<{x>4v{4iQ#^yNL8Z zK2D1$_imUs=U?ytfq5)6+|O2k2t>Qw0Hj4s-3A+wiK;`qC=vZCbwoaRPP9j$@nsZ_ zx)xZyueBd=AwIG)G}lwIp%?8e&QmY8h=*bljexL7!8n|Z_*By{ zX=dH@N$W$sr9{RX5R7Pkz;p|kaeRE)+icRzcaL7%pTbwfPWJ^?mZNMJQX9Tq&z4gE zY-rIpjGYdO_5adW>+x5Yt3e;i={#b7Hr|%-u$KKi-GH_;_|j;{B$a>7;Xe-qt3As? zGyR|TR#PfMEm*#r_o~oWh~bhY-~$qEf7cr+-^PEwKbgyYiYla%s-W+f&@2Mb>9;)3 zXtii6ec=~49Kca2l=goS(B}=j~uibnB5&uU9t3~5h zhtZjdh)5iit6!)58o7sdD|-AuBLNgcEg5I-vq_ACbhgS51~;K&Rcym#u5QgITLMBK zgSHqdfT*3H{+3D?HyD_l9=xE5=hC!y59MJ5Wms27_g@*O?zZb z)((z>pH$<#tQ`A0D7;BE+f^48LoO1N*(dZ;fC!Gf89k?88aPeYVSh7EM#7^zp7nn8 z`f10%J-*0uSv>+sk*?Jr2VmB!n>cD{P_VU~;yhg@-rEd@yX`+HIQS)}SAdqn`r&Y3 zN;a1nKp+E5!xl7kn_0>-?g`6L;?g?-gRfU|bxOoG4fU20E#eLiY_l~?e6C%kZFo$!OuNyZYvm~}(D{Q6H%MWuT(Y-D(BYh)(doLrPp z*iav;r0Eq{wx*=oBn|IC4df(ADk=on4@+c1?iqh-*s8Ac?CbxETJ4`6_(NakrBYMe?WqF1hW$tUtVTS*%%6a)$kv-ZE0cLC|YE@Q}S{5hq!Iq6X!lZ1!E9 zmS`YiBo`BWUk0OwaY7t=&4l{%dHhe@E??P=<9%m0elu8wz+m zlaV*L!0x~9X8BKIhf>xTNZAv7Dxe%DUMSJ38RaUdR|+sZ3CC87(P(b8>C~}Wt?9)w z9?wFw+dgT@DD^_X@wlFkJ7QnoAv`f;Yj~WpN>c|-40c_9d74iTE)ozW`Gm=zjX~jS z8(nX~mH&pS1mgTFpCiwsoQN+x6;$T^pH&%!Bw284iJf~UTqNt$IA zWsR?=*Ogg;y;wsOAz>Ah&KILhBFFNabvfKY47{R3@91DeYkjCXP)On6Emn;#ho(+) z#5hsm46&ZyORHP*zHx8O@k=XoOTc*qtf`@*q8=b{SLk$(G}+`Y>`=+Ld;WPofB4U1 zji~czK%Cj)=jf0^%U6W?-q34XBQnp;gBC|Wp$1o-qtfDrPSLgo?bqAlFMyO955^=w z2wpN(zn>)=nqRc$eKdpxS^VI-;)o*W1P7B_p{&;~_tif66YE2{{)u77a`35pImHw= zTlU1yQ48~l`WFVh&D1eyE?huqQ{LFdfEUXH=F#|Ho2A<^=N6zhM)hZ-1E4?LsMQ$|&9@EOloSg5`+m2-@s$&;MX+?{SU&?Dq6 zl~_zb;Bl_o5#|8%T~i%NRA8VfqWF^7G~@zG`J3@oXoI}%TrXia--g{~^XrD{iu+aO z+S)ym=q$zMjeaBixli^*R+BUy2E{ui3qVZiu7nz3B?9#U<8|+I z)iX|bnJ}?J#8&H1W0Vl82uGopL|sB(_-8Oe>RPwFi7n-G?v7ve;rVQY=k718$f%Qr z7cZ5Iqw}z7f$(dfV2`aiqOnQ=WZ)ms@)LWu-pnHb`Q3V9~A9FDUb5STk z5kpTfZOMd$gqDOu98Hcoj_p+9CmxZd>ip7Fr(K`j+)uTj5T6z+kDmrQHeY9<+i&|M zl@A<-f@2n{6J70g_A7dHzIN-o(m&EiSB7DJH&G+D#*%2E3O5zM&d!ug4DxYDRE+s* zCay2*Su2_A>z609_yCAjYU5p=oYqZS6kJ)l@QV+x4_mK$v``U$T;30*}Mu>11dZlRZ z(ZPgjPSpzm>Q*C~XYC{4W)!aVmHBnFDPjM@Rd|ra@!R5{hy?DStjx^B1lB~f?~!#8 z14c^XiQNh9=4i+ULyZ|^P4AZpo70GVjOc%)+fKGcoMG$o!|1J`g1o+-rROG5=JPfB z^!&{qa8GG=oNkx(Pn0#vFiPh$S_5$JO8qn{ZeSP*1l}IM=UfR9G0Y2j)a8L<64~pe zmJ3M{5Ba{!*LC-z>zAW_Foqwc^UK+rh|kD{w<@%81K+V(lrl<_GW|ZkyFZ|-ypj(E zb^#OTvgRuu7Ti-1*MD}}=Hg|)6;F;wGWd_^69MP_yyi+Y^v*Dq(q5mve5bk(?? zQ&ZDE4@5->Bz)dL-dq>voo=!}_T}Fn+ryglt?e)C3zz#s?_b2cMjlr;&_yoA-#j+3 zW!5+5=^Hrs^D&8}r*KruV(nNQeCn%jbl-~+mVB4A{00lOGlMiIr0%7eHofP6eD^;s z0MaJh3lXL>MU2qr!UzgJVQYz?xmI*r8r)blI2) zk#*4I>f&Q1O0D4}#1Kw2fp(9!5Iy=c8bJQH#ymp#9Lt){zSkjrR}FGP z8v3dHv^c3QMFT6E!ix2&GH#(frLD~`_+z_8|EOMjld6F4uY#V_m8$oWRD_%9`tQ`w z4=?Q`KUDX$`L=}P3(TIFvK-}GB4~joFS}Nd#wnc;oU+oZ@p!n`#h;a5mW|GNU9>g5XK;vsIvZ6vfV1{W3eZ3>ywt)<3FF%c`@>=dF>8<0z+fJTeLoOGBkQO z$g;Hk{=}TzNAnd;M78En_)Y4n^z8Va?5k$}Z7|sQ@S)@Ho3TSyPxrst0OyZ(c>>dW zQ;z1_@B!R_qL%3jDwFQEGK|o>P`$Xn_tRk_YizEd8Pi$$$V)&Y;wsmwwXJvf3Rg>< zE~fAmBt^k(pmH2s{9s(-7Iy#STUNGBlnY`^R^YCRT+0JSg&UOG?@CFUxDHN}b`FAP z5%ICqNJh<^mw{r}2A%z~6+E3c>mGyaKE}r+8%p4_(RD$%v-=xbYdQn45t0p|OwDJh z;Ppw6y?uNriat$zk;W1i_wMa&f>JJxYz!Pyz1iUH$M9R(M!b&_qFI>gsH}#1Sa2jA zzdw1?r+)c_rlo!#+x8KokP+FQbA$t_2|k13kB923DU%ercFEw@kXX+U*W;ILzq9V@ z=}xt;js(%tZO2Sb1j!knshch@jaK#j*T@*uYBu{XPA^w)8s$C)f7ZwxOCRR6EGeIh zyW*uQKFL}4TU~6ayG_$U61$HdNM;c^`hIqE?bi1l!o>;W^j^|iEW#tf;a3J&l#Dk` zfcUNWlt}rjh?^HS3w?*}Uye^$|M|#I&0V5@01vsJW>^tDVCk|hjm+iuV+X-T`(w=F zI6bnM>`9=HJPlh5b=5BD9sH5q4XluOHLMZo_ZGx~zT8FapB<^|*MWZv7xf&Q%> z(zv;oo;?4lC9NV-)uCCm+WF&iI8@hjhAb2qvF7%cjZwDOx)F-Np4KilJ$P?Yj@YP( z|5AjHZS9iqIf7W&8UA{D{!yT>&=j#WuJU>;`SE3Q2rGg1W^v~j{QTr;U~Nq4;Wk7v zkMp70JGpotbNg#~RO5bmqsNUeN(TF;&g>77%mzFZ1wW_F8_rA4R&t-K4xy~Yw9&pZ zTXhxj28h_&e`^b^JnKyxIEM9Vg7fy}y7`+D?rtNV)L*C8Yx|qLlm9DIT?GnX*Q2)S zL0zHQ+M)N*SCHt1U_oe5Z$kg|bm4z(sleROY~I5&-ep$wDH$IWkzZ10WK;XBw?NgA z66=rjOaZ?F(myB{9`u4853v09lok#W(^FHa8jgaAu!kAOaL0O$js)>zh5*1Ueukm!W& zGRwQwi&b*(HQO7p=bD>|4LQH#L}kq~#4K{uK0uYU=R%b2)3L6`7}Dq=Nl)bx^B#-h zWS;5J6^O>Mo>W5D1E`j(oq_d^<-p)&6pj=RQT^wo;DY7mhUAFAyOWM|KChn~vM4I8 zpdLOI!*ntYKuih~EYgBef>WPE09o<<+5kPFbZhH-EDI(*Uvbd(h2!*0b$^JA zhBb7Hs-y`V3tmQhe&^*{8vEVa*)75l9pzk*M%R_~udulh$dPN9>AEo{9bQ-kGzs&e z$R%?HrVw$cL9zAxhokk+Y*jrB>bV<{^n&$n+bk=TdV@lJdAI^;tyD;h=4aG6G2C=QI-T5ODADsg@(r6Wm4*c)9J4oa93lO;)!6% zg;(e6=Eo;%DLLBH{UTp#QMZ}IEJP8GTkF?ks*==|BfURI;uch`o~W%|Xr*Lo!V>r} zQWUh6VR&G~_&fHh+uITdoTdKndZ%2eQZYl*l17+{EJejSH+Kj-+bf&)0I13^f9Ssj zvA97TueB4&$JiVwzutG#6^GnIEgddG!hdT44r~B01uR8<8@KQAh~Wu+C3Zq7An6r$!9=I3(t4^T=Xs#QD1bN7)w0rGzoj#n%Aif@XdW_Vax8#89)!Ud&t4|iRzGN>#+>(FNIhFFo31K)$f zTHqBRQ^!-K;l6%wiUtq2JKXJ*ei1_fADX^nEIWkHFU0*AUE2r@3^#OCY~0G)d2Y?v ziuN*_k_zX*r#jtW?!D9u*+3G^J-cfd1;?-oLl2y;#R3n8Km>m9-u{vr0y@5!DUhor z3W=2%Sn(7Kpz*=MSZafuVkp}YH{~%KK^wykEdLG_Zzizq998Vn7ljEBw*ud_^Q>YCMF7{=Ob-ck+XyWj)+)Qlt(CJcsXER?m>9hzN1N_EY zF}QY12jdxA*#)?44iz3J_|1(^FH@_ra?-jcA3XikgkgunN^5&f0Eo0 zr0sWB>u|9x)()fO+siP$6yJdkSi?zPWN*Vhew?3-t6(%}`0rOO*msR$a|i9a?EhBD zp8=;EoZo9cf{L2RwzRD_c#`L_8)dvJ1?b}NlSmvIWJzU56D#xCGuUldGO5oN)fE5m zCL(X9$z4$O^~(L2Os>95k6Ty16>q_qo`~P2?(s-5+*bp6b{J`EI~%7J*8Gab@%lL@GZ7LBRrlbox zVeSfI4qh6T3z_L6q_r7r5VzTsuA;OyFAkkaM2fIyBSjFA#(vIESFsJd3jZ9`vjJPO zD|*Wj7;GHUV{abX(?I2~J+|)XmIEV5>!wnu@qS5+8D((e&n)Qv1!~e~{Sk`!U#`b)rSo%Ko7N$4;Cw%?QFDuvxxzlE<>kGWM}VJ+|72<`Xl{0iN)W2S`zz)GxvAV z^+`>Gi<93P4fR(GFr_ugOipY@_tD(nTg_fTWcQy>U@2b3GuBf6o!|(ksLY7CNH)^e z{1Yu`pb?ZdO=yyaze3h8~ zPcBN_ZU+7*&qv8OwJFk65h?XQ>6)+; z)qN(g9W}qZ^lX0U;4{)%>w5jY_0R#{tb&fT?%bJP9P)1gBliSkZ3rqbH+vgoE{t@2 zP~7e}TB}f~0nFMFX;a;y82verlYuS929Rym)q4l0-a& zb8hQM0?|fK)L1+9cj8_;B9vSrNC6PR5M%fwY#{jftcH+0w;7DbX4(MfUX&0myGi}9Z zoftu*jX$4<@`couZ{pY=UdXO_k@((_9^pt zM~B~$_R4d+IPWAvpXt7*1{{1S^Py27>4gcmDVWsSz-!LOsP3`C(W92At*XlAaF4uPZ_5AduW4$E4|zB6qf>=c@lOsgNnkP1~8Et+N)ng)Nt2Nc1A5^ zahrX6-g*hbtGdR4MzZetk&^I_n6sl7iY;=_zwHs6x{i8ZC9%j4#vQeWQk0Z~BJw_4 z5#$VGBB{W1D(oXruzIt||EV9zOH7o`A%<(j+}c8igehLohjnggQ>t)E>i&S`fH{!# z0yX-gc{a47+T_(5B!p>lV>N{LSvt{#{w zO(yw~*Z|Hz{F^(BAml1-EAApL8Pj3v*H2io$tR@Bl+XnB{Rr*CvlKEmgy7hO6w&oh z)*T)0fFoK4IYQ!#MGUI$hf5B@6MkmH>=~a3xQOyXw)I0f6F0n)uWp8X%*{ElCR{I) zz-($@ekttc?)~;k^S;lCOBZ|2|M+Noy`ylWi=lBBr?y;)!7ijxs{)j*(+A};(X&VM z_D3`Xt3JzIQp=&4;CC~9+?jiZ=(ME5?t;z)&aP3F`4aew@8cp9`(h<3qqQOc<%%=k z++kw3SI47u1Z}tB^4GK`kFwMtECu?p!NxnW8pBbdD>IJwQAl5$OIu25BlqHQzmn+S zP6cCze=g?x6W#9HazHbR1JDXBkZ*&c4;~)@+{lfB51%zo^nq`z9Et(p@>TEt(%fSt z!-8nHx%Va7vXpHQx-)Z-e;NDDEB5Sd@<^~de|6OMTttscHO@lBKI-99f~SL-8l`+< z#PuH13cNZ{3pxkWG{77(V=u&E#d45XWbN}LkM13dgKjmrsz(5rq?@yfa@0UGpI`V3 z6Y1VD%XDRwU--x{@woDWFsH_MYTi5f5Di|79P#rbIBg5}CYCdvC}k zTN%JQ_zIeeh#TV_HiAU4w8z9uPsRywnw)JIlar3%-$<))UZM$Kzz3z+=!$a0E`*>X z^E2RcB>3M=POJJew^+x&<|@45k--oA!+BUx9I%`B1^hy+M@m5@<07dESlJ~gYW6Rq ziF;ZSN!H29(t7MH=XpN-#w>rTXj36L{u&`EE1Q=KJ?G&+MG=&%5MLu0RG!0Aytj5S zBoq^vgQOoYVJKw>Lcs9HY}QvnW}=$q8e)}X`;DXygQ*cYo}25fx2w0>=twY;zQ54K1c&p*gmP|*aA>eu~* z7iLk%l(WJR0jLi0SaM67+3w7&0lo0^plaIymJd&aIwJZs3kr; z$0L5+dk(UPAP?Vl5jKQz%es0~1Xz)IAVC)L(c}X5MLj`tlpcnQlk+bVH&WpyG;#Lh z_@ILF#b<9{PMcgZziX!Cf-2UV`X)u$SRxTXnXRI#nO|b#;L$YIDgM<)fToT@*`vjv zXs_#$1rKCxX=SO4cl6TBm$*tU>jAzqRq=!+B{1*bvlzttGJry*@&Q>lwj*puk45w^ z%mVHDJ2vPv@jaLtSKG>b(Ws_3-*d=R5jz~?KcOrg(v_1NZ@YAqaKET+retYc6(o$W zhZjLqRO^&EMv@-_h?xj!y~QnW{Qj{xgsN4lfkLqN<1H*86D2H8Wtco3kY+rlW+F`e z=znV*c;p$IFrDbbTlRr>*;J*XKy_9C)xW^1V$1Y{SYJMVzNG)}um&GjI=3TW($FR? z3^rg~I4ju(#4Da+fMbR6j<3cM1l%wK7kP%j6S)2@)Fnu;SY+2(#gx)Adf4MUKGV-8 zYZnfPOvP< zhIR^rwyoMFrOG7ijV_2fo3a%$EN5948(SJMhO^>Rsrgn%cY2rvT$$hj{=p0CPD4 z+eQ3G2d>LSg<`iEH%Bm?{Ch*eoh^v?rMNO^o_tc*xcbn(`noTXF8;?#`w@EVXaAoVh#@upIjw@q zBmsGj3A9@83RuE6CI<5giZM07${wz|ZQy{2KsY4s755G!QC$2>V#Huye%cTkVbQ7| z2A-jyDmbmO$|ZsrU>#Lp-RW}`qSPw=Ls!b5?98AAQkqLrwZRg{m2O2@Mu@?XGm7jwQAymJd199*+yGU z#>9ainvk8IJAjMDY{OG__he(p_mIZ#!e1wt)@6m9?d{a6MLE5F$e3Xxq4ESEKn>_2 zk9g8RST>iy>u+Q(B+K~nlL2-Qfmn-D8Em$u$n*Cevdd@|58XA62?mpkmY<*E-!FBU z&6cyXB(J%R7`1;!&lnypRqV~KC*Zw{#sE zx5cXS_PUEr$j*X}cH;b7l9Bcn;+)y8jWbN67OFHw-wqPf4b0JcHD~U zvns@v(j%p7MkDXj6v z4RaS)PW7lJ*q>9h*`U(Lz}sb0CF3K`NI(06gs9pG_&nR?VkR-=*DWoy#&+7K0VZ~fifL`_g=!w?cakHal zgF>lyDP;>fZgNX%UNFDdPVauE3PAePX1gTo1o@;kO8yFcj@ypgM8da6&#Eg3~NhxF}69A|F=LW5&{c^kp|>D{cKmiq--D|bG`g&OeDWk2H|LG!tL zwmsrhCe5a9K%@|>Az>tqq}%Y%?i8$EgU$9kDG9-roLc#yoRPO9L6E(+#~Xs#&|RM? z3`J%p`HK6f1z&RQGt$rqppU^o(*;(RgzrItD2Q?v?q-RE(a1LzzJyuoHHVDI7yRce z73ZlyLDbu~?GY9jpTeaiKKoUwf^LArC|0H<(x61Q8H;@$1cE_Q$jL>u$P z;^H{>;1yiqcac*Y4U?k5!yZ;zLy<#l((3%YM4$w#ruX*$_Imy}QP3;?=0fI$uXi1+ zIrPaF@Ivqu15atBcf8^iT)2FHhk<7Q4Ics2xqsj~)p>z(6fSQGUOAy^y!sw{3xPFi zr-%v%k!p~uozgRjU$Ia%+nu(Jq;UzGH#ErSZa(5+5W~7McN^}g9#>ml)~gxA!#>6l zuu*R@D7$Lfu%yyjz_qkzjxKj}gi*RMPF!9RtD|x!ScJ5!8s1)-LME~NayFuP-T|CM zMTLfI;!qd`7eGs3s2Rfl(s)yyWBqh$9>Ypm>71~MUhApsroGP7fBj)alKMQ;*BD?@ zrgB(Mw9v_?i;t9r$ptI1C)8)^QD{Iz!}N=6z%1-EMQI=aN0Qrt6V?BP=M_*mTe7^0 z4QR(n7_-+b0>Ye~keHuIv%Kgwemi&7K%0DrctqoL?V~0v*F3VlQFV*8jIb1ZIc;Tf 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%0AvY~tX*wf!D4rS zXzM3MGbO zkz_S$<9Yo>W|I}Ysikxw_v8lRyf$(EeMFEW02`xb?WO&kaCVp9S1yJ74<3l9`W}&` zfNi+TqG2;Ac+Q60UR~x*o4&PZH8d?^qtg|EHGB6*bLRi z!)O$F7swl>?&(qoza}xc0afl3+-inWF%iNl3qR!QpaCX4A_7jRSWEBbnu2t#g{Or~ zC|;sztX{iA8v!LWGeqkk&3QV-01EuZeN_0qZ{{TGNrCjeq0ymd7(faw>HQD?frW>~ z;1`zofBTRB>FwylV(|NaemnXw34Z^#P5l4#ng1(^#Lx|(5C6ZX)&EbQA)!0^pLX*< t(@G4!K!V@@$DjG1Ht~OztL$K==vFWBzwyVWd(bVM($v++JZ^pC{{#IbMF0Q* literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000201000002020000018EF75E743EDC6A705E.png b/modules/many_bone_ik/design_docs/Pictures/10000201000002020000018EF75E743EDC6A705E.png new file mode 100644 index 0000000000000000000000000000000000000000..a949b58c73f123a02e8e6fa7f225088b74165b8e GIT binary patch literal 33815 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 XOv270zl`34fRDFt-b)sXgMI!VUDEy` literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/1000020100000286000001D10AA6EC3093AC56D5.png b/modules/many_bone_ik/design_docs/Pictures/1000020100000286000001D10AA6EC3093AC56D5.png new file mode 100644 index 0000000000000000000000000000000000000000..86258c569625c39d64bcd2b8713cb63923b50d59 GIT binary patch literal 21430 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 D6QF3? literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/100002010000030D0000026B7F70BE2E85BEF4BE.png b/modules/many_bone_ik/design_docs/Pictures/100002010000030D0000026B7F70BE2E85BEF4BE.png new file mode 100644 index 0000000000000000000000000000000000000000..f473a770fa7b900092d7016825e1e01529d1995a GIT binary patch literal 56415 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�$Z?4seQJs1AZ2J8 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 literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/readme.md b/modules/many_bone_ik/design_docs/readme.md new file mode 100644 index 000000000000..a3105edae229 --- /dev/null +++ b/modules/many_bone_ik/design_docs/readme.md @@ -0,0 +1,555 @@ +# EWBIK: A Highly General, Fast, Constrainable, and Stable Inverse Kinematics algorithm + +_Eron Gjoni_ + +This document introduces Entirely Wahba's-problem Based Inverse +Kinematics (EWBIK). EWBIK is fast and stable and remains so under +arbitrary joint orientation constraints, multiple end-effectors, +intermediary effectors, position and orientation targets of arbitrary +target weight priority, and any mix of the aforementioned. This document +additionally introduces Kusudama constraints, which provide a means for +fast, continuous, and expressive joint orientation constraints. A full +implementation of the EWB-IK algorithm and Kusudama constraint system is +available on the \*Everything WIll Be IK\* Java library github page^[^1]^, +a Processing demo implementation of the library is also available^[^2]^ +for quick visualization and use-case testing. + +## 0. Preamble and Authors: + +The Godot Engine many bone IK project is a port from a Java project by Eron Gjoni [Everything-Will-Be-IK](https://github.com/EGjoni/Everything-Will-Be-IK). + +The authors' GitHub usernames are indicated in parentheses. + +- Eron Gjoni (EGjoni) +- K. S. Ernest (iFire) Lee (fire) +- rafallus Rafael M. G. (rafallus) +- lyuma (lyuma) + +## 1. Introduction and Motivation: + +The two most popular approaches to the Inverse Kinematics problem for +interactive or real-time use cases are Cyclic Coordinate Descent^[^3]^ +(CCD) and Forward And Backward Reaching Inverse Kinematics (FABRIK). + +CCD offers highly stable and fast solutions that behave well under +joint constraints. However, CCD can solve only for single +target-effector pairs, and becomes highly unstable when negotiating +between multiple effectors aiming for potentially mutually exclusive +targets. + +FABRIK offers highly stable and fast solutions that naturally handle +multiple effectors with potentially mutually exclusive targets. +However, FABRIK is, in practice, extremely unstable when used with +joint constraints. + +Foregoing joint constraints to ensure stable FABRIK solutions results +in highly unnatural (often extremely painful) looking poses. While +foregoing consideration of more than one target-effector pair per bone +to ensure stable but well constrained CCD solutions results in +incomplete poses where, even if two separate bone chains with two +separate effectors could theoretically reach both of their targets +while obeying all constraints, only one effector actually does. + +From this, it should be apparent that the strengths and weaknesses of +these two approaches are approximate complements of one another, in +effect leaving developers to pick their poison. Additionally, both +approaches fail to meaningfully account for target orientations, which +can result in extremely unnatural pose solutions where the +end-effector must be rotated post-hoc to bear the brunt of orientation +alignment. + +## 2. The Importance of Orientation Targets: + +Consider a humanoid (perhaps yourself, if you happen to be +approximately humanoid in shape) sitting at a table, with the back of +its hand flat against the table such that its fingers are pointing +directly away from its torso. If the humanoid were instructed to +rotate its hand around its middle knuckle, such that the back of its +hand remained flat against the table, but its fingers now pointed +toward its torso; the orientation of all of the bones in the humanoid, +from its wrist up to its shoulder, and perhaps even part of its spine, +would have to change drastically to allow for this. + +If we treat the humanoid's pelvis as one effector and the chair as +that effector's target, and treat its knuckle bone as another +effector, and the spot on the table to which the knuckle bone must +remain affixed as the knuckle bone's target, we observe that even if +the *positions *of the targets do not change at all, there can be +massive differences in the poses an armature must adopt based solely +on the *orientations *of its targets. + +This should illustrate the importance of treating target orientations +as first class citizens throughout the entire IK procedure. If we +solve only for positions and leave target orientations as an +afterthought (as CCD and FABRIK implementations most often do) we are +left to decide between "cheating" by violating joint constraints so an +effector is still aligned with its target (often resulting in effector +joints that look like they're painfully hyperextending), or else +strictly obeying the joint constraints but failing to solve for an +otherwise reachable target. + +## 3. The Basic Idea: + +EWBIK can be thought of as a "blockwise" generalization of Inverse +Kinematics by CCD. The primary distinction is that, where CCD seeks to +iteratively minimize the angular discrepancy between a bone-chain's +end-effector and its corresponding target from the perspective of +every bone in the chain, EWBIK instead seeks to minimize an _average_ +discrepancy between _all_ effector-target pairs for *every *bone in +the chain. + +Broadly EWBIK starts from the outermost bones of an armature, and +proceeds rootward as follows: + +1. Create working copies of the origin and basis vectors and origins of + + all target and effector transforms relevant to a given bone, and + translate them along with the given bone transform's origin such + that the bone transform's origin is at (0,0,0). + +2. Find the rotation that minimizes the average of the discrepancy + + between each effector-target pair, and apply that rotation to the + bone. + +3. Rectify the bone's orientation to reside back within an allowable + + orientation as per any limits imposed by dampening parameters or + joint constraint on the bone if necessary, then proceed to the + next bone. + +4. Once the root bone has been reached, repeat the process starting + from the outermost bones until convergence or budget exhaustion. + +\*Figure 1.1 - 1.2: A simplified sketch of a step in the algorithm. +Effector basis vectors are marked in orange, target basis vectors are +marked in blue. Dashed magenta lines indicate the deltas between each +effector basis vector/origin and its corresponding target basis vector +/ origin. **\*⊕** _indicates the origin of the bone under consideration +at this step in the algorithm_. + +![](./Pictures/1000000000000400000004007DA1871E5E883934.png){width="3.0984in" +height="2.6563in"}![](./Pictures/10000000000004000000040014FDC3377E0AD7E4.png){width="3.1193in" +height="2.6457in"} + +

+ +Figure 1.1 (left): \*Armature prior to rotation about **\*⊕** so as to +_minimize average discrepancies between effector points and +corresponding target points. _ + +Figure 1.2 (right): *Armature *after rotation about **⊕** so as to +minimize average *discrepancies *between all descendant effector points +and their corresponding target points. + +
+ +
+ +Naively, we might expect difficulties in the EWBIK procedure to arise +in step 2. However, step 2 amounts to a special case of _Wahba's +Problem_: that of finding the orthogonal transformation that best +aligns one set of vectors with a corresponding target set of vectors. +This type of problem arises often in bioinformatics, astronomy, +crystallography and computer vision, and can be solved extremely +quickly by any number of existing algorithms. Of these, the Kabsch +alignment algorithm and the Quaternion Characteristic Polynomial (QCP) +algorithms are perhaps the most popular. + +EWBIK has been verified to work fine with either algorithm, though QCP +is recommended for its stability, simplicity, framework agnosticism, +lack of edge-cases^[^4]^, and speed. + +Efficient implementations of both the QCP and Kabsch alignment +algorithms are widely available in a number of languages, and since +they (and related algorithms) are roughly interchangeable for our +purposes, their mathematical peculiarities will not be covered here, +and the rest of this document will refer to whatever algorithm you +choose for the purpose of minimizing the discrepancy between +point-pairs as _The Minimizer_. + +## 4. Role of The Minimizer: + +Chief among EWBIK's strengths is that no distinction is made by the +solver between position and orientation targets. Both orientation and +position are encoded simply as point pairs for the Minimizer to solve +over. + +This is achieved by representing each target as a set of up to 7 +points. One point representing the target origin, three points +representing the basis vectors emanating from that origin, and three +points representing the opposites of the basis vectors with respect to +the target origin. Effectors are represented in precisely the same +way. These 7 point-pairs are then fed to the minimizer, which attempts +to find the orthogonal transformation (usually just rotation) that +minimizes the average distance between all effector-target pairs. + +## 5. Multiple End and Intermediary-Effectors: + +\*\* \*\*Since the Minimizer blindly operates on point-pairs, generalizing +to solve for multiple effectors is trivial. We simply feed the Minimizer +all additional effector-target point-pairs for any other effectors we +wish to optimize a bone's orientation for. If the Minimizer optimizes +for the average euclidean distance between effector-target pairs, we can +even weigh some targets more strongly than others by just scaling the +effector-target pairs about the bone origin in proportion to the +precedence we want to place on that target-effector pair. This works +because rotation of any point closer to the origin results in a smaller +change in euclidean distance than does rotation of any point further +from the origin.^[^5]^ + +Additionally, we can weigh a target\'s orientation more or less +strongly than its position by scaling the basis vectors of the target +and/or effector about their respective origins. + +## 6. Preprocessing: + +When using EWBIK to solve for a single effector-target pair, no +preprocessing of the armature is required. However, if solving for +multiple effector-target pairs, the armature must be segmented prior to +solve time so as to ensure that ancestor bones are only solved for after +all of their descendant bones have been solved for, otherwise an +ancestor might end up minimizing for stale effector pairs as descendant +lineages have yet to finish solving. + +Such a problem scenario is depicted in _Figure 2.1_, the appropriate +segmentation of which is depicted in _Figure 2.2_. The rectangles +indicate logical segments. The numbers and letters indicate processing +order. With the only processing rule being that no bone of a greater +letter may be processed before any bone of a lesser letter, and no bone +of a greater number may be processed before any bone of a lesser number +in the same segment. + +![Figure 2.1](./Pictures/1000020100000286000001D10AA6EC3093AC56D5.png) +_Figure 2.1 (left): An example armature, with effectored bones indicated in orange._ + +![Figure 2.2](./Pictures/100002010000030D0000026B7F70BE2E85BEF4BE.png) +_Figure 2.2 (right): Segmented representation of the example armature in 2.1._ + +## 7. Solving: + +Once the segments have been created, we create working copies of the +basis vectors and origins representing all descendant target and +effector transforms on the segment, as well as opposing basis vectors +(copies of the original basis vectors flipped about their transform's +origin). Below, we will call any copies representing target basis +vectors and their opposites **_c_basisTargets_**, and any copies +representing effector basis vectors and their opposites +**_c_basisEffectors_**. We will call any copies representing origins +**_c_originTargets_** and **_c_originEffectors_**. + +From there, the simplest and fastest version of the EWBIK procedure +starts from the outermost segments and works inward to the root segment, +doing as follows for each bone in each segment: + +1. Reset the working copies of the targets and effector to correspond + + to their original values. Subtract the current bone's origin from + all _c_basisTarget_, *c_basisEffector, c_originTarget, *and* + c_originEffector * points. + + a. Scale any *c_basisTargets *about their corresponding *c_originTargets *such that their distance from their corresponding _c_originTarget_ is no less than 1, and also no less than the magnitude of their corresponding _c_originTarget, _ + + b. Scale any *c_basisEffectors *about their corresponding _c_originEffectors_ such that their distance from their corresponding _c_originEffectors_ is no less than 1, and no less than the magnitude of their corresponding _c_originTargets._ + +2. Use The Minimizer to compute the rotation that brings all + + _c\_\*Effector_ points as close as possible to their corresponding + _c\_\*Target_ points. + + a. Clamp this rotation by the desired dampening parameter. + + b. Apply the clamped rotation to the bone. + +3. Check if the bone has violated any of its orientation constraints as + + a result of this rotation. If it has, rotate the bone to reside + within a valid region of its orientation constraint. + +4. If the bone's parent is contained in the current segment, repeat + this process for the parent bone. Otherwise, traversal for this + segment is complete. + +Repeat the whole process until the armature has converged or the +computation budget has been exceeded. + +## 8. Constraints: + +\*\* \*\*In theory, EWBIK should work well with any type of commonly used +joint constraint (doing so requires no more than implementing step 3 in +the introductory section). Unfortunately, in practice, most commonly +used joint constraints come with their own set of tradeoffs. An ideal +orientation constraint system would provide the following + +1. **Continuity**: No sharp concave corners for a bone to get "stuck" in. + +2. **Versatility**: It should be possible to specify any conceivable orientation region. + +3. **Expressiveness**: The desired shape of the allowable orientation region should be fully specifiable with as few parameters as possible. + +4. **Speed**: as few operations as possible should be required to determine if a Bone is within the valid orientation region, or to determine the smallest rotation that brings it back within a valid orientation (note that this follows naturally from the previous criterion). + +5. **Extensibility**: The constraints should be amenable to specification of any number of additional properties that may vary continuously throughout or beyond the allowable orientations region (hard vs soft boundaries, high vs low friction regions, etc). + +The simplest conceivable systems for orientation constraints are Euler +angles, which offer speed, but not much else; and Reach cones, which +offer continuity, speed, and extensibility, but lack expressiveness or +versatility. + +More versatile constraint systems allow for per-vertex specification of +a polygonal bounding region on the surface of a sphere. Much like reach +cones, these operate on the principle that any point which resides +outside of the polygonal region should be transformed so as to reside on +the edge or vertex to which it is closest (see _figure 3.1 for a planar +representation_). +Unfortunately, the fewer edges the polygonal region is specified by, the greater the probability that it is closest to a vertex of the polygon than to an edge, which often results in the point getting "stuck" in corners (see _Figure 3.2 for a planar representation_). + +![Figure 3.1](./Pictures/10000000000002C900000278AEBB2DF17488D353.png) +![Figure 3.2](./Pictures/10000000000002C90000027876C8370C9358FB94.png) + +_Figure 3.1 (left): A sampling of points outside of the bounding region, with dotted lines indicating the area on the bounding region to which the constraint would transform them._ + +_Figure 3.2 (right): Colored areas indicate the edge to which any point within that area would be transformed so as to reside within the bounding polygon. Red regions indicate areas where all points would be transformed onto a single vertex._ + +These discontinuous corners can cause problems for an IK solver because they create local minima that are very difficult for solvers to find a way out of. Worse still, if the solver does get out, it tends to do so very suddenly, leading to jarring and unnatural "pops" between solutions. + +A common workaround is to smooth these corners out using splines or bezier curves, (see _Figure 4_ for a planar representation). However, while this solves the discontinuity problem, it does so at a significant performance penalty, because the only way to check whether or not a point on a sphere lies within the bounding spline is by segmenting the spline into very tiny linear segments, which then each have to be checked individually. + +![Figure 4](./Pictures/10000000000002C900000278EEE925F5104E07BE.png) +_Figure 4: A sampling of points outside of a continuous, spline-based bounding region, with dotted lines indicating the area on the bounding region to which the constraint would transform the point._ + +Aside from the performance penalty, the spline scheme is also somewhat strange conceptually in that it attempts to overcome the consequences of relying on a polygonal specification by adding an approximation of curvature by an increase in the number of line segments, and then mapping that approximation onto a sphere -- a domain in which curvature is already the rule, and linearity is inherently unnatural. + +If we start from scratch, and develop our bounding scheme with the upfront understanding that it will be mapped onto a sphere, instead of using points and lines as the fundamental units of our bounding region, we should prefer instead to think in terms of circles. Under such a scheme, a bounding region similar to that defined by the seven parameters (vertices) of Figure 5.1 might be represented as that defined by the six parameters (three circle centers, and three radii) of Figure 5.2. + +![Figure 5.1](./Pictures/10000000000002070000018EA6B7A87AEB9D9F40.png) +![Figure 5.2](./Pictures/10000000000002070000018EDE8A6B18141900B0.png) + +_Figure 5.1 (left): A polygonal bounding region, specified in terms of points and lines._ + +_Figure 5.2 (right): An approximation of the polygonal bounding region in Figure 5.1, specified as a connected sequence of circles of varying radii._ + +Note that because the bounding "lines" connecting any pair of circles are tangent to both circles, the entire boundary remains continuous. Of course, since we're mapping onto a sphere, these tangent "lines" are actually themselves circles of whatever radius is sufficient to contact both circle pairs (see Figure 6). Because there are an infinite number of circles which can contact two circles (both on the plane and on a sphere) we are also free to specify varying degrees of curvature to the regions bounding any two circles, as depicted in Figures 7.1 and 7.2. + +![Figure 6](./Pictures/100000000000016C000002AAA2059A0E43B2B468.png) +![Figure 7.1](./Pictures/10000201000002020000018EF75E743EDC6A705E.png) +![Figure 7.2](./Pictures/1000000000000139000000CB360C51B9B2145043.png) +![Figure 7.3](./Pictures/1000000000000139000000CBF393B4C3206D97F3.png) +![Figure 7.4](./Pictures/1000000000000139000000CB22CAE13E99E3E24B.png) + +_Figure 6: Spherical representation of bounding regions._ + +_Figure 7.1 (middle): Two circles (dark outline) and a sampling of the circles which lie tangent to both._ + +_Figure 7.2 (right): Result of choosing connecting circles of various radii._ + +These optional curvatures give us similar flexibility to that of the +spline approach, but need specify only one additional radius value per +pair of sequence-circles they connect (as there can only be at most two +tangent-circles satisfying a given radius). We'll look at the specifics +of representing our bounding region on a sphere in the next section, but +for now we'll limit ourselves to the plane so as to more easily +illustrate the form of the algorithm for checking whether we are within +the bounding region. + +We will presume our bounding region is made up of the three full circles +(which we will refer to as "sequence-circles") connected by a dotted +line depicted in _figure 8(a),_ and the six tangent-circles depicted in +light gray outlines in _figure_ _8(a2)_. + +1. We check to see if the point is within the two sequence-circles depicted in blue and green in _figure 8(b)_. + + a. If the point is within either sequence-circle, we terminate, as the point is within the allowable region. + + b. Otherwise, we proceed to step 2. + +2. We check to see if the point is within either of the two triangles depicted in amethyst in figure 8(c), which are formed by the centers of our pair of sequence-circle with the centers of the adjacent pair of tangent-circles. + + a. If the point is within either triangle, we proceed to step 3 + + b. Otherwise, we skip to step 4. + +3. We check to see if the point is within either of the adjacent tangent circles as depicted in _figure 8(d)_. + + a. If it is within one of the tangent-circles, then we transform it away from the center of the tangent-circle within which it resides such that its distance from the tangent-circle's center is equal to the radius of that tangent-circle (_figure 8(d2)_). Then terminate, as we have finished moving the point to the boundary of the allowable region. + + b. If it isn't within either circle, then proceed to step 4. + +4. Proceed to the next pair in the sequence (_figure 8(f)_), treating the blue sequence-circle from the previous steps as if it were the new green sequence-circle, and treating the next circle in the sequence as being the new blue sequence-circle. Repeat steps 1 through 4 (_figure 8(g)_) until the blue sequence-circle under consideration is the last one in the sequence, then proceed to step 6. + +5. If the point wasn't in any of the regions checked so far, then by process of elimination, it resides outside of any of the sequence circles, and the regions connecting the sequence circles, and anywhere which should be transformed to the regions connecting the sequence circles. So we just iterate through each sequence-circle individually, store the translation that would bring us (h) to its boundary, and apply whichever of the translations was smallest (i). + +| ![a](./Pictures/10000000000002070000018E853FACED42A51700.png) | ![a2](./Pictures/10000000000002070000018E1025A91C2576C186.png) | +| :-----------------------------------------------------------: | :------------------------------------------------------------: | +| (a) | (a2) | + +| ![b](./Pictures/10000000000002070000018E9D87E7B297A94C9F.png) | ![c](./Pictures/10000000000002070000018EE63F4ECE1A82B606.png) | +| :-----------------------------------------------------------: | :-----------------------------------------------------------: | +| (b) | (c) | + +| ![d](./Pictures/10000000000002070000018EDF01F2A95A1519D7.png) | ![d2](./Pictures/10000000000002070000018ED76B18851DB9DC34.png) | +| :-----------------------------------------------------------: | :------------------------------------------------------------: | +| (d) | (d2) | + +![f](./Pictures/10000000000002070000018EBC567E962B9B4C87.png) +(f) + +(g) +![g1](./Pictures/10000000000002070000018E832AFC8FF38BF53F.png) +![g2](./Pictures/10000000000002070000018ECB3181C74F9EDC35.png) +![g3](./Pictures/10000000000002070000018E173E86C323891A74.png) +![g4](./Pictures/10000000000002070000018EEE6FC1E017012EDA.png) + +| ![h](./Pictures/10000000000002070000018E6996B4A5DF706332.png) | ![i](./Pictures/10000000000002070000018E845771BD15F39314.png) | +| :-----------------------------------------------------------: | :-----------------------------------------------------------: | +| (h) | (i) | + +_Figure 8 (black regions indicate areas which have been eliminated from +further consideration by previous steps in the algorithm)_ + +## 9. Kusudamas: + +The spherical representation of such a bounding region uses cones +instead of circles. We replace the centers of the circles with vectors +pointing away from the constraint's origin, and replace their radii +with the half-angle of that cone's apex. + +This representation may be considered a generalization of the reach +cone concept. We call it a "Kusudama", as it resembles the spherical +japanese papercraft models made by sewing or glueing pyramidal units +through a common vertex. + +We are free to choose the apex angle of our tangent cones (and +therefore the curvature of the bounding region connecting our +sequence-cones) however we wish, so long as the following properties +are met. + +1. As the sum of the apex angles of our pair of sequence-cones + + approaches zero, the apex angles of the tangent cones must + approach π. + +2. As the sum of the apex angles of our pair of sequence-cones + approaches π, the apex angles of the tangent cones must approach 0. + +A straightforward function for automatically determining a reasonable +tangent cone radius in absence of any information aside from the radii +of the two sequence cones being connected is + +$$\frac{\pi - {({\theta{a + \theta}b})}}{2}$$ + +Where $$\theta a$$ and $$\theta b$$ are the apex angles of the two +sequence-cones being connected. + +Once we've determined an appropriate radius for a given tangent-cone, +all that's left is to find the direction in which it should point. To +do this, take the vectors representing the axis of the sequence-cones +being connected, and scale them to a magnitude of +$$\cos\left(\frac{\theta_{s} + \theta_{t}}{2}\right)$$ +Where $\theta_{s}$ is the apex angle of the sequence-cone to which the +vector corresponds, and $\theta_{t}$ is the apex angle of the +tangent cone we're determining the direction of. The two planes which +run through and are perpendicular to the tips of these scaled axis +vectors will intersect on a line running through the unit sphere. The +two points where this line intersects the unit sphere may be treated +as vectors representing the directions of our tangent-cone axes. + +Our full procedure for checking collisions is much the same as in the +planar case, with only minor modifications to account for the change in +topology. It goes as follows: + +1. We check to see if the angle between the bone's direction and the + + direction of the axis of each sequence-cone is less than the apex + angle of the sequence cones under consideration. + + a. If it is, we terminate, as the bone orientation is within the allowable region. + + b. Otherwise, we proceed to step 2. + +2. For each adjacent pair of sequence cones, we check to see if the + + bone direction is within either of the tetrahedrons formed by the + constraint origin, the line connecting the vectors representing + the two sequence-cone axes to each other, and the lines connecting + each sequence-cone axis to each tangent cone axis. + + a. If the bone direction is within either tetrahedron, we proceed to step 3 + + b. Otherwise, we skip to step 4. + +3. We check to see if the angle between the bone's direction and the direction of the axis of the tangent-cone coinciding with this tetrahedron is less than the apex half-angle of the tangent-cone under consideration. + + a. If it is, then we find the rotation which would transform the bone direction away from the tangent-cone in which it resides such that the angle between the bone direction and the tangent-cone's direction is equal to the apex half-angle of that tangent-cone. We do not terminate or apply this rotation. If the angle of this rotation is less than any currently stored rotation, we replace that rotation with this rotation, otherwise, we ignore this rotation. We then proceed to step 4. + + b. If it isn't, then proceed to step 4. + +4. We shift to the next pair of adjacent sequence cones and repeat steps 1 through 4 until one of the sequence cones under consideration is the last cone defined. Then proceed to step 5 + +5. We iterate again through each sequence-cone individually, and for each sequence-cone find the rotation which would transform the bone such that its angle from that sequence-cone axis is less than half the apex-angle of that sequence cone. We update the currently stored smallest rotation whenever we find a smaller rotation. (In effect, preferring to rotate the bone to the nearest constraint boundary) + +6. We apply the currently stored smallest rotation, and terminate. + +Note that as presented above, Kusudamas are only constraining the +direction (aka swing) of the bone. To constrain their axial orientation +(aka twist), a swing-twist decomposition may be used (as is common for +reach cone constraints). For best results, the constraint axis against +which twist is determined should be pointing as far away as possible +from the constraint\'s allowable region. + +**11. Robustness under enhancement:** + +In the canonical form presented above, Kusudumas empirically play quite +well with the EWBIK procedure. However, because the Kusudama scheme is +flexible enough to allow for "soft" or "springy" constraints, it is +possible to create a constraint landscape in which the solver undulates +around some optimum^[^6]^ . If it is absolutely critical that such +undulation be avoided, we can do so by incurring only a minor +performance penalty to check that the RMSD of our solution after +rotating and constraining a bone is less than or equal to our RMSD +before rotating and constraining the bone. If our RMSD is greater, we +simply discard our rotation + constraint transformation that step, and +allow the other bones in the chain to pick up the slack. + +
+ +[^1]: [_https://github.com/EGjoni/Everything-Will-Be-IK_](https://github.com/EGjoni/Everything-Will-Be-IK) +[^2]: [_https://github.com/EGjoni/Everything-Will-Be-IK-Processing_](https://github.com/EGjoni/Everything-Will-Be-IK-Processing) +[^3]: + There is some terminological ambiguity as to what constitutes + "Coordinate Descent." Here, as is the case with the original CCD IK + algorithm, Coordinate Descent is used to refer to problems in which + each coordinate (e.g, a single variable at some cross section of a + multivariable function) can be precisely minimized. Cyclic + Coordinate Descent guarantees that so long as the function being + minimized is continuous and convex, successive minimization along + any permutation of its coordinates will converge on the global + minimum of the function (so long as evaluation of any coordinate is + preferred by no more than a constant factor). + + Procedures where multiple variables are minimized per iteration are + most often referred to as Blockwise Coordinate Descent. + +[^4]: + With single precision floating point, QCP may under some + degenerate conditions require renormalization of the resultant + quaternion. This renormalization does not affect solution quality, + but may be worth considering for anyone looking to hyper-optimize + performance, as it does require an additional square root operation. + In theory, double precision floating point should occasionally + require similar rectification, though for somewhat mysterious + reasons it never seems to in practice. + +[^5]: + This can occur incidentally, where one set of target-effector + point-pairs happens to be closer to the origin of a bone being + solved for than another set of target-effector point-pairs. For this + reason, the full EWBIK procedure scales the basis vectors of any + target and effector transforms by the distance between the target + transform's origin and the origin of the transform of the bone being + solved for. + +[^6]: + In theory, even the simple canonical form of kusudamas should be + subject to this. Though, in practice it's almost never an issue + until soft constraints enter the mix. diff --git a/modules/many_bone_ik/doc_classes/IKBone3D.xml b/modules/many_bone_ik/doc_classes/IKBone3D.xml new file mode 100644 index 000000000000..d7eb00fa46f1 --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKBone3D.xml @@ -0,0 +1,50 @@ + + + + A class representing a 3D bone in an Inverse Kinematics system. + + + The IKBone3D class represents a 3D bone in an Inverse Kinematics (IK) system. It provides methods to get and set constraints, pins, and check if the bone is pinned. + + + + + + + + Returns the IKKusudama3D object representing the constraint of the bone. + + + + + + Returns the IKNode3D object representing the orientation transform of the constraint. + + + + + + Returns the IKNode3D object representing the twist transform of the constraint. + + + + + + Returns the IKEffector3D object representing the pin of the bone. + + + + + + Returns true if the bone is pinned, false otherwise. + + + + + + + Sets the IKEffector3D object representing the pin of the bone. + + + + diff --git a/modules/many_bone_ik/doc_classes/IKBoneSegment3D.xml b/modules/many_bone_ik/doc_classes/IKBoneSegment3D.xml new file mode 100644 index 000000000000..0773e79ed95e --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKBoneSegment3D.xml @@ -0,0 +1,26 @@ + + + + A class representing a 3D bone segment in an Inverse Kinematics system. + + + The IKBoneSegment3D class represents a 3D bone segment in an Inverse Kinematics (IK) system. It provides methods to get the IK bone associated with the segment and check if the segment is pinned. + + + + + + + + + Returns the IKBone3D object associated with the given bone index. + + + + + + Returns true if the bone segment is pinned, false otherwise. + + + + diff --git a/modules/many_bone_ik/doc_classes/IKEffector3D.xml b/modules/many_bone_ik/doc_classes/IKEffector3D.xml new file mode 100644 index 000000000000..58ce01e189d0 --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKEffector3D.xml @@ -0,0 +1,36 @@ + + + + A class representing a 3D effector in an Inverse Kinematics system. + + + The IKEffector3D class represents an effector in a 3D Inverse Kinematics (IK) system. An effector is the end point of a chain of bones, and its position is used to calculate the rotations of all preceding bones in the IK chain. This class provides methods for getting and setting the target node of the effector. + + + + + + + + Returns the NodePath of the target node for this effector. The target node is the node that the effector aims to reach. + + + + + + + + Sets the target node for this effector using a Skeleton3D and a NodePath. The effector will aim to reach this target node. + + + + + + Pins can be ultimate targets or intermediary targets. + By default, each pin is treated as an ultimate target, meaning any bones which are ancestors to that pin's effector are not aware of any pins which are the target of bones descending from that effector. + Changing this value makes ancestor bones aware and determines how much less they care with each level down. + Presuming all descendants of this pin have a falloff of 1, then: A pin falloff of 0 on this pin means only this pin is reported to ancestors. A pin falloff of 1 on this pin means ancestors care about all descendant pins equally (after accounting for their pin weight), regardless of how many levels down they are. A pin falloff of 0.5 means each descendant pin is used about half as much as its ancestor. The pin's falloff of a descendant is taken into account for each level with each level. + Meaning, if this pin has a falloff of 1 and its descendent has a falloff of 0.5, then it will be reported with total weight. Then, its descendant will be calculated with total weight; the descendant of that pin will be calculated with half weight. Finally, the descendant of that one's descendant will be with calculated quarter weight. + + + diff --git a/modules/many_bone_ik/doc_classes/IKEffectorTemplate3D.xml b/modules/many_bone_ik/doc_classes/IKEffectorTemplate3D.xml new file mode 100644 index 000000000000..e0c695472e01 --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKEffectorTemplate3D.xml @@ -0,0 +1,26 @@ + + + + A template class for creating 3D effectors in an Inverse Kinematics system. + + + The IKEffectorTemplate3D class provides a template for creating effectors in a 3D Inverse Kinematics (IK) system. It includes properties for direction priorities, passthrough factor, target node, and weight. These properties can be set to customize the behavior of the effector. + + + + + + Specifies the priority of movement in each direction (X, Y, Z). Higher values indicate higher priority. + + + + + + + The NodePath of the target node that the effector aims to reach. + + + The weight of the effector. This determines how much the effector's position influences the IK calculation. Higher values result in greater influence. + + + diff --git a/modules/many_bone_ik/doc_classes/IKKusudama3D.xml b/modules/many_bone_ik/doc_classes/IKKusudama3D.xml new file mode 100644 index 000000000000..d1ab073a8542 --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKKusudama3D.xml @@ -0,0 +1,26 @@ + + + + Kusudamas are sequential collections of reach cones that form a path through their tangents. + + + A Kusudama represents a ball with multiple reach-cones protruding from it. These reach cones are arranged in sequence, creating an automatic smooth path from one cone to another. The term 'Kusudama' originates from Japanese, referring to a ball with multiple cones protruding from it. + + + + + + + + This method returns an array of limit cones associated with the Kusudama. + + + + + + + This method sets the limit cones associated with the Kusudama. + + + + diff --git a/modules/many_bone_ik/doc_classes/IKLimitCone3D.xml b/modules/many_bone_ik/doc_classes/IKLimitCone3D.xml new file mode 100644 index 000000000000..05b2d596dff6 --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKLimitCone3D.xml @@ -0,0 +1,11 @@ + + + + A 3D cone used to open the rotation of a ball-and-socket joint in inverse kinematics calculations. + + + A open cone is a cone freeing the rotation of a ball-and-socket joint. A open cone is defined as a vector pointing in the direction which the cone is opening, and a radius (in radians) representing how much the cone is opening up. + + + + diff --git a/modules/many_bone_ik/doc_classes/IKNode3D.xml b/modules/many_bone_ik/doc_classes/IKNode3D.xml new file mode 100644 index 000000000000..969341bd8f3c --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKNode3D.xml @@ -0,0 +1,87 @@ + + + + A 3D node used for inverse kinematics calculations. + + + The IKNode3D class provides a node that can be used in an inverse kinematics chain. It includes methods for getting and setting the global and local transforms of the node, as well as disabling scaling and converting between local and global coordinates. + + + + + + + + Returns the global transform of this node. + + + + + + Returns the parent of this node. + + + + + + Returns the local transform of this node. + + + + + + Returns whether scaling is disabled for this node. + + + + + + + + Rotates the local transform of this node with a global basis. If propagate is true, the rotation is also applied to the children of this node. + + + + + + + Disables or enables scaling for this node. + + + + + + + Sets the global transform of this node. + + + + + + + Sets the parent of this node. + + + + + + + Sets the local transform of this node. + + + + + + + Converts a point from local space to global space. + + + + + + + Converts a point from global space to local space. + + + + diff --git a/modules/many_bone_ik/doc_classes/IKRay3D.xml b/modules/many_bone_ik/doc_classes/IKRay3D.xml new file mode 100644 index 000000000000..c2ef554912dd --- /dev/null +++ b/modules/many_bone_ik/doc_classes/IKRay3D.xml @@ -0,0 +1,35 @@ + + + + A class representing a 3D ray in an Inverse Kinematics system. + + + The IKRay3D class represents a 3D ray in an Inverse Kinematics (IK) system. It provides methods to get the heading of the ray, check if the ray intersects a plane, and get a scaled projection of the ray. + + + + + + + + Returns the heading of the ray as a Vector3. + + + + + + + + + Checks if the ray intersects a plane defined by three points (a, b, c). Returns the intersection point as a Vector3, or null if there is no intersection. + + + + + + + Returns the scaled projection of the ray onto the input vector. + + + + diff --git a/modules/many_bone_ik/doc_classes/ManyBoneIK3D.xml b/modules/many_bone_ik/doc_classes/ManyBoneIK3D.xml new file mode 100644 index 000000000000..dab81b413d29 --- /dev/null +++ b/modules/many_bone_ik/doc_classes/ManyBoneIK3D.xml @@ -0,0 +1,298 @@ + + + + A general inverse kinematics system with constraints. + + + The ManyBoneIK3D class provides a comprehensive system for inverse kinematics (IK) with support for various constraints. It allows for complex IK setups involving multiple bones, each with their own constraints and parameters. + + + + + + + + + Returns the index of the constraint with the given name. If no such constraint exists, returns -1. + + + + + + + + + + + + Returns the total number of bones in the IK system. + + + + + + Returns the total number of constraints in the IK system. + + + + + + + Returns the name of the constraint at the specified index. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the center of the limit cone for the kusudama at the specified index. + + + + + + + Returns the count of limit cones for the kusudama at the specified index. + + + + + + + + Returns the radius of the limit cone for the kusudama at the specified index. + + + + + + + + + + + + Returns the total number of pins in the IK system. + + + + + + + Returns the direction priorities of the pin at the specified index. + + + + + + + Returns whether the pin at the specified index is enabled or not. + + + + + + + Returns the passthrough factor of the pin at the specified index. + + + + + + + Returns the weight of the pin at the specified index. + + + + + + + + + + + + Registers the skeleton to the IK system. This should be called after all bones and constraints have been added to the system. + + + + + + + + + + + + Resets all constraints in the IK system to their default state. + + + + + + + Sets the total number of constraints. + + + + + + + + + + + + + + + + + + + + Marks the IK system as dirty, indicating that it needs to be updated. This should be called whenever a significant change is made to the system. + + + + + + + + Sets the name of the bone at the specified pin index. + + + + + + + + + + + + + + + + + + + + + + + Sets the center of the limit cone for the kusudama at the specified index. + + + + + + + + Sets the count of limit cones for the kusudama at the specified index. + + + + + + + + + Sets the radius of the limit cone for the kusudama at the specified index. + + + + + + + + + + + + + + + + + + + + + Sets the direction priorities of the pin at the specified index. + + + + + + + + Sets the passthrough factor of the pin at the specified index. + + + + + + + + Sets the weight of the pin at the specified index. + + + + + + + + + + + + + + + + + + + A boolean value indicating whether the IK system is in constraint mode or not. + + + The default maximum number of radians a bone is allowed to rotate per solver iteration. The lower this value, the more natural the pose results. However, this will increase the number of iterations_per_frame the solver requires to converge. + + + The number of iterations performed by the solver per frame. + + + The number of stabilization passes performed by the solver. This can help to improve the stability of the IK solution. + + + The index of the bone currently selected in the user interface. + + + diff --git a/modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.cpp b/modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.cpp new file mode 100644 index 000000000000..5481406c28e2 --- /dev/null +++ b/modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.cpp @@ -0,0 +1,600 @@ +/**************************************************************************/ +/* many_bone_ik_3d_gizmo_plugin.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "core/math/transform_3d.h" +#include "core/templates/local_vector.h" +#include "editor/editor_interface.h" +#include "editor/editor_node.h" +#include "editor/many_bone_ik_shader.h" +#include "editor/plugins/node_3d_editor_gizmos.h" +#include "editor/plugins/node_3d_editor_plugin.h" +#include "scene/3d/mesh_instance_3d.h" +#include "scene/3d/skeleton_3d.h" +#include "scene/resources/surface_tool.h" + +#include "../src/ik_bone_3d.h" +#include "../src/ik_kusudama_3d.h" +#include "../src/many_bone_ik_3d.h" +#include "many_bone_ik_3d_gizmo_plugin.h" + +#ifdef TOOLS_ENABLED +#include "editor/editor_node.h" +#include "editor/editor_undo_redo_manager.h" +#endif + +void ManyBoneIK3DGizmoPlugin::_bind_methods() { + ClassDB::bind_method(D_METHOD("_get_gizmo_name"), &ManyBoneIK3DGizmoPlugin::get_gizmo_name); +} + +bool ManyBoneIK3DGizmoPlugin::has_gizmo(Node3D *p_spatial) { + return cast_to(p_spatial); +} + +String ManyBoneIK3DGizmoPlugin::get_gizmo_name() const { + return "ManyBoneIK3D"; +} + +void ManyBoneIK3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { + many_bone_ik = Object::cast_to(p_gizmo->get_node_3d()); + Skeleton3D *skeleton = Object::cast_to(p_gizmo->get_node_3d())->get_skeleton(); + p_gizmo->clear(); + if (!skeleton || !skeleton->get_bone_count()) { + return; + } + if (handles_mesh_instance && !handles_mesh_instance->is_inside_tree()) { + skeleton->call_deferred("add_child", handles_mesh_instance); + handles_mesh_instance->set_skeleton_path(NodePath("")); + } + int selected = -1; + Skeleton3DEditor *se = Skeleton3DEditor::get_singleton(); + if (se) { + selected = se->get_selected_bone(); + } + Color selected_bone_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/selected_bone"); + + int current_bone_index = 0; + Vector bones_to_process = skeleton->get_parentless_bones(); + + while (bones_to_process.size() > current_bone_index) { + int current_bone_idx = bones_to_process[current_bone_index]; + + Color current_bone_color = (current_bone_idx == selected) ? selected_bone_color : bone_color; + + for (const Ref &segmented_skeleton : many_bone_ik->get_segmented_skeletons()) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(current_bone_idx); + if (ik_bone.is_null() || ik_bone->get_constraint().is_null()) { + continue; + } + create_gizmo_mesh(current_bone_idx, ik_bone, p_gizmo, current_bone_color, skeleton, many_bone_ik); + } + + current_bone_index++; + + Vector child_bones_vector; + child_bones_vector = skeleton->get_bone_children(current_bone_idx); + int child_bones_size = child_bones_vector.size(); + for (int i = 0; i < child_bones_size; i++) { + // Something wrong. + if (child_bones_vector[i] < 0) { + continue; + } + // Add the bone's children to the list of bones to be processed. + bones_to_process.push_back(child_bones_vector[i]); + } + } +} + +void ManyBoneIK3DGizmoPlugin::create_gizmo_mesh(BoneId current_bone_idx, Ref ik_bone, EditorNode3DGizmo *p_gizmo, Color current_bone_color, Skeleton3D *many_bone_ik_skeleton, ManyBoneIK3D *p_many_bone_ik) { + Ref ik_kusudama = ik_bone->get_constraint(); + if (ik_kusudama.is_null()) { + return; + } + const TypedArray &open_cones = ik_kusudama->get_open_cones(); + if (!open_cones.size()) { + return; + } + BoneId parent_idx = many_bone_ik_skeleton->get_bone_parent(current_bone_idx); + LocalVector bones; + LocalVector weights; + bones.resize(4); + weights.resize(4); + for (int i = 0; i < 4; i++) { + bones[i] = 0; + weights[i] = 0; + } + bones[0] = parent_idx; + weights[0] = 1; + + Transform3D constraint_relative_to_the_skeleton = p_many_bone_ik->get_relative_transform(p_many_bone_ik->get_owner()).affine_inverse() * many_bone_ik_skeleton->get_relative_transform(many_bone_ik_skeleton->get_owner()) * p_many_bone_ik->get_godot_skeleton_transform_inverse() * ik_bone->get_constraint_orientation_transform()->get_global_transform(); + PackedFloat32Array kusudama_open_cones; + Ref kusudama = ik_bone->get_constraint(); + for (int32_t cone_i = 0; cone_i < open_cones.size(); cone_i++) { + Ref open_cone = open_cones[cone_i]; + Vector3 control_point = open_cone->get_control_point(); + PackedFloat32Array new_kusudama_open_cones; + new_kusudama_open_cones.resize(4 * 3); + new_kusudama_open_cones.fill(0.0f); + new_kusudama_open_cones.write[0] = control_point.x; + new_kusudama_open_cones.write[1] = control_point.y; + new_kusudama_open_cones.write[2] = control_point.z; + float radius = open_cone->get_radius(); + new_kusudama_open_cones.write[3] = radius; + + Vector3 tangent_center_1 = open_cone->get_tangent_circle_center_next_1(); + new_kusudama_open_cones.write[4] = tangent_center_1.x; + new_kusudama_open_cones.write[5] = tangent_center_1.y; + new_kusudama_open_cones.write[6] = tangent_center_1.z; + float tangent_radius = open_cone->get_tangent_circle_radius_next(); + new_kusudama_open_cones.write[7] = tangent_radius; + + Vector3 tangent_center_2 = open_cone->get_tangent_circle_center_next_2(); + new_kusudama_open_cones.write[8] = tangent_center_2.x; + new_kusudama_open_cones.write[9] = tangent_center_2.y; + new_kusudama_open_cones.write[10] = tangent_center_2.z; + new_kusudama_open_cones.write[11] = tangent_radius; + + kusudama_open_cones.append_array(new_kusudama_open_cones); + } + if (current_bone_idx >= many_bone_ik_skeleton->get_bone_count()) { + return; + } + if (current_bone_idx == -1) { + return; + } + if (parent_idx >= many_bone_ik_skeleton->get_bone_count()) { + return; + } + if (parent_idx <= -1) { + return; + } + // Code copied from the SphereMesh. + int rings = 8; + + int i = 0, j = 0, prevrow = 0, thisrow = 0, point = 0; + float x, y, z; + + Vector points; + Vector normals; + Vector indices; + point = 0; + + thisrow = 0; + prevrow = 0; + for (j = 0; j <= (rings + 1); j++) { + int radial_segments = 8; + float v = j; + float w; + + v /= (rings + 1); + w = sin(Math_PI * v); + y = cos(Math_PI * v); + + for (i = 0; i <= radial_segments; i++) { + float u = i; + u /= radial_segments; + + x = sin(u * Math_TAU); + z = cos(u * Math_TAU); + + Vector3 p = Vector3(x * w, y, z * w) * 0.02f; + points.push_back(p); + Vector3 normal = Vector3(x * w, y, z * w); + normals.push_back(normal.normalized()); + point++; + + if (i > 0 && j > 0) { + indices.push_back(prevrow + i - 1); + indices.push_back(prevrow + i); + indices.push_back(thisrow + i - 1); + + indices.push_back(prevrow + i); + indices.push_back(thisrow + i); + indices.push_back(thisrow + i - 1); + }; + }; + + prevrow = thisrow; + thisrow = point; + } + if (!indices.size()) { + return; + } + Ref surface_tool; + surface_tool.instantiate(); + surface_tool->begin(Mesh::PRIMITIVE_TRIANGLES); + const int32_t MESH_CUSTOM_0 = 0; + surface_tool->set_custom_format(MESH_CUSTOM_0, SurfaceTool::CustomFormat::CUSTOM_RGBA_HALF); + for (int32_t point_i = 0; point_i < points.size(); point_i++) { + surface_tool->set_bones(bones); + surface_tool->set_weights(weights); + Color c; + c.r = normals[point_i].x; + c.g = normals[point_i].y; + c.b = normals[point_i].z; + c.a = 0; + surface_tool->set_custom(MESH_CUSTOM_0, c); + surface_tool->set_normal(normals[point_i]); + surface_tool->add_vertex(points[point_i]); + } + for (int32_t index_i : indices) { + surface_tool->add_index(index_i); + } + Ref kusudama_material; + kusudama_material.instantiate(); + kusudama_material->set_shader(kusudama_shader); + kusudama_material->set_shader_parameter("cone_sequence", kusudama_open_cones); + int32_t cone_count = kusudama->get_open_cones().size(); + kusudama_material->set_shader_parameter("cone_count", cone_count); + kusudama_material->set_shader_parameter("kusudama_color", current_bone_color); + p_gizmo->add_mesh( + surface_tool->commit(Ref(), RS::ARRAY_CUSTOM_RGBA_HALF << RS::ARRAY_FORMAT_CUSTOM0_SHIFT), + kusudama_material, constraint_relative_to_the_skeleton); +} + +int32_t ManyBoneIK3DGizmoPlugin::get_priority() const { + return -1; +} + +EditorPluginManyBoneIK::EditorPluginManyBoneIK() { + Ref many_bone_ik_gizmo_plugin; + many_bone_ik_gizmo_plugin.instantiate(); + Node3DEditor::get_singleton()->add_gizmo_plugin(many_bone_ik_gizmo_plugin); +} + +int ManyBoneIK3DGizmoPlugin::subgizmos_intersect_ray(const EditorNode3DGizmo *p_gizmo, Camera3D *p_camera, const Vector2 &p_point) const { + Skeleton3D *skeleton = Object::cast_to(p_gizmo->get_node_3d())->get_skeleton(); + ERR_FAIL_COND_V(!skeleton, -1); + + if (!edit_mode) { + return -1; + } + + if (Node3DEditor::get_singleton()->get_tool_mode() != Node3DEditor::TOOL_MODE_SELECT) { + return -1; + } + + // Select bone. + real_t grab_threshold = 4 * EDSCALE; + Vector3 ray_from = p_camera->get_global_transform().origin; + Transform3D gt = skeleton->get_global_transform(); + int closest_idx = -1; + real_t closest_dist = 1e10; + const int bone_count = skeleton->get_bone_count(); + + for (int i = 0; i < bone_count; i++) { + Vector3 joint_pos_3d = gt.xform(skeleton->get_bone_global_pose(i).origin); + Vector2 joint_pos_2d = p_camera->unproject_position(joint_pos_3d); + real_t dist_3d = ray_from.distance_to(joint_pos_3d); + real_t dist_2d = p_point.distance_to(joint_pos_2d); + if (dist_2d < grab_threshold && dist_3d < closest_dist) { + closest_dist = dist_3d; + closest_idx = i; + } + } + + if (closest_idx >= 0) { + many_bone_ik->set_ui_selected_bone(closest_idx); + return closest_idx; + } + + many_bone_ik->set_ui_selected_bone(-1); + return -1; +} + +Transform3D ManyBoneIK3DGizmoPlugin::get_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id) const { + Skeleton3D *skeleton = Object::cast_to(p_gizmo->get_node_3d())->get_skeleton(); + ERR_FAIL_COND_V(!skeleton, Transform3D()); + + Transform3D constraint_relative_to_the_skeleton = many_bone_ik->get_relative_transform(many_bone_ik->get_owner()).affine_inverse() * + skeleton->get_relative_transform(skeleton->get_owner()) * many_bone_ik->get_godot_skeleton_transform_inverse(); + return constraint_relative_to_the_skeleton * skeleton->get_bone_global_pose(p_id); +} + +void ManyBoneIK3DGizmoPlugin::set_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id, Transform3D p_transform) { + Skeleton3D *skeleton = Object::cast_to(p_gizmo->get_node_3d())->get_skeleton(); + ERR_FAIL_COND(!skeleton); + // Prepare for global to local. + Transform3D original_to_local; + int parent_idx = skeleton->get_bone_parent(p_id); + if (parent_idx >= 0) { + original_to_local = skeleton->get_bone_global_pose(parent_idx); + } + Basis to_local = original_to_local.get_basis().inverse(); + + // Prepare transform. + Transform3D t; + + // Basis. + t.basis = to_local * p_transform.get_basis(); + + Transform3D constraint_relative_to_the_skeleton = many_bone_ik->get_relative_transform(many_bone_ik->get_owner()).affine_inverse() * + skeleton->get_relative_transform(skeleton->get_owner()) * many_bone_ik->get_godot_skeleton_transform_inverse(); + p_transform = constraint_relative_to_the_skeleton.affine_inverse() * p_transform; + // Origin. + Vector3 orig = skeleton->get_bone_pose(p_id).origin; + Vector3 sub = p_transform.origin - skeleton->get_bone_global_pose(p_id).origin; + t.origin = orig + to_local.xform(sub); + + // Apply transform. + skeleton->set_bone_pose_position(p_id, t.origin); + skeleton->set_bone_pose_rotation(p_id, t.basis.get_rotation_quaternion()); + skeleton->set_bone_pose_scale(p_id, t.basis.get_scale()); + many_bone_ik->update_gizmos(); +} + +void ManyBoneIK3DGizmoPlugin::commit_subgizmos(const EditorNode3DGizmo *p_gizmo, const Vector &p_ids, const Vector &p_restore, bool p_cancel) { + Skeleton3D *skeleton = Object::cast_to(p_gizmo->get_node_3d())->get_skeleton(); + ERR_FAIL_COND(!skeleton); + + Node3DEditor *ne = Node3DEditor::get_singleton(); + ERR_FAIL_COND(!ne); + + EditorUndoRedoManager *ur = EditorUndoRedoManager::get_singleton(); + ur->create_action(TTR("Set Bone Transform")); + if (ne->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || ne->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) { + for (int i = 0; i < p_ids.size(); i++) { + int32_t constraint_i = many_bone_ik->find_constraint(skeleton->get_bone_name(p_ids[i])); + float from_original = many_bone_ik->get_joint_twist(constraint_i).x; + float range = many_bone_ik->get_joint_twist(constraint_i).y; + ur->add_do_method(many_bone_ik, "set_kusudama_twist", constraint_i, Vector2(skeleton->get_bone_pose(p_ids[i]).get_basis().get_euler().y, range)); + ur->add_undo_method(many_bone_ik, "set_kusudama_twist", constraint_i, Vector2(from_original, range)); + ur->add_do_method(many_bone_ik, "set_dirty"); + ur->add_undo_method(many_bone_ik, "set_dirty"); + } + } + ur->commit_action(); +} + +void ManyBoneIK3DGizmoPlugin::_draw_handles() { + if (!many_bone_ik) { + return; + } + Skeleton3D *skeleton = many_bone_ik->get_skeleton(); + ERR_FAIL_COND(!skeleton); + const int bone_count = skeleton->get_bone_count(); + + handles_mesh->clear_surfaces(); + + if (bone_count) { + handles_mesh_instance->show(); + + handles_mesh->surface_begin(Mesh::PRIMITIVE_POINTS); + + for (int i = 0; i < bone_count; i++) { + Color c; + if (i == many_bone_ik->get_ui_selected_bone()) { + c = Color(1, 1, 0); + } else { + c = Color(0.1, 0.25, 0.8); + } + Vector3 point = skeleton->get_bone_global_pose(i).origin; + handles_mesh->surface_set_color(c); + handles_mesh->surface_add_vertex(point); + } + handles_mesh->surface_end(); + handles_mesh->surface_set_material(0, handle_material); + } else { + handles_mesh_instance->hide(); + } +} + +void ManyBoneIK3DGizmoPlugin::_draw_gizmo() { + if (!many_bone_ik) { + return; + } + Skeleton3D *skeleton = many_bone_ik->get_skeleton(); + if (!skeleton) { + return; + } + + // If you call get_bone_global_pose() while drawing the surface, such as toggle rest mode, + // the skeleton update will be done first and + // the drawing surface will be interrupted once and an error will occur. + skeleton->force_update_all_dirty_bones(); + + // Handles. + if (edit_mode) { + _draw_handles(); + } else { + _hide_handles(); + } +} + +void ManyBoneIK3DGizmoPlugin::_update_gizmo_visible() { + if (!many_bone_ik) { + return; + } + Skeleton3D *skeleton = many_bone_ik->get_skeleton(); + if (!skeleton) { + return; + } + _subgizmo_selection_change(); + if (edit_mode) { + int32_t selected_bone = many_bone_ik->get_ui_selected_bone(); + if (selected_bone == -1) { +#ifdef TOOLS_ENABLED + skeleton->set_transform_gizmo_visible(false); +#endif + } else { +#ifdef TOOLS_ENABLED + if (skeleton->is_bone_enabled(selected_bone) && !skeleton->is_show_rest_only()) { + skeleton->set_transform_gizmo_visible(true); + } else { + skeleton->set_transform_gizmo_visible(false); + } +#endif + } + } else { +#ifdef TOOLS_ENABLED + skeleton->set_transform_gizmo_visible(true); +#endif + } + _draw_gizmo(); +} + +void ManyBoneIK3DGizmoPlugin::_subgizmo_selection_change() { + if (!many_bone_ik) { + return; + } + Skeleton3D *skeleton = many_bone_ik->get_skeleton(); + if (!skeleton) { + return; + } + // Once validated by subgizmos_intersect_ray, but required if through inspector's bones tree. + if (!edit_mode) { + skeleton->clear_subgizmo_selection(); + return; + } + int selected = -1; + if (many_bone_ik) { + selected = many_bone_ik->get_ui_selected_bone(); + } + + if (selected >= 0) { + Vector> gizmos = skeleton->get_gizmos(); + for (int i = 0; i < gizmos.size(); i++) { + Ref gizmo = gizmos[i]; + if (!gizmo.is_valid()) { + continue; + } + Ref plugin = gizmo->get_plugin(); + if (!plugin.is_valid()) { + continue; + } + skeleton->set_subgizmo_selection(gizmo, selected, skeleton->get_bone_global_pose(selected)); + break; + } + } else { + skeleton->clear_subgizmo_selection(); + } +} + +void ManyBoneIK3DGizmoPlugin::edit_mode_toggled(const bool pressed) { + edit_mode = pressed; + _update_gizmo_visible(); +} + +void ManyBoneIK3DGizmoPlugin::_hide_handles() { + handles_mesh_instance->hide(); +} + +void ManyBoneIK3DGizmoPlugin::_notifications(int32_t p_what) { + switch (p_what) { + case EditorNode3DGizmoPlugin::NOTIFICATION_POSTINITIALIZE: { + kusudama_shader->set_code(MANY_BONE_IKKUSUDAMA_SHADER); + handle_material = Ref(memnew(ShaderMaterial)); + handle_shader = Ref(memnew(Shader)); + handle_shader->set_code(R"( +// Skeleton 3D gizmo handle shader. + +shader_type spatial; +render_mode unshaded, shadows_disabled, depth_draw_always; +uniform sampler2D texture_albedo : source_color; +uniform float point_size : hint_range(0,128) = 32; +void vertex() { + if (!OUTPUT_IS_SRGB) { + COLOR.rgb = mix( pow((COLOR.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)), vec3(2.4)), COLOR.rgb* (1.0 / 12.92), lessThan(COLOR.rgb,vec3(0.04045)) ); + } + VERTEX = VERTEX; + POSITION = PROJECTION_MATRIX * VIEW_MATRIX * MODEL_MATRIX * vec4(VERTEX.xyz, 1.0); + POSITION.z = mix(POSITION.z, 0, 0.999); + POINT_SIZE = point_size; +} +void fragment() { + vec4 albedo_tex = texture(texture_albedo,POINT_COORD); + vec3 col = albedo_tex.rgb + COLOR.rgb; + col = vec3(min(col.r,1.0),min(col.g,1.0),min(col.b,1.0)); + ALBEDO = col; + if (albedo_tex.a < 0.5) { discard; } + ALPHA = albedo_tex.a; +} +)"); + handle_material->set_shader(handle_shader); + Ref handle = EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("EditorBoneHandle"), SNAME("EditorIcons")); + handle_material->set_shader_parameter("point_size", handle->get_width()); + handle_material->set_shader_parameter("texture_albedo", handle); + + handles_mesh_instance = memnew(MeshInstance3D); + handles_mesh_instance->set_cast_shadows_setting(GeometryInstance3D::SHADOW_CASTING_SETTING_OFF); + handles_mesh_instance->set_mesh(handles_mesh); + edit_mode_button = memnew(Button); + edit_mode_button->set_text(TTR("Edit Mode")); + edit_mode_button->set_flat(true); + edit_mode_button->set_toggle_mode(true); + edit_mode_button->set_focus_mode(Control::FOCUS_NONE); + edit_mode_button->set_tooltip_text(TTR("Edit Mode\nShow buttons on joints.")); + edit_mode_button->connect("toggled", callable_mp(this, &ManyBoneIK3DGizmoPlugin::edit_mode_toggled)); + edit_mode = false; + create_material("lines_primary", Color(0.93725490570068, 0.19215686619282, 0.22352941334248), true, true, true); + + unselected_mat = Ref(memnew(StandardMaterial3D)); + unselected_mat->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED); + unselected_mat->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA); + unselected_mat->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true); + unselected_mat->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true); + + selected_mat = Ref(memnew(ShaderMaterial)); + selected_sh = Ref(memnew(Shader)); + selected_sh->set_code(R"( +// Skeleton 3D gizmo bones shader. + +shader_type spatial; +render_mode unshaded, shadows_disabled; +void vertex() { + if (!OUTPUT_IS_SRGB) { + COLOR.rgb = mix( pow((COLOR.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)), vec3(2.4)), COLOR.rgb* (1.0 / 12.92), lessThan(COLOR.rgb,vec3(0.04045)) ); + } + VERTEX = VERTEX; + POSITION = PROJECTION_MATRIX * VIEW_MATRIX * MODEL_MATRIX * vec4(VERTEX.xyz, 1.0); + POSITION.z = mix(POSITION.z, POSITION.w, 0.999); +} +void fragment() { + ALBEDO = COLOR.rgb; + ALPHA = COLOR.a; +} +)"); + selected_mat->set_shader(selected_sh); + + // Register properties in editor settings. + EDITOR_DEF("editors/3d_gizmos/gizmo_colors/skeleton", Color(1, 0.8, 0.4)); + EDITOR_DEF("editors/3d_gizmos/gizmo_colors/selected_bone", Color(0.8, 0.3, 0.0)); + EDITOR_DEF("editors/3d_gizmos/gizmo_settings/bone_axis_length", (float)0.1); + EDITOR_DEF("editors/3d_gizmos/gizmo_settings/bone_shape", 1); + EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "editors/3d_gizmos/gizmo_settings/bone_shape", PROPERTY_HINT_ENUM, "Wire,Octahedron")); + Node3DEditor::get_singleton()->add_control_to_menu_panel(edit_mode_button); + } break; + case EditorNode3DGizmoPlugin::NOTIFICATION_PREDELETE: { + Node3DEditor::get_singleton()->remove_control_from_menu_panel(edit_mode_button); + } break; + } +} diff --git a/modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.h b/modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.h new file mode 100644 index 000000000000..99c7e3fd74e3 --- /dev/null +++ b/modules/many_bone_ik/editor/many_bone_ik_3d_gizmo_plugin.h @@ -0,0 +1,101 @@ +/**************************************************************************/ +/* many_bone_ik_3d_gizmo_plugin.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef MANY_BONE_IK_3D_GIZMO_PLUGIN_H +#define MANY_BONE_IK_3D_GIZMO_PLUGIN_H + +#include "../src/ik_bone_3d.h" +#include "../src/many_bone_ik_3d.h" + +#include "editor/editor_inspector.h" +#include "editor/editor_settings.h" +#include "editor/plugins/skeleton_3d_editor_plugin.h" +#include "scene/3d/camera_3d.h" +#include "scene/3d/mesh_instance_3d.h" +#include "scene/3d/node_3d.h" +#include "scene/3d/skeleton_3d.h" +#include "scene/resources/immediate_mesh.h" +#include "scene/resources/material.h" + +class Joint; +class PhysicalBone3D; +class ManyBoneIKEditorPlugin; +class Button; + +class ManyBoneIK3DGizmoPlugin : public EditorNode3DGizmoPlugin { + GDCLASS(ManyBoneIK3DGizmoPlugin, EditorNode3DGizmoPlugin); + Ref kusudama_shader = memnew(Shader); + + Ref unselected_mat; + Ref selected_mat; + Ref selected_sh = memnew(Shader); + + MeshInstance3D *handles_mesh_instance = nullptr; + Ref handles_mesh = memnew(ImmediateMesh); + Ref handle_material = memnew(ShaderMaterial); + Ref handle_shader; + ManyBoneIK3D *many_bone_ik = nullptr; + Button *edit_mode_button = nullptr; + bool edit_mode = false; + +protected: + static void _bind_methods(); + void _notifications(int32_t p_what); + +public: + const Color bone_color = EditorSettings::get_singleton()->get("editors/3d_gizmos/gizmo_colors/skeleton"); + const int32_t KUSUDAMA_MAX_CONES = 10; + bool has_gizmo(Node3D *p_spatial) override; + String get_gizmo_name() const override; + void redraw(EditorNode3DGizmo *p_gizmo) override; + int32_t get_priority() const override; + void create_gizmo_mesh(BoneId current_bone_idx, Ref ik_bone, EditorNode3DGizmo *p_gizmo, Color current_bone_color, Skeleton3D *many_bone_ik_skeleton, ManyBoneIK3D *p_many_bone_ik); + int subgizmos_intersect_ray(const EditorNode3DGizmo *p_gizmo, Camera3D *p_camera, const Vector2 &p_point) const override; + Transform3D get_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id) const override; + void set_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id, Transform3D p_transform) override; + void commit_subgizmos(const EditorNode3DGizmo *p_gizmo, const Vector &p_ids, const Vector &p_restore, bool p_cancel) override; + + void edit_mode_toggled(const bool pressed); + void _subgizmo_selection_change(); + void _update_gizmo_visible(); + void _draw_gizmo(); + + void _draw_handles(); + void _hide_handles(); +}; + +class EditorPluginManyBoneIK : public EditorPlugin { + GDCLASS(EditorPluginManyBoneIK, EditorPlugin); + +public: + EditorPluginManyBoneIK(); +}; + +#endif // MANY_BONE_IK_3D_GIZMO_PLUGIN_H diff --git a/modules/many_bone_ik/editor/many_bone_ik_shader.h b/modules/many_bone_ik/editor/many_bone_ik_shader.h new file mode 100644 index 000000000000..d0b13d335ffc --- /dev/null +++ b/modules/many_bone_ik/editor/many_bone_ik_shader.h @@ -0,0 +1,207 @@ +/**************************************************************************/ +/* many_bone_ik_shader.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef MANY_BONE_IK_SHADER_H +#define MANY_BONE_IK_SHADER_H + +// Skeleton 3D gizmo kusudama constraint shader. +static constexpr char MANY_BONE_IKKUSUDAMA_SHADER[] = R"( +shader_type spatial; +render_mode depth_draw_always; + +uniform vec4 kusudama_color : source_color = vec4(0.58039218187332, 0.27058824896812, 0.00784313771874, 1.0); +uniform int cone_count = 0; + +// 0,0,0 is the center of the kusudama. The kusudamas have their own bases that automatically get reoriented such that +y points in the direction that is the weighted average of the limitcones on the kusudama. +// But, if you have a kusuduma with just 1 open_cone, then in general that open_cone should be 0,1,0 in the kusudama's basis unless the user has specifically specified otherwise. + +uniform vec4 cone_sequence[30]; + +// This shader can display up to 10 cones (represented by 30 4d vectors) +// Each group of 4 represents the xyz coordinates of the cone direction +// vector in model space and the fourth element represents radius + +// TODO: fire 2022-05-26 +// Use a texture to store bone parameters. +// Use the uv to get the row of the bone. + +varying vec3 normal_model_dir; +varying vec4 vert_model_color; + +bool is_in_inter_cone_path(in vec3 normal_dir, in vec4 tangent_1, in vec4 cone_1, in vec4 tangent_2, in vec4 cone_2) { + vec3 c1xc2 = cross(cone_1.xyz, cone_2.xyz); + float c1c2dir = dot(normal_dir, c1xc2); + + if (c1c2dir < 0.0) { + vec3 c1xt1 = cross(cone_1.xyz, tangent_1.xyz); + vec3 t1xc2 = cross(tangent_1.xyz, cone_2.xyz); + float c1t1dir = dot(normal_dir, c1xt1); + float t1c2dir = dot(normal_dir, t1xc2); + + return (c1t1dir > 0.0 && t1c2dir > 0.0); + + } else { + vec3 t2xc1 = cross(tangent_2.xyz, cone_1.xyz); + vec3 c2xt2 = cross(cone_2.xyz, tangent_2.xyz); + float t2c1dir = dot(normal_dir, t2xc1); + float c2t2dir = dot(normal_dir, c2xt2); + + return (c2t2dir > 0.0 && t2c1dir > 0.0); + } +} + +//determines the current draw condition based on the desired draw condition in the setToArgument +// -3 = disallowed entirely; +// -2 = disallowed and on tangent_cone boundary +// -1 = disallowed and on control_cone boundary +// 0 = allowed and empty; +// 1 = allowed and on control_cone boundary +// 2 = allowed and on tangent_cone boundary +int get_allowability_condition(in int current_condition, in int set_to) { + if((current_condition == -1 || current_condition == -2) + && set_to >= 0) { + return current_condition *= -1; + } else if(current_condition == 0 && (set_to == -1 || set_to == -2)) { + return set_to *=-2; + } + return max(current_condition, set_to); +} + +// returns 1 if normal_dir is beyond (cone.a) radians from the cone.rgb +// returns 0 if normal_dir is within (cone.a + boundary_width) radians from the cone.rgb +// return -1 if normal_dir is less than (cone.a) radians from the cone.rgb +int is_in_cone(in vec3 normal_dir, in vec4 cone, in float boundary_width) { + float arc_dist_to_cone = acos(dot(normal_dir, cone.rgb)); + if (arc_dist_to_cone > (cone.a+(boundary_width/2.))) { + return 1; + } + if (arc_dist_to_cone < (cone.a-(boundary_width/2.))) { + return -1; + } + return 0; +} + +// Returns a color corresponding to the allowability of this region, +// or otherwise the boundaries corresponding +// to various cones and tangent_cone. +vec4 color_allowed(in vec3 normal_dir, in int cone_counts, in float boundary_width) { + int current_condition = -3; + if (cone_counts == 1) { + vec4 cone = cone_sequence[0]; + int in_cone = is_in_cone(normal_dir, cone, boundary_width); + bool is_in_cone = in_cone == 0; + if (is_in_cone) { + in_cone = -1; + } else { + if (in_cone < 0) { + in_cone = 0; + } else { + in_cone = -3; + } + } + current_condition = get_allowability_condition(current_condition, in_cone); + } else { + for(int i=0; i < (cone_counts-1)*3; i=i+3) { + normal_dir = normalize(normal_dir); + + vec4 cone_1 = cone_sequence[i+0]; + vec4 tangent_1 = cone_sequence[i+1]; + vec4 tangent_2 = cone_sequence[i+2]; + vec4 cone_2 = cone_sequence[i+3]; + + int inCone1 = is_in_cone(normal_dir, cone_1, boundary_width); + if (inCone1 == 0) { + inCone1 = -1; + } else { + if (inCone1 < 0) { + inCone1 = 0; + } else { + inCone1 = -3; + } + } + current_condition = get_allowability_condition(current_condition, inCone1); + + int inCone2 = is_in_cone(normal_dir, cone_2, boundary_width); + if (inCone2 == 0) { + inCone2 = -1; + } else { + if (inCone2 < 0) { + inCone2 = 0; + } else { + inCone2 = -3; + } + } + current_condition = get_allowability_condition(current_condition, inCone2); + + int in_tan_1 = is_in_cone(normal_dir, tangent_1, boundary_width); + int in_tan_2 = is_in_cone(normal_dir, tangent_2, boundary_width); + + if (float(in_tan_1) < 1. || float(in_tan_2) < 1.) { + in_tan_1 = in_tan_1 == 0 ? -2 : -3; + current_condition = get_allowability_condition(current_condition, in_tan_1); + in_tan_2 = in_tan_2 == 0 ? -2 : -3; + current_condition = get_allowability_condition(current_condition, in_tan_2); + } else { + bool in_intercone = is_in_inter_cone_path(normal_dir, tangent_1, cone_1, tangent_2, cone_2); + int intercone_condition = in_intercone ? 0 : -3; + current_condition = get_allowability_condition(current_condition, intercone_condition); + } + } + } + vec4 result = vert_model_color; + bool is_disallowed_entirely = current_condition == -3; + bool is_disallowed_on_tangent_cone_boundary = current_condition == -2; + bool is_disallowed_on_control_cone_boundary = current_condition == -1; + if (is_disallowed_entirely || is_disallowed_on_tangent_cone_boundary || is_disallowed_on_control_cone_boundary) { + return result; + } else { + return vec4(0.0, 0.0, 0.0, 0.0); + } + return result; +} + +void vertex() { + normal_model_dir = CUSTOM0.rgb; + vert_model_color.rgb = kusudama_color.rgb; + // Draw the spheres in front of the background. + VERTEX = VERTEX; + POSITION = PROJECTION_MATRIX * VIEW_MATRIX * MODEL_MATRIX * vec4(VERTEX.xyz, 1.0); + POSITION.z = mix(POSITION.z, POSITION.w, 0.999); +} + +void fragment() { + vec4 result_color_allowed = vec4(0.0, 0.0, 0.0, 0.0); + result_color_allowed = color_allowed(normal_model_dir, cone_count, 0.02); + ALBEDO = result_color_allowed.rgb; + ALPHA = 0.8; +} +)"; + +#endif // MANY_BONE_IK_SHADER_H diff --git a/modules/many_bone_ik/register_types.cpp b/modules/many_bone_ik/register_types.cpp new file mode 100644 index 000000000000..5b7ed4fd15c0 --- /dev/null +++ b/modules/many_bone_ik/register_types.cpp @@ -0,0 +1,68 @@ +/**************************************************************************/ +/* register_types.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "register_types.h" + +#include "src/ik_bone_3d.h" +#include "src/ik_effector_3d.h" +#include "src/ik_effector_template_3d.h" +#include "src/ik_kusudama_3d.h" +#include "src/many_bone_ik_3d.h" + +#ifdef TOOLS_ENABLED +#include "editor/many_bone_ik_3d_gizmo_plugin.h" +#endif + +void initialize_many_bone_ik_module(ModuleInitializationLevel p_level) { + if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) { + } +#ifdef TOOLS_ENABLED + if (p_level == MODULE_INITIALIZATION_LEVEL_EDITOR) { + EditorPlugins::add_by_type(); + } +#endif + if (p_level == MODULE_INITIALIZATION_LEVEL_SERVERS) { + GDREGISTER_CLASS(IKEffectorTemplate3D); + GDREGISTER_CLASS(ManyBoneIK3D); + GDREGISTER_CLASS(IKBone3D); + GDREGISTER_CLASS(IKNode3D); + GDREGISTER_CLASS(IKEffector3D); + GDREGISTER_CLASS(IKBoneSegment3D); + GDREGISTER_CLASS(IKKusudama3D); + GDREGISTER_CLASS(IKRay3D); + GDREGISTER_CLASS(IKLimitCone3D); + } +} + +void uninitialize_many_bone_ik_module(ModuleInitializationLevel p_level) { + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } +} diff --git a/modules/many_bone_ik/register_types.h b/modules/many_bone_ik/register_types.h new file mode 100644 index 000000000000..7bb117a1b9a3 --- /dev/null +++ b/modules/many_bone_ik/register_types.h @@ -0,0 +1,39 @@ +/**************************************************************************/ +/* register_types.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef MANY_BONE_IK_REGISTER_TYPES_H +#define MANY_BONE_IK_REGISTER_TYPES_H + +#include "modules/register_module_types.h" + +void initialize_many_bone_ik_module(ModuleInitializationLevel p_level); +void uninitialize_many_bone_ik_module(ModuleInitializationLevel p_level); + +#endif // MANY_BONE_IK_REGISTER_TYPES_H diff --git a/modules/many_bone_ik/src/ik_bone_3d.cpp b/modules/many_bone_ik/src/ik_bone_3d.cpp new file mode 100644 index 000000000000..cfd400612880 --- /dev/null +++ b/modules/many_bone_ik/src/ik_bone_3d.cpp @@ -0,0 +1,364 @@ +/**************************************************************************/ +/* ik_bone_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_bone_3d.h" +#include "ik_kusudama_3d.h" +#include "many_bone_ik_3d.h" +#include "math/ik_node_3d.h" +#include + +void IKBone3D::set_bone_id(BoneId p_bone_id, Skeleton3D *p_skeleton) { + ERR_FAIL_NULL(p_skeleton); + bone_id = p_bone_id; +} + +BoneId IKBone3D::get_bone_id() const { + return bone_id; +} + +void IKBone3D::set_parent(const Ref &p_parent) { + ERR_FAIL_COND(p_parent.is_null()); + parent = p_parent; + if (parent.is_valid()) { + parent->children.push_back(this); + godot_skeleton_aligned_transform->set_parent(parent->godot_skeleton_aligned_transform); + constraint_orientation_transform->set_parent(parent->godot_skeleton_aligned_transform); + constraint_twist_transform->set_parent(parent->godot_skeleton_aligned_transform); + } +} + +void IKBone3D::update_default_bone_direction_transform(Skeleton3D *p_skeleton) { + Vector3 child_centroid; + int child_count = 0; + + for (Ref &ik_bone : children) { + child_centroid += ik_bone->get_ik_transform()->get_global_transform().origin; + child_count++; + } + + if (child_count > 0) { + child_centroid /= child_count; + } else { + const PackedInt32Array &bone_children = p_skeleton->get_bone_children(bone_id); + for (BoneId child_bone_idx : bone_children) { + child_centroid += p_skeleton->get_bone_global_pose(child_bone_idx).origin; + } + child_centroid /= bone_children.size(); + } + + const Vector3 &godot_bone_origin = godot_skeleton_aligned_transform->get_global_transform().origin; + child_centroid -= godot_bone_origin; + + if (Math::is_zero_approx(child_centroid.length_squared())) { + if (parent.is_valid()) { + child_centroid = parent->get_bone_direction_transform()->get_global_transform().basis.get_column(Vector3::AXIS_Y); + } else { + child_centroid = get_bone_direction_transform()->get_global_transform().basis.get_column(Vector3::AXIS_Y); + } + } + + if (!Math::is_zero_approx(child_centroid.length_squared()) && (children.size() || p_skeleton->get_bone_children(bone_id).size())) { + child_centroid.normalize(); + Vector3 bone_direction = bone_direction_transform->get_global_transform().basis.get_column(Vector3::AXIS_Y); + bone_direction.normalize(); + bone_direction_transform->rotate_local_with_global(Quaternion(child_centroid, bone_direction)); + } +} + +void IKBone3D::update_default_constraint_transform() { + Ref parent_bone = get_parent(); + if (parent_bone.is_valid()) { + Transform3D parent_bone_aligned_transform = get_parent_bone_aligned_transform(); + constraint_orientation_transform->set_global_transform(parent_bone_aligned_transform); + } + + Transform3D set_constraint_twist_transform = get_set_constraint_twist_transform(); + constraint_twist_transform->set_global_transform(set_constraint_twist_transform); + + if (constraint.is_null()) { + return; + } + + TypedArray cones = constraint->get_open_cones(); + Vector3 direction; + if (cones.size() == 0) { + direction = bone_direction_transform->get_global_transform().basis.get_column(Vector3::AXIS_Y); + } else { + float total_radius_sum = calculate_total_radius_sum(cones); + direction = calculate_weighted_direction(cones, total_radius_sum); + direction -= constraint_orientation_transform->get_global_transform().origin; + } + + Vector3 twist_axis = set_constraint_twist_transform.basis.get_column(Vector3::AXIS_Y); + Quaternion align_dir = Quaternion(twist_axis, direction); + constraint_twist_transform->rotate_local_with_global(align_dir); +} + +Ref IKBone3D::get_parent() const { + return parent; +} + +void IKBone3D::set_pin(const Ref &p_pin) { + ERR_FAIL_COND(p_pin.is_null()); + pin = p_pin; +} + +Ref IKBone3D::get_pin() const { + return pin; +} + +void IKBone3D::set_pose(const Transform3D &p_transform) { + godot_skeleton_aligned_transform->set_transform(p_transform); +} + +Transform3D IKBone3D::get_pose() const { + return godot_skeleton_aligned_transform->get_transform(); +} + +void IKBone3D::set_global_pose(const Transform3D &p_transform) { + godot_skeleton_aligned_transform->set_global_transform(p_transform); + Transform3D transform = constraint_orientation_transform->get_transform(); + transform.origin = godot_skeleton_aligned_transform->get_transform().origin; + constraint_orientation_transform->set_transform(transform); + constraint_orientation_transform->_propagate_transform_changed(); +} + +Transform3D IKBone3D::get_global_pose() const { + return godot_skeleton_aligned_transform->get_global_transform(); +} + +Transform3D IKBone3D::get_bone_direction_global_pose() const { + return bone_direction_transform->get_global_transform(); +} + +void IKBone3D::set_initial_pose(Skeleton3D *p_skeleton) { + ERR_FAIL_NULL(p_skeleton); + if (bone_id == -1) { + return; + } + Transform3D bone_origin_to_parent_origin = p_skeleton->get_bone_pose(bone_id); + set_pose(bone_origin_to_parent_origin); +} + +void IKBone3D::set_skeleton_bone_pose(Skeleton3D *p_skeleton) { + ERR_FAIL_NULL(p_skeleton); + Transform3D bone_to_parent = get_pose(); + p_skeleton->set_bone_pose_position(bone_id, bone_to_parent.origin); + if (!bone_to_parent.basis.is_finite()) { + bone_to_parent.basis = Basis(); + } + p_skeleton->set_bone_pose_rotation(bone_id, bone_to_parent.basis.get_rotation_quaternion()); + p_skeleton->set_bone_pose_scale(bone_id, bone_to_parent.basis.get_scale()); +} + +void IKBone3D::create_pin() { + pin = Ref(memnew(IKEffector3D(this))); +} + +bool IKBone3D::is_pinned() const { + return pin.is_valid(); +} + +void IKBone3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_pin"), &IKBone3D::get_pin); + ClassDB::bind_method(D_METHOD("set_pin", "pin"), &IKBone3D::set_pin); + ClassDB::bind_method(D_METHOD("is_pinned"), &IKBone3D::is_pinned); + ClassDB::bind_method(D_METHOD("get_constraint"), &IKBone3D::get_constraint); + ClassDB::bind_method(D_METHOD("get_constraint_orientation_transform"), &IKBone3D::get_constraint_orientation_transform); + ClassDB::bind_method(D_METHOD("get_constraint_twist_transform"), &IKBone3D::get_constraint_twist_transform); +} + +IKBone3D::IKBone3D(StringName p_bone, Skeleton3D *p_skeleton, const Ref &p_parent, Vector> &p_pins, float p_default_dampening, + ManyBoneIK3D *p_many_bone_ik) { + ERR_FAIL_NULL(p_skeleton); + + default_dampening = p_default_dampening; + cos_half_dampen = cos(default_dampening / real_t(2.0)); + set_name(p_bone); + bone_id = p_skeleton->find_bone(p_bone); + if (p_parent.is_valid()) { + set_parent(p_parent); + } + for (Ref elem : p_pins) { + if (elem.is_null()) { + continue; + } + if (elem->get_name() == p_bone) { + create_pin(); + Ref effector = get_pin(); + effector->set_target_node(p_skeleton, elem->get_target_node()); + effector->set_motion_propagation_factor(elem->get_motion_propagation_factor()); + effector->set_weight(elem->get_weight()); + effector->set_direction_priorities(elem->get_direction_priorities()); + break; + } + } + bone_direction_transform->set_parent(godot_skeleton_aligned_transform); + + float predamp = 1.0 - get_stiffness(); + dampening = get_parent().is_null() ? Math_PI : predamp * p_default_dampening; + float iterations = p_many_bone_ik->get_iterations_per_frame(); + if (get_constraint().is_null()) { + Ref new_constraint; + new_constraint.instantiate(); + add_constraint(new_constraint); + } + float returnfulness = get_constraint()->get_resistance(); + float falloff = 0.2f; + half_returnfulness_dampened.resize(iterations); + cos_half_returnfulness_dampened.resize(iterations); + float iterations_pow = Math::pow(iterations, falloff * iterations * returnfulness); + for (float i = 0; i < iterations; i++) { + float iteration_scalar = ((iterations_pow)-Math::pow(i, falloff * iterations * returnfulness)) / (iterations_pow); + float iteration_return_clamp = iteration_scalar * returnfulness * dampening; + float cos_iteration_return_clamp = Math::cos(iteration_return_clamp / 2.0); + half_returnfulness_dampened.write[i] = iteration_return_clamp; + cos_half_returnfulness_dampened.write[i] = cos_iteration_return_clamp; + } +} + +float IKBone3D::get_cos_half_dampen() const { + return cos_half_dampen; +} + +void IKBone3D::set_cos_half_dampen(float p_cos_half_dampen) { + cos_half_dampen = p_cos_half_dampen; +} + +Ref IKBone3D::get_constraint() const { + return constraint; +} + +void IKBone3D::add_constraint(Ref p_constraint) { + constraint = p_constraint; +} + +Ref IKBone3D::get_ik_transform() { + return godot_skeleton_aligned_transform; +} + +Ref IKBone3D::get_constraint_orientation_transform() { + return constraint_orientation_transform; +} + +Ref IKBone3D::get_constraint_twist_transform() { + return constraint_twist_transform; +} + +void IKBone3D::set_constraint_orientation_transform(Ref p_transform) { + constraint_orientation_transform = p_transform; +} + +void IKBone3D::set_bone_direction_transform(Ref p_bone_direction) { + bone_direction_transform = p_bone_direction; +} + +Ref IKBone3D::get_bone_direction_transform() { + return bone_direction_transform; +} + +bool IKBone3D::is_orientationally_constrained() { + if (get_constraint().is_null()) { + return false; + } + return get_constraint()->is_orientationally_constrained(); +} + +bool IKBone3D::is_axially_constrained() { + if (get_constraint().is_null()) { + return false; + } + return get_constraint()->is_axially_constrained(); +} + +Vector &IKBone3D::get_cos_half_returnfullness_dampened() { + return cos_half_returnfulness_dampened; +} + +void IKBone3D::set_cos_half_returnfullness_dampened(const Vector &p_value) { + cos_half_returnfulness_dampened = p_value; +} + +Vector &IKBone3D::get_half_returnfullness_dampened() { + return half_returnfulness_dampened; +} + +void IKBone3D::set_half_returnfullness_dampened(const Vector &p_value) { + half_returnfulness_dampened = p_value; +} + +void IKBone3D::set_stiffness(double p_stiffness) { + stiffness = p_stiffness; +} + +double IKBone3D::get_stiffness() const { + return stiffness; +} + +Transform3D IKBone3D::get_parent_bone_aligned_transform() { + Ref parent_bone = get_parent(); + if (parent_bone.is_null()) { + return Transform3D(); + } + Transform3D parent_bone_aligned_transform = parent_bone->get_ik_transform()->get_global_transform(); + parent_bone_aligned_transform.origin = get_bone_direction_transform()->get_global_transform().origin; + return parent_bone_aligned_transform; +} + +Transform3D IKBone3D::get_set_constraint_twist_transform() const { + return constraint_orientation_transform->get_global_transform(); +} + +float IKBone3D::calculate_total_radius_sum(const TypedArray &p_cones) const { + float total_radius_sum = 0.0f; + for (int32_t i = 0; i < p_cones.size(); ++i) { + const Ref &cone = p_cones[i]; + if (cone.is_null()) { + break; + } + total_radius_sum += cone->get_radius(); + } + return total_radius_sum; +} + +Vector3 IKBone3D::calculate_weighted_direction(const TypedArray &p_cones, float p_total_radius_sum) const { + Vector3 direction = Vector3(); + for (int32_t i = 0; i < p_cones.size(); ++i) { + const Ref &cone = p_cones[i]; + if (cone.is_null()) { + break; + } + float weight = cone->get_radius() / p_total_radius_sum; + direction += cone->get_control_point() * weight; + } + direction.normalize(); + direction = constraint_orientation_transform->get_global_transform().basis.xform(direction); + return direction; +} diff --git a/modules/many_bone_ik/src/ik_bone_3d.h b/modules/many_bone_ik/src/ik_bone_3d.h new file mode 100644 index 000000000000..17b6062f6771 --- /dev/null +++ b/modules/many_bone_ik/src/ik_bone_3d.h @@ -0,0 +1,122 @@ +/**************************************************************************/ +/* ik_bone_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_BONE_3D_H +#define IK_BONE_3D_H + +#include "ik_effector_template_3d.h" +#include "ik_kusudama_3d.h" +#include "ik_open_cone_3d.h" +#include "math/ik_node_3d.h" + +#include "core/io/resource.h" +#include "core/object/ref_counted.h" +#include "scene/3d/skeleton_3d.h" + +class IKEffector3D; +class ManyBoneIK3D; +class IKBone3D; + +class IKBone3D : public Resource { + GDCLASS(IKBone3D, Resource); + + BoneId bone_id = -1; + Ref parent; + Vector> children; + Ref pin; + + float default_dampening = Math_PI; + float dampening = get_parent().is_null() ? Math_PI : default_dampening; + float cos_half_dampen = Math::cos(dampening / 2.0f); + double cos_half_return_damp = 0.0f; + double return_damp = 0.0f; + Vector cos_half_returnfulness_dampened; + Vector half_returnfulness_dampened; + double stiffness = 0.0; + Ref constraint; + // In the space of the local parent bone transform. + // The origin is the origin of the bone direction transform + // Can be independent and should be calculated + // to keep -y to be the opposite of its bone forward orientation + // To avoid singularity that is ambiguous. + Ref constraint_orientation_transform = Ref(memnew(IKNode3D())); + Ref constraint_twist_transform = Ref(memnew(IKNode3D())); + Ref godot_skeleton_aligned_transform = Ref(memnew(IKNode3D())); // The bone's actual transform. + Ref bone_direction_transform = Ref(memnew(IKNode3D())); // Physical direction of the bone. Calculate Y is the bone up. + +protected: + static void _bind_methods(); + +public: + Vector &get_cos_half_returnfullness_dampened(); + void set_cos_half_returnfullness_dampened(const Vector &p_value); + Vector &get_half_returnfullness_dampened(); + void set_half_returnfullness_dampened(const Vector &p_value); + void set_stiffness(double p_stiffness); + double get_stiffness() const; + bool is_axially_constrained(); + bool is_orientationally_constrained(); + Transform3D get_bone_direction_global_pose() const; + Ref get_bone_direction_transform(); + void set_bone_direction_transform(Ref p_bone_direction); + void update_default_bone_direction_transform(Skeleton3D *p_skeleton); + void set_constraint_orientation_transform(Ref p_transform); + Ref get_constraint_orientation_transform(); + Ref get_constraint_twist_transform(); + void update_default_constraint_transform(); + void add_constraint(Ref p_constraint); + Ref get_constraint() const; + void set_bone_id(BoneId p_bone_id, Skeleton3D *p_skeleton = nullptr); + BoneId get_bone_id() const; + void set_parent(const Ref &p_parent); + Ref get_parent() const; + void set_pin(const Ref &p_pin); + Ref get_pin() const; + void set_global_pose(const Transform3D &p_transform); + Transform3D get_global_pose() const; + void set_pose(const Transform3D &p_transform); + Transform3D get_pose() const; + void set_initial_pose(Skeleton3D *p_skeleton); + void set_skeleton_bone_pose(Skeleton3D *p_skeleton); + void create_pin(); + bool is_pinned() const; + Ref get_ik_transform(); + IKBone3D() {} + IKBone3D(StringName p_bone, Skeleton3D *p_skeleton, const Ref &p_parent, Vector> &p_pins, float p_default_dampening = Math_PI, ManyBoneIK3D *p_many_bone_ik = nullptr); + ~IKBone3D() {} + float get_cos_half_dampen() const; + void set_cos_half_dampen(float p_cos_half_dampen); + Transform3D get_parent_bone_aligned_transform(); + Transform3D get_set_constraint_twist_transform() const; + float calculate_total_radius_sum(const TypedArray &p_cones) const; + Vector3 calculate_weighted_direction(const TypedArray &p_cones, float p_total_radius_sum) const; +}; + +#endif // IK_BONE_3D_H diff --git a/modules/many_bone_ik/src/ik_bone_segment_3d.cpp b/modules/many_bone_ik/src/ik_bone_segment_3d.cpp new file mode 100644 index 000000000000..b0aba235f832 --- /dev/null +++ b/modules/many_bone_ik/src/ik_bone_segment_3d.cpp @@ -0,0 +1,427 @@ +/**************************************************************************/ +/* ik_bone_segment_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_bone_segment_3d.h" + +#include "core/string/string_builder.h" +#include "ik_effector_3d.h" +#include "ik_kusudama_3d.h" +#include "many_bone_ik_3d.h" +#include "scene/3d/skeleton_3d.h" + +Ref IKBoneSegment3D::get_root() const { + return root; +} + +Ref IKBoneSegment3D::get_tip() const { + return tip; +} + +bool IKBoneSegment3D::is_pinned() const { + ERR_FAIL_COND_V(tip.is_null(), false); + return tip->is_pinned(); +} + +Vector> IKBoneSegment3D::get_child_segments() const { + return child_segments; +} + +void IKBoneSegment3D::create_bone_list(Vector> &p_list, bool p_recursive) const { + if (p_recursive) { + for (int32_t child_i = 0; child_i < child_segments.size(); child_i++) { + child_segments[child_i]->create_bone_list(p_list, p_recursive); + } + } + Ref current_bone = tip; + Vector> list; + while (current_bone.is_valid()) { + list.push_back(current_bone); + if (current_bone == root) { + break; + } + current_bone = current_bone->get_parent(); + } + p_list.append_array(list); +} + +void IKBoneSegment3D::update_pinned_list(Vector> &r_weights) { + for (int32_t chain_i = 0; chain_i < child_segments.size(); chain_i++) { + Ref chain = child_segments[chain_i]; + chain->update_pinned_list(r_weights); + } + if (is_pinned()) { + effector_list.push_back(tip->get_pin()); + } + double motion_propagation_factor = is_pinned() ? tip->get_pin()->motion_propagation_factor : 1.0; + if (motion_propagation_factor > 0.0) { + for (Ref child : child_segments) { + effector_list.append_array(child->effector_list); + } + } +} + +void IKBoneSegment3D::_update_optimal_rotation(Ref p_for_bone, double p_damp, bool p_translate, bool p_constraint_mode, int32_t current_iteration, int32_t total_iterations) { + ERR_FAIL_COND(p_for_bone.is_null()); + _update_target_headings(p_for_bone, &heading_weights, &target_headings); + _update_tip_headings(p_for_bone, &tip_headings); + _set_optimal_rotation(p_for_bone, &tip_headings, &target_headings, &heading_weights, p_damp, p_translate, p_constraint_mode); +} + +Quaternion IKBoneSegment3D::clamp_to_cos_half_angle(Quaternion p_quat, double p_cos_half_angle) { + if (p_quat.w < 0.0) { + p_quat = p_quat * -1; + } + double previous_coefficient = (1.0 - (p_quat.w * p_quat.w)); + if (p_cos_half_angle <= p_quat.w || previous_coefficient == 0.0) { + return p_quat; + } else { + double composite_coefficient = Math::sqrt((1.0 - (p_cos_half_angle * p_cos_half_angle)) / previous_coefficient); + p_quat.w = p_cos_half_angle; + p_quat.x *= composite_coefficient; + p_quat.y *= composite_coefficient; + p_quat.z *= composite_coefficient; + } + return p_quat; +} + +float IKBoneSegment3D::_get_manual_msd(const PackedVector3Array &r_htip, const PackedVector3Array &r_htarget, const Vector &p_weights) { + float manual_RMSD = 0.0f; + float w_sum = 0.0f; + for (int i = 0; i < r_htarget.size(); i++) { + float x_d = r_htarget[i].x - r_htip[i].x; + float y_d = r_htarget[i].y - r_htip[i].y; + float z_d = r_htarget[i].z - r_htip[i].z; + float mag_sq = p_weights[i] * (x_d * x_d + y_d * y_d + z_d * z_d); + manual_RMSD += mag_sq; + w_sum += p_weights[i]; + } + manual_RMSD /= w_sum * w_sum; + return manual_RMSD; +} + +void IKBoneSegment3D::_set_optimal_rotation(Ref p_for_bone, PackedVector3Array *r_htip, PackedVector3Array *r_htarget, Vector *r_weights, float p_dampening, bool p_translate, bool p_constraint_mode, double current_iteration, double total_iterations) { + ERR_FAIL_COND(p_for_bone.is_null()); + ERR_FAIL_NULL(r_htip); + ERR_FAIL_NULL(r_htarget); + ERR_FAIL_NULL(r_weights); + + _update_target_headings(p_for_bone, &heading_weights, &target_headings); + Transform3D prev_transform = p_for_bone->get_pose(); + bool got_closer = true; + double bone_damp = p_for_bone->get_cos_half_dampen(); + int i = 0; + do { + _update_tip_headings(p_for_bone, &tip_headings); + if (!p_constraint_mode) { + Array superpose_result = QuaternionCharacteristicPolynomial::weighted_superpose(*r_htip, *r_htarget, *r_weights, p_translate, evec_prec); + Quaternion rotation = superpose_result[0]; + Vector3 translation = superpose_result[1]; + double dampening = (p_dampening != -1.0) ? p_dampening : bone_damp; + rotation = clamp_to_cos_half_angle(rotation, cos(dampening / 2.0)); + if (current_iteration == 0) { + current_iteration = 0.0001; + } + rotation = rotation.slerp(p_for_bone->get_global_pose().basis, static_cast(total_iterations) / current_iteration); + p_for_bone->get_ik_transform()->rotate_local_with_global(rotation); + Transform3D result = Transform3D(p_for_bone->get_global_pose().basis, p_for_bone->get_global_pose().origin + translation); + p_for_bone->set_global_pose(result); + } + bool is_parent_valid = p_for_bone->get_parent().is_valid(); + if (is_parent_valid && p_for_bone->is_orientationally_constrained()) { + p_for_bone->get_constraint()->snap_to_orientation_limit(p_for_bone->get_bone_direction_transform(), p_for_bone->get_ik_transform(), p_for_bone->get_constraint_orientation_transform(), bone_damp, p_for_bone->get_cos_half_dampen()); + } + if (is_parent_valid && p_for_bone->is_axially_constrained()) { + p_for_bone->get_constraint()->set_snap_to_twist_limit(p_for_bone->get_bone_direction_transform(), p_for_bone->get_ik_transform(), p_for_bone->get_constraint_twist_transform(), bone_damp, p_for_bone->get_cos_half_dampen()); + } + if (default_stabilizing_pass_count > 0) { + _update_tip_headings(p_for_bone, &tip_headings_uniform); + double current_msd = _get_manual_msd(tip_headings_uniform, target_headings, heading_weights); + if (current_msd <= previous_deviation * 1.0001) { + previous_deviation = current_msd; + got_closer = true; + break; + } else { + got_closer = false; + p_for_bone->set_pose(prev_transform); + } + } + i++; + } while (i < default_stabilizing_pass_count && !got_closer); + + if (root == p_for_bone) { + previous_deviation = INFINITY; + } +} + +void IKBoneSegment3D::_update_target_headings(Ref p_for_bone, Vector *r_weights, PackedVector3Array *r_target_headings) { + ERR_FAIL_COND(p_for_bone.is_null()); + ERR_FAIL_NULL(r_weights); + ERR_FAIL_NULL(r_target_headings); + int32_t last_index = 0; + for (int32_t effector_i = 0; effector_i < effector_list.size(); effector_i++) { + Ref effector = effector_list[effector_i]; + if (effector.is_null()) { + continue; + } + last_index = effector->update_effector_target_headings(r_target_headings, last_index, p_for_bone, &heading_weights); + } +} + +void IKBoneSegment3D::_update_tip_headings(Ref p_for_bone, PackedVector3Array *r_heading_tip) { + ERR_FAIL_NULL(r_heading_tip); + ERR_FAIL_COND(p_for_bone.is_null()); + int32_t last_index = 0; + for (int32_t effector_i = 0; effector_i < effector_list.size(); effector_i++) { + Ref effector = effector_list[effector_i]; + if (effector.is_null()) { + continue; + } + last_index = effector->update_effector_tip_headings(r_heading_tip, last_index, p_for_bone); + } +} + +void IKBoneSegment3D::segment_solver(const Vector &p_damp, float p_default_damp, bool p_constraint_mode, int32_t p_current_iteration, int32_t p_total_iteration) { + for (Ref child : child_segments) { + if (child.is_null()) { + continue; + } + child->segment_solver(p_damp, p_default_damp, p_constraint_mode, p_current_iteration, p_total_iteration); + } + bool is_translate = parent_segment.is_null(); + if (is_translate) { + Vector damp = p_damp; + damp.fill(Math_PI); + _qcp_solver(damp, Math_PI, is_translate, p_constraint_mode, p_current_iteration, p_total_iteration); + return; + } + _qcp_solver(p_damp, p_default_damp, is_translate, p_constraint_mode, p_current_iteration, p_total_iteration); +} + +void IKBoneSegment3D::_qcp_solver(const Vector &p_damp, float p_default_damp, bool p_translate, bool p_constraint_mode, int32_t p_current_iteration, int32_t p_total_iterations) { + for (Ref current_bone : bones) { + float damp = p_default_damp; + bool is_valid_access = !(unlikely((p_damp.size()) < 0 || (current_bone->get_bone_id()) >= (p_damp.size()))); + if (is_valid_access) { + damp = p_damp[current_bone->get_bone_id()]; + } + bool is_non_default_damp = p_default_damp < damp; + if (is_non_default_damp) { + damp = p_default_damp; + } + _update_optimal_rotation(current_bone, damp, p_translate, p_constraint_mode, p_current_iteration, p_total_iterations); + } +} + +void IKBoneSegment3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("is_pinned"), &IKBoneSegment3D::is_pinned); + ClassDB::bind_method(D_METHOD("get_ik_bone", "bone"), &IKBoneSegment3D::get_ik_bone); +} + +IKBoneSegment3D::IKBoneSegment3D(Skeleton3D *p_skeleton, StringName p_root_bone_name, Vector> &p_pins, ManyBoneIK3D *p_many_bone_ik, const Ref &p_parent, + BoneId p_root, BoneId p_tip, int32_t p_stabilizing_pass_count) { + root = p_root; + tip = p_tip; + skeleton = p_skeleton; + root = Ref(memnew(IKBone3D(p_root_bone_name, p_skeleton, p_parent, p_pins, Math_PI, p_many_bone_ik))); + if (p_parent.is_valid()) { + root_segment = p_parent->root_segment; + } else { + root_segment = Ref(this); + } + root_segment->bone_map[root->get_bone_id()] = root; + if (p_parent.is_valid()) { + parent_segment = p_parent; + root->set_parent(p_parent->get_tip()); + } + default_stabilizing_pass_count = p_stabilizing_pass_count; +} + +void IKBoneSegment3D::_enable_pinned_descendants() { + pinned_descendants = true; +} + +bool IKBoneSegment3D::_has_pinned_descendants() { + return pinned_descendants; +} + +Ref IKBoneSegment3D::get_ik_bone(BoneId p_bone) const { + if (!bone_map.has(p_bone)) { + return Ref(); + } + return bone_map[p_bone]; +} + +void IKBoneSegment3D::create_headings_arrays() { + Vector> penalty_array; + Vector> new_pinned_bones; + recursive_create_penalty_array(this, penalty_array, new_pinned_bones, 1.0); + pinned_bones.resize(new_pinned_bones.size()); + int32_t total_headings = 0; + for (const Vector ¤t_penalty_array : penalty_array) { + total_headings += current_penalty_array.size(); + } + for (int32_t bone_i = 0; bone_i < new_pinned_bones.size(); bone_i++) { + pinned_bones.write[bone_i] = new_pinned_bones[bone_i]; + } + target_headings.resize(total_headings); + tip_headings.resize(total_headings); + tip_headings_uniform.resize(total_headings); + heading_weights.resize(total_headings); + int currentHeading = 0; + for (const Vector ¤t_penalty_array : penalty_array) { + for (double ad : current_penalty_array) { + heading_weights.write[currentHeading] = ad; + target_headings.write[currentHeading] = Vector3(); + tip_headings.write[currentHeading] = Vector3(); + tip_headings_uniform.write[currentHeading] = Vector3(); + currentHeading++; + } + } +} + +void IKBoneSegment3D::recursive_create_penalty_array(Ref p_bone_segment, Vector> &r_penalty_array, Vector> &r_pinned_bones, double p_falloff) { + if (p_falloff <= 0.0) { + return; + } + + double current_falloff = 1.0; + + if (p_bone_segment->is_pinned()) { + Ref current_tip = p_bone_segment->get_tip(); + Ref pin = current_tip->get_pin(); + double weight = pin->get_weight(); + Vector inner_weight_array; + inner_weight_array.push_back(weight * p_falloff); + + double max_pin_weight = MAX(MAX(pin->get_direction_priorities().x, pin->get_direction_priorities().y), pin->get_direction_priorities().z); + max_pin_weight = max_pin_weight == 0.0 ? 1.0 : max_pin_weight; + + for (int i = 0; i < 3; ++i) { + double priority = pin->get_direction_priorities()[i]; + if (priority > 0.0) { + double sub_target_weight = weight * (priority / max_pin_weight) * p_falloff; + inner_weight_array.push_back(sub_target_weight); + inner_weight_array.push_back(sub_target_weight); + } + } + + r_penalty_array.push_back(inner_weight_array); + r_pinned_bones.push_back(current_tip); + current_falloff = pin->get_motion_propagation_factor(); + } + + for (Ref s : p_bone_segment->get_child_segments()) { + recursive_create_penalty_array(s, r_penalty_array, r_pinned_bones, p_falloff * current_falloff); + } +} + +void IKBoneSegment3D::recursive_create_headings_arrays_for(Ref p_bone_segment) { + p_bone_segment->create_headings_arrays(); + for (Ref segments : p_bone_segment->get_child_segments()) { + recursive_create_headings_arrays_for(segments); + } +} + +void IKBoneSegment3D::generate_default_segments(Vector> &p_pins, BoneId p_root_bone, BoneId p_tip_bone, ManyBoneIK3D *p_many_bone_ik) { + Ref current_tip = root; + Vector children; + + while (!_is_parent_of_tip(current_tip, p_tip_bone)) { + children = skeleton->get_bone_children(current_tip->get_bone_id()); + + if (children.is_empty() || _has_multiple_children_or_pinned(children, current_tip)) { + _process_children(children, current_tip, p_pins, p_root_bone, p_tip_bone, p_many_bone_ik); + break; + } else { + Vector::Iterator bone_id_iterator = children.begin(); + current_tip = _create_next_bone(*bone_id_iterator, current_tip, p_pins, p_many_bone_ik); + } + } + + _finalize_segment(current_tip); +} + +bool IKBoneSegment3D::_is_parent_of_tip(Ref p_current_tip, BoneId p_tip_bone) { + return skeleton->get_bone_parent(p_current_tip->get_bone_id()) >= p_tip_bone && p_tip_bone != -1; +} + +bool IKBoneSegment3D::_has_multiple_children_or_pinned(Vector &r_children, Ref p_current_tip) { + return r_children.size() > 1 || p_current_tip->is_pinned(); +} + +void IKBoneSegment3D::_process_children(Vector &r_children, Ref p_current_tip, Vector> &r_pins, BoneId p_root_bone, BoneId p_tip_bone, ManyBoneIK3D *p_many_bone_ik) { + tip = p_current_tip; + Ref parent(this); + + for (int32_t child_i = 0; child_i < r_children.size(); child_i++) { + BoneId child_bone = r_children[child_i]; + String child_name = skeleton->get_bone_name(child_bone); + Ref child_segment = _create_child_segment(child_name, r_pins, p_root_bone, p_tip_bone, p_many_bone_ik, parent); + + child_segment->generate_default_segments(r_pins, p_root_bone, p_tip_bone, p_many_bone_ik); + + if (child_segment->_has_pinned_descendants()) { + _enable_pinned_descendants(); + child_segments.push_back(child_segment); + } + } +} + +Ref IKBoneSegment3D::_create_child_segment(String &p_child_name, Vector> &p_pins, BoneId p_root_bone, BoneId p_tip_bone, ManyBoneIK3D *p_many_bone_ik, Ref &p_parent) { + return Ref(memnew(IKBoneSegment3D(skeleton, p_child_name, p_pins, p_many_bone_ik, p_parent, p_root_bone, p_tip_bone))); +} + +Ref IKBoneSegment3D::_create_next_bone(BoneId p_bone_id, Ref p_current_tip, Vector> &p_pins, ManyBoneIK3D *p_many_bone_ik) { + String bone_name = skeleton->get_bone_name(p_bone_id); + Ref next_bone = Ref(memnew(IKBone3D(bone_name, skeleton, p_current_tip, p_pins, p_many_bone_ik->get_default_damp(), p_many_bone_ik))); + root_segment->bone_map[p_bone_id] = next_bone; + + return next_bone; +} + +void IKBoneSegment3D::_finalize_segment(Ref p_current_tip) { + tip = p_current_tip; + + if (tip->is_pinned()) { + _enable_pinned_descendants(); + } + + StringBuilder name_builder; + name_builder.append("IKBoneSegment"); + name_builder.append(root->get_name()); + name_builder.append("Root"); + name_builder.append(tip->get_name()); + name_builder.append("Tip"); + + String ik_bone_name = name_builder.as_string(); + set_name(ik_bone_name); + bones.clear(); + create_bone_list(bones, false); +} diff --git a/modules/many_bone_ik/src/ik_bone_segment_3d.h b/modules/many_bone_ik/src/ik_bone_segment_3d.h new file mode 100644 index 000000000000..e5d33c54ce2c --- /dev/null +++ b/modules/many_bone_ik/src/ik_bone_segment_3d.h @@ -0,0 +1,105 @@ +/**************************************************************************/ +/* ik_bone_segment_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_BONE_SEGMENT_3D_H +#define IK_BONE_SEGMENT_3D_H + +#include "ik_bone_3d.h" +#include "ik_effector_3d.h" +#include "ik_effector_template_3d.h" +#include "math/qcp.h" +#include "scene/3d/skeleton_3d.h" + +#include "core/io/resource.h" +#include "core/object/ref_counted.h" + +class IKEffector3D; +class IKBone3D; +class IKLimitCone3D; + +class IKBoneSegment3D : public Resource { + GDCLASS(IKBoneSegment3D, Resource); + Ref root; + Ref tip; + Vector> bones; + Vector> pinned_bones; + Vector> child_segments; // Contains only direct child chains that end with effectors or have child that end with effectors + Ref parent_segment; + Ref root_segment; + Vector> effector_list; + PackedVector3Array target_headings; + PackedVector3Array tip_headings; + PackedVector3Array tip_headings_uniform; + Vector heading_weights; + Skeleton3D *skeleton = nullptr; + bool pinned_descendants = false; + double previous_deviation = INFINITY; + int32_t default_stabilizing_pass_count = 0; // Move to the stabilizing pass to the ik solver. Set it free. + bool _has_pinned_descendants(); + void _enable_pinned_descendants(); + void _update_target_headings(Ref p_for_bone, Vector *r_weights, PackedVector3Array *r_htarget); + void _update_tip_headings(Ref p_for_bone, PackedVector3Array *r_heading_tip); + void _set_optimal_rotation(Ref p_for_bone, PackedVector3Array *r_htip, PackedVector3Array *r_heading_tip, Vector *r_weights, float p_dampening = -1, bool p_translate = false, bool p_constraint_mode = false, double current_iteration = 0, double total_iterations = 0); + void _qcp_solver(const Vector &p_damp, float p_default_damp, bool p_translate, bool p_constraint_mode, int32_t p_current_iteration, int32_t p_total_iterations); + void _update_optimal_rotation(Ref p_for_bone, double p_damp, bool p_translate, bool p_constraint_mode, int32_t current_iteration, int32_t total_iterations); + float _get_manual_msd(const PackedVector3Array &r_htip, const PackedVector3Array &r_htarget, const Vector &p_weights); + HashMap> bone_map; + bool _is_parent_of_tip(Ref p_current_tip, BoneId p_tip_bone); + bool _has_multiple_children_or_pinned(Vector &r_children, Ref p_current_tip); + void _process_children(Vector &r_children, Ref p_current_tip, Vector> &r_pins, BoneId p_root_bone, BoneId p_tip_bone, ManyBoneIK3D *p_many_bone_ik); + Ref _create_child_segment(String &p_child_name, Vector> &p_pins, BoneId p_root_bone, BoneId p_tip_bone, ManyBoneIK3D *p_many_bone_ik, Ref &p_parent); + Ref _create_next_bone(BoneId p_bone_id, Ref p_current_tip, Vector> &p_pins, ManyBoneIK3D *p_many_bone_ik); + void _finalize_segment(Ref p_current_tip); + +protected: + static void _bind_methods(); + +public: + const double evec_prec = static_cast(1E-6); + void update_pinned_list(Vector> &r_weights); + static Quaternion clamp_to_cos_half_angle(Quaternion p_quat, double p_cos_half_angle); + static void recursive_create_headings_arrays_for(Ref p_bone_segment); + void create_headings_arrays(); + void recursive_create_penalty_array(Ref p_bone_segment, Vector> &r_penalty_array, Vector> &r_pinned_bones, double p_falloff); + void segment_solver(const Vector &p_damp, float p_default_damp, bool p_constraint_mode, int32_t p_current_iteration, int32_t p_total_iteration); + Ref get_root() const; + Ref get_tip() const; + bool is_pinned() const; + Vector> get_child_segments() const; + void create_bone_list(Vector> &p_list, bool p_recursive = false) const; + Ref get_ik_bone(BoneId p_bone) const; + void generate_default_segments(Vector> &p_pins, BoneId p_root_bone, BoneId p_tip_bone, ManyBoneIK3D *p_many_bone_ik); + IKBoneSegment3D() {} + IKBoneSegment3D(Skeleton3D *p_skeleton, StringName p_root_bone_name, Vector> &p_pins, ManyBoneIK3D *p_many_bone_ik, const Ref &p_parent = nullptr, + BoneId root = -1, BoneId tip = -1, int32_t p_stabilizing_pass_count = 0); + ~IKBoneSegment3D() {} +}; + +#endif // IK_BONE_SEGMENT_3D_H diff --git a/modules/many_bone_ik/src/ik_effector_3d.cpp b/modules/many_bone_ik/src/ik_effector_3d.cpp new file mode 100644 index 000000000000..74ac01df14e5 --- /dev/null +++ b/modules/many_bone_ik/src/ik_effector_3d.cpp @@ -0,0 +1,183 @@ +/**************************************************************************/ +/* ik_effector_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_effector_3d.h" + +#include "core/typedefs.h" +#include "ik_bone_3d.h" +#include "many_bone_ik_3d.h" +#include "math/ik_node_3d.h" +#include "scene/3d/node_3d.h" + +#ifdef TOOLS_ENABLED +#include "editor/editor_data.h" +#include "editor/editor_node.h" +#endif + +void IKEffector3D::set_target_node(Skeleton3D *p_skeleton, const NodePath &p_target_node_path) { + ERR_FAIL_NULL(p_skeleton); + target_node_path = p_target_node_path; +} + +NodePath IKEffector3D::get_target_node() const { + return target_node_path; +} + +void IKEffector3D::set_target_node_rotation(bool p_use) { + use_target_node_rotation = p_use; +} + +bool IKEffector3D::get_target_node_rotation() const { + return use_target_node_rotation; +} + +Ref IKEffector3D::get_ik_bone_3d() const { + return for_bone; +} + +bool IKEffector3D::is_following_translation_only() const { + return Math::is_zero_approx(direction_priorities.length_squared()); +} + +void IKEffector3D::set_direction_priorities(Vector3 p_direction_priorities) { + direction_priorities = p_direction_priorities; +} + +Vector3 IKEffector3D::get_direction_priorities() const { + return direction_priorities; +} + +void IKEffector3D::update_target_global_transform(Skeleton3D *p_skeleton, ManyBoneIK3D *p_many_bone_ik) { + ERR_FAIL_NULL(p_skeleton); + ERR_FAIL_COND(for_bone.is_null()); + Node3D *current_target_node = cast_to(p_many_bone_ik->get_node_or_null(target_node_path)); + if (current_target_node && current_target_node->is_visible_in_tree()) { + target_relative_to_skeleton_origin = p_skeleton->get_global_transform().affine_inverse() * current_target_node->get_global_transform(); + } +} + +Transform3D IKEffector3D::get_target_global_transform() const { + return target_relative_to_skeleton_origin; +} + +int32_t IKEffector3D::update_effector_target_headings(PackedVector3Array *p_headings, int32_t p_index, Ref p_for_bone, const Vector *p_weights) const { + ERR_FAIL_COND_V(p_index == -1, -1); + ERR_FAIL_NULL_V(p_headings, -1); + ERR_FAIL_COND_V(p_for_bone.is_null(), -1); + ERR_FAIL_NULL_V(p_weights, -1); + + int32_t index = p_index; + Vector3 bone_origin_relative_to_skeleton_origin = for_bone->get_bone_direction_global_pose().origin; + p_headings->write[index] = target_relative_to_skeleton_origin.origin - bone_origin_relative_to_skeleton_origin; + index++; + Vector3 priority = get_direction_priorities(); + for (int axis = Vector3::AXIS_X; axis <= Vector3::AXIS_Z; ++axis) { + if (priority[axis] > 0.0) { + real_t w = p_weights->get(index); + Vector3 column = target_relative_to_skeleton_origin.basis.get_column(axis); + + p_headings->write[index] = (column + target_relative_to_skeleton_origin.origin) - bone_origin_relative_to_skeleton_origin; + p_headings->write[index] *= Vector3(w, w, w); + index++; + p_headings->write[index] = (target_relative_to_skeleton_origin.origin - column) - bone_origin_relative_to_skeleton_origin; + p_headings->write[index] *= Vector3(w, w, w); + index++; + } + } + + return index; +} + +int32_t IKEffector3D::update_effector_tip_headings(PackedVector3Array *p_headings, int32_t p_index, Ref p_for_bone) const { + ERR_FAIL_COND_V(p_index == -1, -1); + ERR_FAIL_NULL_V(p_headings, -1); + ERR_FAIL_COND_V(p_for_bone.is_null(), -1); + + Transform3D tip_xform_relative_to_skeleton_origin = for_bone->get_bone_direction_global_pose(); + Basis tip_basis = tip_xform_relative_to_skeleton_origin.basis; + Vector3 bone_origin_relative_to_skeleton_origin = p_for_bone->get_bone_direction_global_pose().origin; + + int32_t index = p_index; + p_headings->write[index] = tip_xform_relative_to_skeleton_origin.origin - bone_origin_relative_to_skeleton_origin; + index++; + double distance = target_relative_to_skeleton_origin.origin.distance_to(bone_origin_relative_to_skeleton_origin); + double scale_by = MIN(distance, 1.0f); + const Vector3 priority = get_direction_priorities(); + + for (int axis = Vector3::AXIS_X; axis <= Vector3::AXIS_Z; ++axis) { + if (priority[axis] > 0.0) { + Vector3 column = tip_basis.get_column(axis) * priority[axis]; + + p_headings->write[index] = (column + tip_xform_relative_to_skeleton_origin.origin) - bone_origin_relative_to_skeleton_origin; + p_headings->write[index] *= scale_by; + index++; + + p_headings->write[index] = (tip_xform_relative_to_skeleton_origin.origin - column) - bone_origin_relative_to_skeleton_origin; + p_headings->write[index] *= scale_by; + index++; + } + } + + return index; +} + +void IKEffector3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("set_target_node", "skeleton", "node"), + &IKEffector3D::set_target_node); + ClassDB::bind_method(D_METHOD("get_target_node"), + &IKEffector3D::get_target_node); + ClassDB::bind_method(D_METHOD("set_motion_propagation_factor", "amount"), + &IKEffector3D::set_motion_propagation_factor); + ClassDB::bind_method(D_METHOD("get_motion_propagation_factor"), + &IKEffector3D::get_motion_propagation_factor); + + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "motion_propagation_factor"), "set_motion_propagation_factor", "get_motion_propagation_factor"); +} + +void IKEffector3D::set_weight(real_t p_weight) { + weight = p_weight; +} + +real_t IKEffector3D::get_weight() const { + return weight; +} + +IKEffector3D::IKEffector3D(const Ref &p_current_bone) { + ERR_FAIL_COND(p_current_bone.is_null()); + for_bone = p_current_bone; +} + +void IKEffector3D::set_motion_propagation_factor(float p_motion_propagation_factor) { + motion_propagation_factor = CLAMP(p_motion_propagation_factor, 0.0, 1.0); +} + +float IKEffector3D::get_motion_propagation_factor() const { + return motion_propagation_factor; +} diff --git a/modules/many_bone_ik/src/ik_effector_3d.h b/modules/many_bone_ik/src/ik_effector_3d.h new file mode 100644 index 000000000000..c0c56e359244 --- /dev/null +++ b/modules/many_bone_ik/src/ik_effector_3d.h @@ -0,0 +1,92 @@ +/**************************************************************************/ +/* ik_effector_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_EFFECTOR_3D_H +#define IK_EFFECTOR_3D_H + +#include "math/ik_node_3d.h" + +#include "core/object/ref_counted.h" +#include "scene/3d/skeleton_3d.h" + +#define MIN_SCALE 0.1 + +class ManyBoneIK3D; +class IKBone3D; + +class IKEffector3D : public Resource { + GDCLASS(IKEffector3D, Resource); + friend class IKBone3D; + friend class IKBoneSegment3D; + + Ref for_bone; + bool use_target_node_rotation = true; + NodePath target_node_path; + ObjectID target_node_cache; + Node *target_node_reference = nullptr; + bool target_static = false; + Transform3D target_transform; + + Transform3D target_relative_to_skeleton_origin; + int32_t num_headings = 7; + // See IKEffectorTemplate to change the defaults. + real_t weight = 0.0; + real_t motion_propagation_factor = 0.0; + PackedVector3Array target_headings; + PackedVector3Array tip_headings; + Vector heading_weights; + Vector3 direction_priorities; + +protected: + static void _bind_methods(); + +public: + IKEffector3D() = default; + void set_weight(real_t p_weight); + real_t get_weight() const; + void set_direction_priorities(Vector3 p_direction_priorities); + Vector3 get_direction_priorities() const; + void update_target_global_transform(Skeleton3D *p_skeleton, ManyBoneIK3D *p_modification = nullptr); + const float MAX_KUSUDAMA_OPEN_CONES = 30; + float get_motion_propagation_factor() const; + void set_motion_propagation_factor(float p_motion_propagation_factor); + void set_target_node(Skeleton3D *p_skeleton, const NodePath &p_target_node_path); + NodePath get_target_node() const; + Transform3D get_target_global_transform() const; + void set_target_node_rotation(bool p_use); + bool get_target_node_rotation() const; + Ref get_ik_bone_3d() const; + bool is_following_translation_only() const; + int32_t update_effector_target_headings(PackedVector3Array *p_headings, int32_t p_index, Ref p_for_bone, const Vector *p_weights) const; + int32_t update_effector_tip_headings(PackedVector3Array *p_headings, int32_t p_index, Ref p_for_bone) const; + IKEffector3D(const Ref &p_current_bone); +}; + +#endif // IK_EFFECTOR_3D_H diff --git a/modules/many_bone_ik/src/ik_effector_template_3d.cpp b/modules/many_bone_ik/src/ik_effector_template_3d.cpp new file mode 100644 index 000000000000..d9d8d5963dee --- /dev/null +++ b/modules/many_bone_ik/src/ik_effector_template_3d.cpp @@ -0,0 +1,83 @@ +/**************************************************************************/ +/* ik_effector_template_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_effector_template_3d.h" + +#include "many_bone_ik_3d.h" + +void IKEffectorTemplate3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_root_bone"), &IKEffectorTemplate3D::get_root_bone); + ClassDB::bind_method(D_METHOD("set_root_bone", "target_node"), &IKEffectorTemplate3D::set_root_bone); + + ClassDB::bind_method(D_METHOD("get_target_node"), &IKEffectorTemplate3D::get_target_node); + ClassDB::bind_method(D_METHOD("set_target_node", "target_node"), &IKEffectorTemplate3D::set_target_node); + + ClassDB::bind_method(D_METHOD("get_motion_propagation_factor"), &IKEffectorTemplate3D::get_motion_propagation_factor); + ClassDB::bind_method(D_METHOD("set_motion_propagation_factor", "motion_propagation_factor"), &IKEffectorTemplate3D::set_motion_propagation_factor); + + ClassDB::bind_method(D_METHOD("get_weight"), &IKEffectorTemplate3D::get_weight); + ClassDB::bind_method(D_METHOD("set_weight", "weight"), &IKEffectorTemplate3D::set_weight); + + ClassDB::bind_method(D_METHOD("get_direction_priorities"), &IKEffectorTemplate3D::get_direction_priorities); + ClassDB::bind_method(D_METHOD("set_direction_priorities", "direction_priorities"), &IKEffectorTemplate3D::set_direction_priorities); + + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "motion_propagation_factor"), "set_motion_propagation_factor", "get_motion_propagation_factor"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "weight"), "set_weight", "get_weight"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "direction_priorities"), "set_direction_priorities", "get_direction_priorities"); + ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "target_node"), "set_target_node", "get_target_node"); + ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "root_bone"), "set_root_bone", "get_root_bone"); +} + +NodePath IKEffectorTemplate3D::get_target_node() const { + return target_node; +} + +void IKEffectorTemplate3D::set_target_node(NodePath p_node_path) { + target_node = p_node_path; +} + +float IKEffectorTemplate3D::get_motion_propagation_factor() const { + return motion_propagation_factor; +} + +void IKEffectorTemplate3D::set_motion_propagation_factor(float p_motion_propagation_factor) { + motion_propagation_factor = p_motion_propagation_factor; +} + +IKEffectorTemplate3D::IKEffectorTemplate3D() { +} + +String IKEffectorTemplate3D::get_root_bone() const { + return root_bone; +} + +void IKEffectorTemplate3D::set_root_bone(String p_node_path) { + root_bone = p_node_path; +} diff --git a/modules/many_bone_ik/src/ik_effector_template_3d.h b/modules/many_bone_ik/src/ik_effector_template_3d.h new file mode 100644 index 000000000000..a6f7add77f00 --- /dev/null +++ b/modules/many_bone_ik/src/ik_effector_template_3d.h @@ -0,0 +1,64 @@ +/**************************************************************************/ +/* ik_effector_template_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_EFFECTOR_TEMPLATE_3D_H +#define IK_EFFECTOR_TEMPLATE_3D_H + +#include "core/io/resource.h" +#include "core/string/node_path.h" + +class IKEffectorTemplate3D : public Resource { + GDCLASS(IKEffectorTemplate3D, Resource); + + StringName root_bone; + NodePath target_node; + bool target_static = false; + real_t motion_propagation_factor = 1.0f; + real_t weight = 0.0f; + Vector3 priority_direction = Vector3(0.2f, 0.0f, 0.2f); // Purported ideal values are 1.0 / 3.0 for one direction, 1.0 / 5.0 for two directions and 1.0 / 7.0 for three directions. +protected: + static void _bind_methods(); + +public: + String get_root_bone() const; + void set_root_bone(String p_root_bone); + NodePath get_target_node() const; + void set_target_node(NodePath p_node_path); + float get_motion_propagation_factor() const; + void set_motion_propagation_factor(float p_motion_propagation_factor); + real_t get_weight() const { return weight; } + void set_weight(real_t p_weight) { weight = p_weight; } + Vector3 get_direction_priorities() const { return priority_direction; } + void set_direction_priorities(Vector3 p_priority_direction) { priority_direction = p_priority_direction; } + + IKEffectorTemplate3D(); +}; + +#endif // IK_EFFECTOR_TEMPLATE_3D_H diff --git a/modules/many_bone_ik/src/ik_kusudama_3d.cpp b/modules/many_bone_ik/src/ik_kusudama_3d.cpp new file mode 100644 index 000000000000..3542a5a60586 --- /dev/null +++ b/modules/many_bone_ik/src/ik_kusudama_3d.cpp @@ -0,0 +1,427 @@ +/**************************************************************************/ +/* ik_kusudama_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_kusudama_3d.h" + +#include "core/math/quaternion.h" +#include "ik_open_cone_3d.h" +#include "math/ik_node_3d.h" + +void IKKusudama3D::_update_constraint(Ref p_limiting_axes) { + // Avoiding antipodal singularities by reorienting the axes. + Vector directions; + + if (open_cones.size() == 1 && open_cones[0].is_valid()) { + directions.push_back(open_cones[0]->get_control_point()); + } else { + for (int i = 0; i < open_cones.size() - 1; i++) { + if (open_cones[i].is_null() || open_cones[i + 1].is_null()) { + continue; + } + + Vector3 this_control_point = open_cones[i]->get_control_point(); + Vector3 next_control_point = open_cones[i + 1]->get_control_point(); + + Quaternion this_to_next = Quaternion(this_control_point, next_control_point); + + Vector3 axis = this_to_next.get_axis(); + double angle = this_to_next.get_angle() / 2.0; + + Vector3 half_angle = this_control_point.rotated(axis, angle); + half_angle *= this_to_next.get_angle(); + half_angle.normalize(); + + directions.push_back(half_angle); + } + } + + Vector3 new_y; + for (Vector3 direction_vector : directions) { + new_y += direction_vector; + } + + if (!directions.is_empty()) { + new_y /= directions.size(); + new_y.normalize(); + } + + Transform3D new_y_ray = Transform3D(Basis(), new_y); + Quaternion old_y_to_new_y = Quaternion(p_limiting_axes->get_global_transform().get_basis().get_column(Vector3::AXIS_Y).normalized(), p_limiting_axes->get_global_transform().get_basis().xform(new_y_ray.origin).normalized()); + p_limiting_axes->rotate_local_with_global(old_y_to_new_y); + + for (Ref open_cone : open_cones) { + if (open_cone.is_null()) { + continue; + } + + Vector3 control_point = open_cone->get_control_point(); + open_cone->set_control_point(control_point.normalized()); + } + + update_tangent_radii(); +} + +void IKKusudama3D::update_tangent_radii() { + for (int i = 0; i < open_cones.size(); i++) { + Ref current = open_cones.write[i]; + Ref next; + if (i < open_cones.size() - 1) { + next = open_cones.write[i + 1]; + } + Ref cone = open_cones[i]; + cone->update_tangent_handles(next); + } +} + +void IKKusudama3D::set_axial_limits(real_t min_angle, real_t in_range) { + min_axial_angle = min_angle; + range_angle = in_range; + Vector3 y_axis = Vector3(0.0f, 1.0f, 0.0f); + Vector3 z_axis = Vector3(0.0f, 0.0f, 1.0f); + twist_min_rot = IKKusudama3D::get_quaternion_axis_angle(y_axis, min_axial_angle); + twist_min_vec = twist_min_rot.xform(z_axis).normalized(); + twist_center_vec = twist_min_rot.xform(twist_min_vec).normalized(); + twist_center_rot = Quaternion(z_axis, twist_center_vec); + twist_half_range_half_cos = Math::cos(in_range / real_t(4.0)); // For the quadrance angle. We need half the range angle since starting from the center, and half of that since quadrance takes cos(angle/2). + twist_max_vec = IKKusudama3D::get_quaternion_axis_angle(y_axis, in_range).xform(twist_min_vec).normalized(); + twist_max_rot = Quaternion(z_axis, twist_max_vec); +} + +void IKKusudama3D::set_snap_to_twist_limit(Ref p_bone_direction, Ref p_to_set, Ref p_constraint_axes, real_t p_dampening, real_t p_cos_half_dampen) { + if (!is_axially_constrained()) { + return; + } + Transform3D global_transform_constraint = p_constraint_axes->get_global_transform(); + Transform3D global_transform_to_set = p_to_set->get_global_transform(); + Basis parent_global_inverse = p_to_set->get_parent()->get_global_transform().basis.inverse(); + Basis global_twist_center = global_transform_constraint.basis * twist_center_rot; + Basis align_rot = (global_twist_center.inverse() * global_transform_to_set.basis).orthonormalized(); + Quaternion twist_rotation, swing_rotation; // Hold the ik transform's decomposed swing and twist away from global_twist_centers's global basis. + get_swing_twist(align_rot.get_rotation_quaternion(), Vector3(0, 1, 0), swing_rotation, twist_rotation); + twist_rotation = IKBoneSegment3D::clamp_to_cos_half_angle(twist_rotation, twist_half_range_half_cos); + Basis recomposition = (global_twist_center * (swing_rotation * twist_rotation)).orthonormalized(); + Basis rotation = parent_global_inverse * recomposition; + p_to_set->set_transform(Transform3D(rotation, p_to_set->get_transform().origin)); +} + +void IKKusudama3D::get_swing_twist( + Quaternion p_rotation, + Vector3 p_axis, + Quaternion &r_swing, + Quaternion &r_twist) { +#ifdef MATH_CHECKS + ERR_FAIL_COND_MSG(!p_rotation.is_normalized(), "The quaternion must be normalized."); +#endif + if (Math::is_zero_approx(p_axis.length_squared())) { + r_swing = Quaternion(); + r_twist = Quaternion(); + return; + } + Quaternion rotation = p_rotation; + if (rotation.w < real_t(0.0)) { + rotation *= -1; + } + Vector3 p = p_axis * (rotation.x * p_axis.x + rotation.y * p_axis.y + rotation.z * p_axis.z); + r_twist = Quaternion(p.x, p.y, p.z, rotation.w).normalized(); + real_t d = Vector3(r_twist.x, r_twist.y, r_twist.z).dot(p_axis); + if (d < real_t(0.0)) { + r_twist *= real_t(-1.0); + } + r_swing = (rotation * r_twist.inverse()).normalized(); +} + +void IKKusudama3D::add_open_cone( + Ref p_cone) { + ERR_FAIL_COND(p_cone.is_null()); + ERR_FAIL_COND(p_cone->get_attached_to().is_null()); + open_cones.push_back(p_cone); + update_tangent_radii(); +} + +void IKKusudama3D::remove_open_cone(Ref limitCone) { + ERR_FAIL_COND(limitCone.is_null()); + open_cones.erase(limitCone); +} + +real_t IKKusudama3D::get_min_axial_angle() { + return min_axial_angle; +} + +real_t IKKusudama3D::get_range_angle() { + return range_angle; +} + +bool IKKusudama3D::is_axially_constrained() { + return axially_constrained; +} + +bool IKKusudama3D::is_orientationally_constrained() { + return orientationally_constrained; +} + +void IKKusudama3D::disable_orientational_limits() { + orientationally_constrained = false; +} + +void IKKusudama3D::enable_orientational_limits() { + orientationally_constrained = true; +} + +void IKKusudama3D::toggle_orientational_limits() { + orientationally_constrained = !orientationally_constrained; +} + +void IKKusudama3D::disable_axial_limits() { + axially_constrained = false; +} + +void IKKusudama3D::enable_axial_limits() { + axially_constrained = true; +} + +void IKKusudama3D::toggle_axial_limits() { + axially_constrained = !axially_constrained; +} + +bool IKKusudama3D::is_enabled() { + return axially_constrained || orientationally_constrained; +} + +void IKKusudama3D::disable() { + axially_constrained = false; + orientationally_constrained = false; +} + +void IKKusudama3D::enable() { + axially_constrained = true; + orientationally_constrained = true; +} + +TypedArray IKKusudama3D::get_open_cones() const { + TypedArray cones; + for (Ref cone : open_cones) { + cones.append(cone); + } + return cones; +} + +Vector3 IKKusudama3D::local_point_on_path_sequence(Vector3 p_in_point, Ref p_limiting_axes) { + double closest_point_dot = 0; + Vector3 point = p_limiting_axes->get_transform().xform(p_in_point); + point.normalize(); + Vector3 result = point; + + if (open_cones.size() == 1) { + Ref cone = open_cones[0]; + result = cone->get_control_point(); + } else { + for (int i = 0; i < open_cones.size() - 1; i++) { + Ref next_cone = open_cones[i + 1]; + Ref cone = open_cones[i]; + Vector3 closestPathPoint = cone->get_closest_path_point(next_cone, point); + double closeDot = closestPathPoint.dot(point); + if (closeDot > closest_point_dot) { + result = closestPathPoint; + closest_point_dot = closeDot; + } + } + } + + return result; +} + +/** + * Given a point (in global coordinates), checks to see if a ray can be extended from the Kusudama's + * origin to that point, such that the ray in the Kusudama's reference frame is within the range_angle allowed by the Kusudama's + * coneLimits. + * If such a ray exists, the original point is returned (the point is within the limits). + * If it cannot exist, the tip of the ray within the kusudama's limits that would require the least rotation + * to arrive at the input point is returned. + * @param in_point the point to test. + * @param in_bounds returns a number from -1 to 1 representing the point's distance from the boundary, 0 means the point is right on + * the boundary, 1 means the point is within the boundary and on the path furthest from the boundary. any negative number means + * the point is outside of the boundary, but does not signify anything about how far from the boundary the point is. + * @return the original point, if it's in limits, or the closest point which is in limits. + */ +Vector3 IKKusudama3D::get_local_point_in_limits(Vector3 in_point, Vector *in_bounds) { + // Normalize the input point + Vector3 point = in_point.normalized(); + real_t closest_cos = -2.0; + in_bounds->write[0] = -1; + + Vector3 closest_collision_point = in_point; + + // Loop through each limit cone + for (int i = 0; i < open_cones.size(); i++) { + Ref cone = open_cones[i]; + Vector3 collision_point = cone->closest_to_cone(point, in_bounds); + + // If the collision point is NaN, return the original point + if (Math::is_nan(collision_point.x) || Math::is_nan(collision_point.y) || Math::is_nan(collision_point.z)) { + in_bounds->write[0] = 1; + return point; + } + + // Calculate the cosine of the angle between the collision point and the original point + real_t this_cos = collision_point.dot(point); + + // If the closest collision point is not set or the cosine is greater than the current closest cosine, update the closest collision point and cosine + if (closest_collision_point.is_zero_approx() || this_cos > closest_cos) { + closest_collision_point = collision_point; + closest_cos = this_cos; + } + } + + // If we're out of bounds of all cones, check if we're in the paths between the cones + if ((*in_bounds)[0] == -1) { + for (int i = 0; i < open_cones.size() - 1; i++) { + Ref currCone = open_cones[i]; + Ref nextCone = open_cones[i + 1]; + Vector3 collision_point = currCone->get_on_great_tangent_triangle(nextCone, point); + + // If the collision point is NaN, skip to the next iteration + if (Math::is_nan(collision_point.x)) { + continue; + } + + real_t this_cos = collision_point.dot(point); + + // If the cosine is approximately 1, return the original point + if (Math::is_equal_approx(this_cos, real_t(1.0))) { + in_bounds->write[0] = 1; + return point; + } + + // If the cosine is greater than the current closest cosine, update the closest collision point and cosine + if (this_cos > closest_cos) { + closest_collision_point = collision_point; + closest_cos = this_cos; + } + } + } + + // Return the closest boundary point between cones + return closest_collision_point; +} + +void IKKusudama3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_open_cones"), &IKKusudama3D::get_open_cones); + ClassDB::bind_method(D_METHOD("set_open_cones", "open_cones"), &IKKusudama3D::set_open_cones); +} + +void IKKusudama3D::set_open_cones(TypedArray p_cones) { + open_cones.clear(); + open_cones.resize(p_cones.size()); + for (int32_t i = 0; i < p_cones.size(); i++) { + open_cones.write[i] = p_cones[i]; + } +} + +void IKKusudama3D::snap_to_orientation_limit(Ref bone_direction, Ref to_set, Ref limiting_axes, real_t p_dampening, real_t p_cos_half_angle_dampen) { + if (bone_direction.is_null()) { + return; + } + if (to_set.is_null()) { + return; + } + if (limiting_axes.is_null()) { + return; + } + Vector in_bounds; + in_bounds.resize(1); + in_bounds.write[0] = 1.0; + Vector3 limiting_origin = limiting_axes->get_global_transform().origin; + Vector3 bone_dir_xform = bone_direction->get_global_transform().xform(Vector3(0.0, 1.0, 0.0)); + + bone_ray->set_point_1(limiting_origin); + bone_ray->set_point_2(bone_dir_xform); + + Vector3 bone_tip = limiting_axes->to_local(bone_ray->get_point_2()); + Vector3 in_limits = get_local_point_in_limits(bone_tip, &in_bounds); + + if (in_bounds[0] < 0) { + constrained_ray->set_point_1(bone_ray->get_point_1()); + constrained_ray->set_point_2(limiting_axes->to_global(in_limits)); + + Quaternion rectified_rot = Quaternion(bone_ray->get_heading(), constrained_ray->get_heading()); + to_set->rotate_local_with_global(rectified_rot); + } +} + +bool IKKusudama3D::is_nan_vector(const Vector3 &vec) { + return Math::is_nan(vec.x) || Math::is_nan(vec.y) || Math::is_nan(vec.z); +} + +void IKKusudama3D::set_resistance(float p_resistance) { + resistance = p_resistance; +} + +float IKKusudama3D::get_resistance() { + return resistance; +} + +Quaternion IKKusudama3D::clamp_to_quadrance_angle(Quaternion p_rotation, double p_cos_half_angle) { +#ifdef MATH_CHECKS + ERR_FAIL_COND_V_MSG(!p_rotation.is_normalized(), Quaternion(), "The quaternion must be normalized."); +#endif + Quaternion rotation = p_rotation; + double newCoeff = 1.0 - (p_cos_half_angle * abs(p_cos_half_angle)); + double currentCoeff = rotation.x * rotation.x + rotation.y * rotation.y + rotation.z * rotation.z; + if (newCoeff >= currentCoeff) { + return rotation; + } + double over_limit = (currentCoeff - newCoeff) / (1.0 - newCoeff); + Quaternion clamped_rotation = rotation; + clamped_rotation.w = rotation.w < 0 ? -p_cos_half_angle : p_cos_half_angle; + double compositeCoeff = sqrt(newCoeff / currentCoeff); + clamped_rotation.x *= compositeCoeff; + clamped_rotation.y *= compositeCoeff; + clamped_rotation.z *= compositeCoeff; + if (!rotation.is_finite() || !clamped_rotation.is_finite()) { + return Quaternion(); + } + return rotation.slerp(clamped_rotation, over_limit); +} + +void IKKusudama3D::clear_open_cones() { + open_cones.clear(); +} + +Quaternion IKKusudama3D::get_quaternion_axis_angle(const Vector3 &p_axis, real_t p_angle) { + real_t d = p_axis.length_squared(); + if (d == 0) { + return Quaternion(); + } else { + real_t sin_angle = Math::sin(p_angle * 0.5f); + real_t cos_angle = Math::cos(p_angle * 0.5f); + real_t s = sin_angle / d; + return Quaternion(p_axis.x * s, p_axis.y * s, p_axis.z * s, cos_angle); + } +} diff --git a/modules/many_bone_ik/src/ik_kusudama_3d.h b/modules/many_bone_ik/src/ik_kusudama_3d.h new file mode 100644 index 000000000000..0ef9a926d85a --- /dev/null +++ b/modules/many_bone_ik/src/ik_kusudama_3d.h @@ -0,0 +1,203 @@ +/**************************************************************************/ +/* ik_kusudama_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_KUSUDAMA_3D_H +#define IK_KUSUDAMA_3D_H + +#include "ik_bone_3d.h" +#include "ik_bone_segment_3d.h" +#include "ik_open_cone_3d.h" +#include "ik_ray_3d.h" +#include "math/ik_node_3d.h" + +#include "core/io/resource.h" +#include "core/math/quaternion.h" +#include "core/object/ref_counted.h" +#include "core/variant/typed_array.h" +#include "scene/3d/node_3d.h" + +class IKBone3D; +class IKLimitCone3D; +class IKKusudama3D : public Resource { + GDCLASS(IKKusudama3D, Resource); + + /** + * An array containing all of the Kusudama's open_cones. The kusudama is built up + * with the expectation that any limitCone in the array is connected to the cone at the previous element in the array, + * and the cone at the next element in the array. + */ + Vector> open_cones; + + Quaternion twist_min_rot; + Vector3 twist_min_vec; + Vector3 twist_max_vec; + Vector3 twist_center_vec; + Quaternion twist_center_rot; + Quaternion twist_max_rot; + real_t twist_half_range_half_cos = 0; + Vector3 twist_tan; + bool flipped_bounds = false; + real_t resistance = 0; + + /** + * Defined as some Angle in radians about the limiting_axes Y axis, 0 being equivalent to the + * limiting_axes Z axis. + */ + real_t min_axial_angle = 0.0; + /** + * Defined as some Angle in radians about the limiting_axes Y axis, 0 being equivalent to the + * min_axial_angle + */ + real_t range_angle = Math_TAU; + + bool orientationally_constrained = false; + bool axially_constrained = false; + +protected: + static void _bind_methods(); + +public: + ~IKKusudama3D() {} + + IKKusudama3D() {} + + void _update_constraint(Ref p_limiting_axes); + + void update_tangent_radii(); + + Ref bone_ray = Ref(memnew(IKRay3D())); + Ref constrained_ray = Ref(memnew(IKRay3D())); + double unit_hyper_area = 2 * Math::pow(Math_PI, 2); + double unit_area = 4 * Math_PI; + + /** + * Get the swing rotation and twist rotation for the specified axis. The twist rotation represents the rotation around the specified axis. The swing rotation represents the rotation of the specified + * axis itself, which is the rotation around an axis perpendicular to the specified axis. The swing and twist rotation can be + * used to reconstruct the original quaternion: this = swing * twist + * + * @param p_axis the X, Y, Z component of the normalized axis for which to get the swing and twist rotation + * @return twist represent the rotational twist + * @return swing represent the rotational swing + * @see
calculation + */ + static void get_swing_twist( + Quaternion p_rotation, + Vector3 p_axis, + Quaternion &r_swing, + Quaternion &r_twist); + + static Quaternion get_quaternion_axis_angle(const Vector3 &p_axis, real_t p_angle); + +public: + /** + * Presumes the input axes are the bone's localAxes, and rotates + * them to satisfy the snap limits. + * + * @param to_set + */ + void snap_to_orientation_limit(Ref p_bone_direction, Ref p_to_set, Ref p_limiting_axes, real_t p_dampening, real_t p_cos_half_angle_dampen); + + bool is_nan_vector(const Vector3 &vec); + + /** + * Kusudama constraints decompose the bone orientation into a swing component, and a twist component. + * The "Swing" component is the final direction of the bone. The "Twist" component represents how much + * the bone is rotated about its own final direction. Where limit cones allow you to constrain the "Swing" + * component, this method lets you constrain the "twist" component. + * + * @param min_angle some angle in radians about the major rotation frame's y-axis to serve as the first angle within the range_angle that the bone is allowed to twist. + * @param in_range some angle in radians added to the min_angle. if the bone's local Z goes maxAngle radians beyond the min_angle, it is considered past the limit. + * This value is always interpreted as being in the positive direction. For example, if this value is -PI/2, the entire range_angle from min_angle to min_angle + 3PI/4 is + * considered valid. + */ + void set_axial_limits(real_t p_min_angle, real_t p_in_range); + + /** + * + * @param to_set + * @param limiting_axes + * @return radians of the twist required to snap bone into twist limits (0 if bone is already in twist limits) + */ + void set_snap_to_twist_limit(Ref p_bone_direction, Ref p_to_set, Ref p_limiting_axes, real_t p_dampening, real_t p_cos_half_dampen); + + /** + * Given a point (in local coordinates), checks to see if a ray can be extended from the Kusudama's + * origin to that point, such that the ray in the Kusudama's reference frame is within the range_angle allowed by the Kusudama's + * coneLimits. + * If such a ray exists, the original point is returned (the point is within the limits). + * If it cannot exist, the tip of the ray within the kusudama's limits that would require the least rotation + * to arrive at the input point is returned. + * @param in_point the point to test. + * @param in_bounds should be an array with at least 2 elements. The first element will be set to a number from -1 to 1 representing the point's distance from the boundary, 0 means the point is right on + * the boundary, 1 means the point is within the boundary and on the path furthest from the boundary. any negative number means + * the point is outside of the boundary, but does not signify anything about how far from the boundary the point is. + * The second element will be given a value corresponding to the limit cone whose bounds were exceeded. If the bounds were exceeded on a segment between two limit cones, + * this value will be set to a non-integer value between the two indices of the limitcone comprising the segment whose bounds were exceeded. + * @return the original point, if it's in limits, or the closest point which is in limits. + */ + Vector3 get_local_point_in_limits(Vector3 in_point, Vector *in_bounds); + + Vector3 local_point_on_path_sequence(Vector3 in_point, Ref limiting_axes); + + /** + * Add a IKLimitCone to the Kusudama. + * @param new_point where on the Kusudama to add the LimitCone (in Kusudama's local coordinate frame defined by its bone's majorRotationAxes)) + * @param radius the radius of the limitCone + */ + void add_open_cone(Ref p_open_cone); + void remove_open_cone(Ref limitCone); + + /** + * + * @return the lower bound on the axial constraint + */ + real_t get_min_axial_angle(); + real_t get_range_angle(); + + bool is_axially_constrained(); + bool is_orientationally_constrained(); + void disable_orientational_limits(); + void enable_orientational_limits(); + void toggle_orientational_limits(); + void disable_axial_limits(); + void enable_axial_limits(); + void toggle_axial_limits(); + bool is_enabled(); + void disable(); + void enable(); + void clear_open_cones(); + TypedArray get_open_cones() const; + void set_open_cones(TypedArray p_cones); + float get_resistance(); + void set_resistance(float p_resistance); + static Quaternion clamp_to_quadrance_angle(Quaternion p_rotation, double p_cos_half_angle); +}; + +#endif // IK_KUSUDAMA_3D_H diff --git a/modules/many_bone_ik/src/ik_open_cone_3d.cpp b/modules/many_bone_ik/src/ik_open_cone_3d.cpp new file mode 100644 index 000000000000..b4d3b3997e57 --- /dev/null +++ b/modules/many_bone_ik/src/ik_open_cone_3d.cpp @@ -0,0 +1,426 @@ +/**************************************************************************/ +/* ik_open_cone_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_open_cone_3d.h" + +#include "core/math/quaternion.h" +#include "ik_kusudama_3d.h" + +void IKLimitCone3D::update_tangent_handles(Ref p_next) { + if (p_next.is_null()) { + return; + } + double radA = get_radius(); + double radB = p_next->get_radius(); + + Vector3 A = get_control_point(); + Vector3 B = p_next->get_control_point(); + + Vector3 arc_normal = A.cross(B).normalized(); + + /** + * There are an infinite number of circles co-tangent with A and B, every other + * one of which has a unique radius. + * + * However, we want the radius of our tangent circles to obey the following properties: + * 1) When the radius of A + B == 0, our tangent circle's radius should = 90. + * In other words, the tangent circle should span a hemisphere. + * 2) When the radius of A + B == 180, our tangent circle's radius should = 0. + * In other words, when A + B combined are capable of spanning the entire sphere, + * our tangentCircle should be nothing. + * + * Another way to think of this is -- whatever the maximum distance can be between the + * borders of A and B (presuming their centers are free to move about the circle + * but their radii remain constant), we want our tangentCircle's diameter to be precisely that distance, + * and so, our tangent circles radius should be precisely half of that distance. + */ + double tRadius = (Math_PI - (radA + radB)) / 2; + + /** + * Once we have the desired radius for our tangent circle, we may find the solution for its + * centers (usually, there are two). + */ + double boundaryPlusTangentRadiusA = radA + tRadius; + double boundaryPlusTangentRadiusB = radB + tRadius; + + // the axis of this cone, scaled to minimize its distance to the tangent contact points. + Vector3 scaledAxisA = A * Math::cos(boundaryPlusTangentRadiusA); + // a point on the plane running through the tangent contact points + Quaternion temp_var = IKKusudama3D::get_quaternion_axis_angle(arc_normal, boundaryPlusTangentRadiusA); + Vector3 planeDir1A = temp_var.xform(A); + // another point on the same plane + Quaternion tempVar2 = IKKusudama3D::get_quaternion_axis_angle(A, Math_PI / 2); + Vector3 planeDir2A = tempVar2.xform(planeDir1A); + + Vector3 scaledAxisB = B * cos(boundaryPlusTangentRadiusB); + // a point on the plane running through the tangent contact points + Quaternion tempVar3 = IKKusudama3D::get_quaternion_axis_angle(arc_normal, boundaryPlusTangentRadiusB); + Vector3 planeDir1B = tempVar3.xform(B); + // another point on the same plane + Quaternion tempVar4 = IKKusudama3D::get_quaternion_axis_angle(B, Math_PI / 2); + Vector3 planeDir2B = tempVar4.xform(planeDir1B); + + // ray from scaled center of next cone to half way point between the circumference of this cone and the next cone. + Ref r1B = Ref(memnew(IKRay3D(planeDir1B, scaledAxisB))); + Ref r2B = Ref(memnew(IKRay3D(planeDir1B, planeDir2B))); + + r1B->elongate(99); + r2B->elongate(99); + + Vector3 intersection1 = r1B->get_intersects_plane(scaledAxisA, planeDir1A, planeDir2A); + Vector3 intersection2 = r2B->get_intersects_plane(scaledAxisA, planeDir1A, planeDir2A); + + Ref intersectionRay = Ref(memnew(IKRay3D(intersection1, intersection2))); + intersectionRay->elongate(99); + + Vector3 sphereIntersect1; + Vector3 sphereIntersect2; + Vector3 sphereCenter; + intersectionRay->intersects_sphere(sphereCenter, 1.0f, &sphereIntersect1, &sphereIntersect2); + + set_tangent_circle_center_next_1(sphereIntersect1); + set_tangent_circle_center_next_2(sphereIntersect2); + set_tangent_circle_radius_next(tRadius); + if (Math::is_zero_approx(tangent_circle_center_next_1.length_squared())) { + tangent_circle_center_next_1 = get_orthogonal(control_point).normalized(); + } + if (Math::is_zero_approx(tangent_circle_center_next_2.length_squared())) { + tangent_circle_center_next_2 = get_orthogonal(tangent_circle_center_next_1 * -1).normalized(); + } + if (p_next.is_valid()) { + compute_triangles(p_next); + } +} + +void IKLimitCone3D::set_tangent_circle_radius_next(double rad) { + tangent_circle_radius_next = rad; + tangent_circle_radius_next_cos = cos(tangent_circle_radius_next); +} + +Vector3 IKLimitCone3D::get_tangent_circle_center_next_1() { + return tangent_circle_center_next_1; +} + +double IKLimitCone3D::get_tangent_circle_radius_next() { + return tangent_circle_radius_next; +} + +double IKLimitCone3D::_get_tangent_circle_radius_next_cos() { + return tangent_circle_radius_next_cos; +} + +Vector3 IKLimitCone3D::get_tangent_circle_center_next_2() { + return tangent_circle_center_next_2; +} + +void IKLimitCone3D::compute_triangles(Ref p_next) { + if (p_next.is_null()) { + return; + } + first_triangle_next.write[1] = tangent_circle_center_next_1.normalized(); + first_triangle_next.write[0] = get_control_point().normalized(); + first_triangle_next.write[2] = p_next->get_control_point().normalized(); + + second_triangle_next.write[1] = tangent_circle_center_next_2.normalized(); + second_triangle_next.write[0] = get_control_point().normalized(); + second_triangle_next.write[2] = p_next->get_control_point().normalized(); +} + +Vector3 IKLimitCone3D::get_control_point() const { + return control_point; +} + +void IKLimitCone3D::set_control_point(Vector3 p_control_point) { + if (Math::is_zero_approx(p_control_point.length_squared())) { + control_point = Vector3(0, 1, 0); + } else { + control_point = p_control_point; + control_point.normalize(); + } +} + +double IKLimitCone3D::get_radius() const { + return radius; +} + +double IKLimitCone3D::get_radius_cosine() const { + return radius_cosine; +} + +void IKLimitCone3D::set_radius(double p_radius) { + radius = p_radius; + radius_cosine = cos(p_radius); +} + +bool IKLimitCone3D::_determine_if_in_bounds(Ref next, Vector3 input) const { + /** + * Procedure : Check if input is contained in this cone, or the next cone + * if it is, then we're finished and in bounds. otherwise, + * check if the point is contained within the tangent radii, + * if it is, then we're out of bounds and finished, otherwise + * in the tangent triangles while still remaining outside of the tangent radii + * if it is, then we're finished and in bounds. otherwise, we're out of bounds. + */ + + if (control_point.dot(input) >= radius_cosine) { + return true; + } else if (next.is_valid() && next->control_point.dot(input) >= next->radius_cosine) { + return true; + } else { + if (next.is_null()) { + return false; + } + bool inTan1Rad = tangent_circle_center_next_1.dot(input) > tangent_circle_radius_next_cos; + if (inTan1Rad) { + return false; + } + bool inTan2Rad = tangent_circle_center_next_2.dot(input) > tangent_circle_radius_next_cos; + if (inTan2Rad) { + return false; + } + + /*if we reach this point in the code, we are either on the path between two open_cones, or on the path extending out from between them + * but outside of their radii. + * To determine which , we take the cross product of each control point with each tangent center. + * The direction of each of the resultant vectors will represent the normal of a plane. + * Each of these four planes define part of a boundary which determines if our point is in bounds. + * If the dot product of our point with the normal of any of these planes is negative, we must be out + * of bounds. + * + * Older version of this code relied on a triangle intersection algorithm here, which I think is slightly less efficient on average + * as it didn't allow for early termination. . + */ + + Vector3 c1xc2 = control_point.cross(next->control_point); + double c1c2dir = input.dot(c1xc2); + + if (c1c2dir < 0.0) { + Vector3 c1xt1 = control_point.cross(tangent_circle_center_next_1); + Vector3 t1xc2 = tangent_circle_center_next_1.cross(next->control_point); + return input.dot(c1xt1) > 0 && input.dot(t1xc2) > 0; + } else { + Vector3 t2xc1 = tangent_circle_center_next_2.cross(control_point); + Vector3 c2xt2 = next->control_point.cross(tangent_circle_center_next_2); + return input.dot(t2xc1) > 0 && input.dot(c2xt2) > 0; + } + } +} + +Vector3 IKLimitCone3D::get_closest_path_point(Ref next, Vector3 input) const { + Vector3 result; + if (next.is_null()) { + result = _closest_cone(Ref(this), input); + } else { + result = _get_on_path_sequence(next, input); + bool is_number = !(Math::is_nan(result.x) && Math::is_nan(result.y) && Math::is_nan(result.z)); + if (!is_number) { + result = _closest_cone(next, input); + } + } + return result; +} + +Vector3 IKLimitCone3D::_get_closest_collision(Ref next, Vector3 input) const { + ERR_FAIL_COND_V(next.is_null(), input); + Vector3 result; + if (next.is_null()) { + Vector in_bounds = { 0.0 }; + result = _closest_cone(Ref(), input); + } else { + result = get_on_great_tangent_triangle(next, input); + bool is_number = !(Math::is_nan(result.x) && Math::is_nan(result.y) && Math::is_nan(result.z)); + if (!is_number) { + Vector in_bounds = { 0.0 }; + result = _closest_point_on_closest_cone(next, input, &in_bounds); + } + } + return result; +} + +Vector3 IKLimitCone3D::get_orthogonal(Vector3 p_in) { + Vector3 result; + float threshold = p_in.length() * 0.6f; + if (threshold > 0.f) { + if (Math::abs(p_in.x) <= threshold) { + float inverse = 1.f / Math::sqrt(p_in.y * p_in.y + p_in.z * p_in.z); + return result = Vector3(0.f, inverse * p_in.z, -inverse * p_in.y); + } else if (Math::abs(p_in.y) <= threshold) { + float inverse = 1.f / Math::sqrt(p_in.x * p_in.x + p_in.z * p_in.z); + return result = Vector3(-inverse * p_in.z, 0.f, inverse * p_in.x); + } + float inverse = 1.f / Math::sqrt(p_in.x * p_in.x + p_in.y * p_in.y); + return result = Vector3(inverse * p_in.y, -inverse * p_in.x, 0.f); + } + + return result; +} + +Vector3 IKLimitCone3D::get_on_great_tangent_triangle(Ref next, Vector3 input) const { + ERR_FAIL_COND_V(next.is_null(), input); + Vector3 c1xc2 = control_point.cross(next->control_point); + double c1c2dir = input.dot(c1xc2); + if (c1c2dir < 0.0) { + Vector3 c1xt1 = control_point.cross(tangent_circle_center_next_1).normalized(); + Vector3 t1xc2 = tangent_circle_center_next_1.cross(next->control_point).normalized(); + if (input.dot(c1xt1) > 0 && input.dot(t1xc2) > 0) { + double to_next_cos = input.dot(tangent_circle_center_next_1); + if (to_next_cos > tangent_circle_radius_next_cos) { + Vector3 plane_normal = tangent_circle_center_next_1.cross(input).normalized(); + plane_normal.normalize(); + Quaternion rotate_about_by = Quaternion(plane_normal, tangent_circle_radius_next); + return rotate_about_by.xform(tangent_circle_center_next_1); + } else { + return input; + } + } else { + return Vector3(NAN, NAN, NAN); + } + } else { + Vector3 t2xc1 = tangent_circle_center_next_2.cross(control_point).normalized(); + Vector3 c2xt2 = next->control_point.cross(tangent_circle_center_next_2).normalized(); + if (input.dot(t2xc1) > 0 && input.dot(c2xt2) > 0) { + if (input.dot(tangent_circle_center_next_2) > tangent_circle_radius_next_cos) { + Vector3 plane_normal = tangent_circle_center_next_2.cross(input).normalized(); + plane_normal.normalize(); + Quaternion rotate_about_by = Quaternion(plane_normal, tangent_circle_radius_next); + return rotate_about_by.xform(tangent_circle_center_next_2); + } else { + return input; + } + } else { + return Vector3(NAN, NAN, NAN); + } + } +} + +Vector3 IKLimitCone3D::_closest_cone(Ref next, Vector3 input) const { + if (next.is_null()) { + return control_point; + } + if (input.dot(control_point) > input.dot(next->control_point)) { + return control_point; + } else { + return next->control_point; + } +} + +Vector3 IKLimitCone3D::_closest_point_on_closest_cone(Ref next, Vector3 input, Vector *in_bounds) const { + ERR_FAIL_COND_V(next.is_null(), input); + Vector3 closestToFirst = closest_to_cone(input, in_bounds); + if (in_bounds != nullptr && (*in_bounds)[0] > 0.0) { + return closestToFirst; + } + if (next.is_null()) { + return closestToFirst; + } else { + Vector3 closestToSecond = next->closest_to_cone(input, in_bounds); + if (in_bounds != nullptr && (*in_bounds)[0] > 0.0) { + return closestToSecond; + } + double cosToFirst = input.dot(closestToFirst); + double cosToSecond = input.dot(closestToSecond); + + if (cosToFirst > cosToSecond) { + return closestToFirst; + } else { + return closestToSecond; + } + } +} + +Vector3 IKLimitCone3D::closest_to_cone(Vector3 input, Vector *in_bounds) const { + Vector3 normalized_input = input.normalized(); + Vector3 normalized_control_point = get_control_point().normalized(); + if (normalized_input.dot(normalized_control_point) > get_radius_cosine()) { + if (in_bounds != nullptr) { + in_bounds->write[0] = 1.0; + } + return Vector3(NAN, NAN, NAN); + } + Vector3 axis = normalized_control_point.cross(normalized_input).normalized(); + if (Math::is_zero_approx(axis.length_squared()) || !axis.is_finite()) { + axis = Vector3(0, 1, 0); + } + Quaternion rot_to = IKKusudama3D::get_quaternion_axis_angle(axis, get_radius()); + Vector3 axis_control_point = normalized_control_point; + if (Math::is_zero_approx(axis_control_point.length_squared())) { + axis_control_point = Vector3(0, 1, 0); + } + Vector3 result = rot_to.xform(axis_control_point); + if (in_bounds != nullptr) { + in_bounds->write[0] = -1; + } + return result; +} + +void IKLimitCone3D::set_tangent_circle_center_next_1(Vector3 point) { + tangent_circle_center_next_1 = point.normalized(); +} + +void IKLimitCone3D::set_tangent_circle_center_next_2(Vector3 point) { + tangent_circle_center_next_2 = point.normalized(); +} + +Vector3 IKLimitCone3D::_get_on_path_sequence(Ref next, Vector3 input) const { + if (next.is_null()) { + return Vector3(NAN, NAN, NAN); + } + Vector3 c1xc2 = get_control_point().cross(next->control_point).normalized(); + double c1c2dir = input.dot(c1xc2); + if (c1c2dir < 0.0) { + Vector3 c1xt1 = get_control_point().cross(tangent_circle_center_next_1).normalized(); + Vector3 t1xc2 = tangent_circle_center_next_1.cross(next->get_control_point()).normalized(); + if (input.dot(c1xt1) > 0.0f && input.dot(t1xc2) > 0.0f) { + Ref tan1ToInput = Ref(memnew(IKRay3D(tangent_circle_center_next_1, input))); + Vector3 result = tan1ToInput->get_intersects_plane(Vector3(0.0f, 0.0f, 0.0f), get_control_point(), next->get_control_point()); + return result.normalized(); + } else { + return Vector3(NAN, NAN, NAN); + } + } else { + Vector3 t2xc1 = tangent_circle_center_next_2.cross(control_point).normalized(); + Vector3 c2xt2 = next->get_control_point().cross(tangent_circle_center_next_2).normalized(); + if (input.dot(t2xc1) > 0 && input.dot(c2xt2) > 0) { + Ref tan2ToInput = Ref(memnew(IKRay3D(tangent_circle_center_next_2, input))); + Vector3 result = tan2ToInput->get_intersects_plane(Vector3(0.0f, 0.0f, 0.0f), get_control_point(), next->get_control_point()); + return result.normalized(); + } else { + return Vector3(NAN, NAN, NAN); + } + } +} + +void IKLimitCone3D::set_attached_to(Ref p_attached_to) { + parent_kusudama.set_ref(p_attached_to); +} + +Ref IKLimitCone3D::get_attached_to() { + return parent_kusudama.get_ref(); +} diff --git a/modules/many_bone_ik/src/ik_open_cone_3d.h b/modules/many_bone_ik/src/ik_open_cone_3d.h new file mode 100644 index 000000000000..47bb31b4e469 --- /dev/null +++ b/modules/many_bone_ik/src/ik_open_cone_3d.h @@ -0,0 +1,135 @@ +/**************************************************************************/ +/* ik_open_cone_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_OPEN_CONE_3D_H +#define IK_OPEN_CONE_3D_H + +#include "core/io/resource.h" +#include "core/math/vector3.h" +#include "core/object/ref_counted.h" + +class IKKusudama3D; +class IKLimitCone3D : public Resource { + GDCLASS(IKLimitCone3D, Resource); + void compute_triangles(Ref p_next); + + Vector3 control_point = Vector3(0, 1, 0); + Vector3 radial_point; + + // Radius stored as cosine to save on the acos call necessary for the angle between. + double radius_cosine = 0; + double radius = 0; + Vector3 _closest_cone(Ref next, Vector3 input) const; + void set_tangent_circle_radius_next(double rad); + WeakRef parent_kusudama; + + Vector3 tangent_circle_center_next_1; + Vector3 tangent_circle_center_next_2; + double tangent_circle_radius_next = 0; + double tangent_circle_radius_next_cos = 0; + + /** + * A triangle where the [1] is the tangent_circle_next_n, and [0] and [2] + * are the points at which the tangent circle intersects this IKLimitCone and the + * next IKLimitCone. + */ + Vector first_triangle_next = { Vector3(), Vector3(), Vector3() }; + Vector second_triangle_next = { Vector3(), Vector3(), Vector3() }; + + /** + * + * @param next + * @param input + * @return null if the input point is already in bounds, or the point's rectified position + * if the point was out of bounds. + */ + Vector3 _get_closest_collision(Ref next, Vector3 input) const; + + /** + * Determines if a ray emanating from the origin to given point in local space + * lies within the path from this cone to the next cone. This function relies on + * an optimization trick for a performance boost, but the trick ruins everything + * if the input isn't normalized. So it is ABSOLUTELY VITAL + * that @param input have unit length in order for this function to work correctly. + * @param next + * @param input + * @return + */ + bool _determine_if_in_bounds(Ref next, Vector3 input) const; + Vector3 _get_on_path_sequence(Ref next, Vector3 input) const; + + /** + * returns null if no rectification is required. + * @param next + * @param input + * @param in_bounds + * @return + */ + Vector3 _closest_point_on_closest_cone(Ref next, Vector3 input, Vector *in_bounds) const; + + double _get_tangent_circle_radius_next_cos(); + +public: + IKLimitCone3D() {} + virtual ~IKLimitCone3D() {} + void set_attached_to(Ref p_attached_to); + Ref get_attached_to(); + void update_tangent_handles(Ref p_next); + void set_tangent_circle_center_next_1(Vector3 point); + void set_tangent_circle_center_next_2(Vector3 point); + /** + * + * @param next + * @param input + * @return null if inapplicable for rectification. the original point if in bounds, or the point rectified to the closest boundary on the path sequence + * between two cones if the point is out of bounds and applicable for rectification. + */ + Vector3 get_on_great_tangent_triangle(Ref next, Vector3 input) const; + double get_tangent_circle_radius_next(); + Vector3 get_tangent_circle_center_next_1(); + Vector3 get_tangent_circle_center_next_2(); + + /** + * returns null if no rectification is required. + * @param input + * @param in_bounds + * @return + */ + Vector3 closest_to_cone(Vector3 input, Vector *in_bounds) const; + Vector3 get_closest_path_point(Ref next, Vector3 input) const; + Vector3 get_control_point() const; + void set_control_point(Vector3 p_control_point); + double get_radius() const; + double get_radius_cosine() const; + void set_radius(double radius); + static Vector3 get_orthogonal(Vector3 p_input); +}; + +#endif // IK_OPEN_CONE_3D_H diff --git a/modules/many_bone_ik/src/ik_ray_3d.cpp b/modules/many_bone_ik/src/ik_ray_3d.cpp new file mode 100644 index 000000000000..4ec35a56cc11 --- /dev/null +++ b/modules/many_bone_ik/src/ik_ray_3d.cpp @@ -0,0 +1,212 @@ +/**************************************************************************/ +/* ik_ray_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_ray_3d.h" + +IKRay3D::IKRay3D() { +} + +IKRay3D::IKRay3D(Vector3 p_p1, Vector3 p_p2) { + working_vector = p_p1; + point_1 = p_p1; + point_2 = p_p2; +} + +Vector3 IKRay3D::get_heading() { + working_vector = point_2; + return working_vector - point_1; +} + +void IKRay3D::set_heading(const Vector3 &p_new_head) { + point_2 = point_1; + point_2 = p_new_head; +} + +real_t IKRay3D::get_scaled_projection(const Vector3 p_input) { + working_vector = p_input; + working_vector = working_vector - point_1; + Vector3 heading = get_heading(); + real_t headingMag = heading.length(); + real_t workingVectorMag = working_vector.length(); + if (workingVectorMag == 0 || headingMag == 0) { + return 0; + } + return (working_vector.dot(heading) / (headingMag * workingVectorMag)) * (workingVectorMag / headingMag); +} + +void IKRay3D::elongate(real_t amt) { + Vector3 midPoint = (point_1 + point_2) * 0.5f; + Vector3 p1Heading = point_1 - midPoint; + Vector3 p2Heading = point_2 - midPoint; + Vector3 p1Add = p1Heading.normalized() * amt; + Vector3 p2Add = p2Heading.normalized() * amt; + + point_1 = p1Heading + p1Add + midPoint; + point_2 = p2Heading + p2Add + midPoint; +} + +Vector3 IKRay3D::get_intersects_plane(Vector3 ta, Vector3 tb, Vector3 tc) { + Vector3 uvw; + tta = ta; + ttb = tb; + ttc = tc; + tta -= point_1; + ttb -= point_1; + ttc -= point_1; + Vector3 result = plane_intersect_test(tta, ttb, ttc, &uvw); + return result + point_1; +} + +int IKRay3D::intersects_sphere(Vector3 sphereCenter, real_t radius, Vector3 *S1, Vector3 *S2) { + Vector3 tp1 = point_1 - sphereCenter; + Vector3 tp2 = point_2 - sphereCenter; + int result = intersects_sphere(tp1, tp2, radius, S1, S2); + *S1 += sphereCenter; + *S2 += sphereCenter; + return result; +} + +void IKRay3D::set_point_1(Vector3 in) { + point_1 = in; +} + +void IKRay3D::set_point_2(Vector3 in) { + point_2 = in; +} + +Vector3 IKRay3D::get_point_2() { + return point_2; +} + +Vector3 IKRay3D::get_point_1() { + return point_1; +} + +int IKRay3D::intersects_sphere(Vector3 rp1, Vector3 rp2, real_t radius, Vector3 *S1, Vector3 *S2) { + Vector3 direction = rp2 - rp1; + Vector3 e = direction; // e=ray.dir + e.normalize(); // e=g/|g| + Vector3 h = point_1; + h = Vector3(0.0f, 0.0f, 0.0f); + h = h - rp1; // h=r.o-c.M + real_t lf = e.dot(h); // lf=e.h + real_t radpow = radius * radius; + real_t hdh = h.length_squared(); + real_t lfpow = lf * lf; + real_t s = radpow - hdh + lfpow; // s=r^2-h^2+lf^2 + if (s < 0.0f) { + return 0; // no intersection points ? + } + s = Math::sqrt(s); // s=sqrt(r^2-h^2+lf^2) + + int result = 0; + if (lf < s) { + if (lf + s >= 0) { + s = -s; // swap S1 <-> S2} + result = 1; // one intersection point + } + } else { + result = 2; // 2 intersection points + } + + *S1 = e * (lf - s); + *S1 += rp1; // S1=A+e*(lf-s) + *S2 = e * (lf + s); + *S2 += rp1; // S2=A+e*(lf+s) + return result; +} + +Vector3 IKRay3D::plane_intersect_test(Vector3 ta, Vector3 tb, Vector3 tc, Vector3 *uvw) { + u = tb; + v = tc; + n = Vector3(0, 0, 0); + dir = get_heading(); + w0 = Vector3(0, 0, 0); + real_t r, a, b; + u -= ta; + v -= ta; + + n = u.cross(v).normalized(); + + w0 -= ta; + a = -(n.dot(w0)); + b = n.dot(dir); + r = a / b; + I = dir; + I *= r; + barycentric(ta, tb, tc, I, uvw); + return I; +} + +real_t IKRay3D::triangle_area_2d(real_t x1, real_t y1, real_t x2, real_t y2, real_t x3, real_t y3) { + return (x1 - x2) * (y2 - y3) - (x2 - x3) * (y1 - y2); +} + +void IKRay3D::barycentric(Vector3 a, Vector3 b, Vector3 c, Vector3 p, Vector3 *uvw) { + bc = b; + ca = a; + at = a; + bt = b; + ct = c; + pt = p; + + m = Vector3(bc - ct).cross(ca - at).normalized(); + + real_t nu; + real_t nv; + real_t ood; + + real_t x = Math::abs(m.x); + real_t y = Math::abs(m.y); + real_t z = Math::abs(m.z); + + if (x >= y && x >= z) { + nu = triangle_area_2d(pt.y, pt.z, bt.y, bt.z, ct.y, ct.z); + nv = triangle_area_2d(pt.y, pt.z, ct.y, ct.z, at.y, at.z); + ood = 1.0f / m.x; + } else if (y >= x && y >= z) { + nu = triangle_area_2d(pt.x, pt.z, bt.x, bt.z, ct.x, ct.z); + nv = triangle_area_2d(pt.x, pt.z, ct.x, ct.z, at.x, at.z); + ood = 1.0f / -m.y; + } else { + nu = triangle_area_2d(pt.x, pt.y, bt.x, bt.y, ct.x, ct.y); + nv = triangle_area_2d(pt.x, pt.y, ct.x, ct.y, at.x, at.y); + ood = 1.0f / m.z; + } + (*uvw)[0] = nu * ood; + (*uvw)[1] = nv * ood; + (*uvw)[2] = 1.0f - (*uvw)[0] - (*uvw)[1]; +} + +void IKRay3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_heading"), &IKRay3D::get_heading); + ClassDB::bind_method(D_METHOD("get_scaled_projection", "input"), &IKRay3D::get_scaled_projection); + ClassDB::bind_method(D_METHOD("get_intersects_plane", "a", "b", "c"), &IKRay3D::get_intersects_plane); +} diff --git a/modules/many_bone_ik/src/ik_ray_3d.h b/modules/many_bone_ik/src/ik_ray_3d.h new file mode 100644 index 000000000000..4aa57a4058a8 --- /dev/null +++ b/modules/many_bone_ik/src/ik_ray_3d.h @@ -0,0 +1,128 @@ +/**************************************************************************/ +/* ik_ray_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_RAY_3D_H +#define IK_RAY_3D_H + +#include "core/io/resource.h" +#include "core/math/vector3.h" + +class IKRay3D : public RefCounted { + GDCLASS(IKRay3D, RefCounted); + + Vector3 tta, ttb, ttc; + Vector3 I, u, v, n, dir, w0; + Vector3 m, at, bt, ct, pt; + Vector3 bc, ca, ac; + + Vector3 point_1; + Vector3 point_2; + Vector3 working_vector; + +protected: + static void _bind_methods(); + +public: + IKRay3D(); + ~IKRay3D() {} + IKRay3D(Vector3 p_point_one, Vector3 p_point_two); + Vector3 get_heading(); + void set_heading(const Vector3 &p_new_head); + + /** + * Returns the scalar projection of the input vector on this + * ray. In other words, if this ray goes from (5, 0) to (10, 0), + * and the input vector is (7.5, 7), this function + * would output 0.5. Because that is amount the ray would need + * to be scaled by so that its tip is where the vector would project onto + * this ray. + *

+ * Due to floating point errors, the intended properties of this function might + * not be entirely consistent with its output under summation. + *

+ * To help spare programmer cognitive cycles debugging in such circumstances, + * the intended properties + * are listed for reference here (despite their being easily inferred). + *

+ * 1. calling get_scaled_projection(someVector) should return the same value as + * calling + * get_scaled_projection(closestPointTo(someVector). + * 2. calling getMultipliedBy(get_scaled_projection(someVector)) should return the + * same + * vector as calling closestPointTo(someVector) + * + * @param p_input a vector to project onto this ray + */ + real_t get_scaled_projection(const Vector3 p_input); + + /** + * adds the specified length to the ray in both directions. + */ + void elongate(real_t p_amount); + + /** + * @param ta the first vertex of a triangle on the plane + * @param tb the second vertex of a triangle on the plane + * @param tc the third vertex of a triangle on the plane + * @return the point where this ray intersects the plane specified by the + * triangle ta,tb,tc. + */ + Vector3 get_intersects_plane(Vector3 p_vertex_a, Vector3 p_vertex_b, Vector3 p_vertex_c); + + /* + * Find where this ray intersects a sphere + * + * @param Vector3 the center of the sphere to test against. + * + * @param radius radius of the sphere + * + * @param S1 reference to variable in which the first intersection will be + * placed + * + * @param S2 reference to variable in which the second intersection will be + * placed + * + * @return number of intersections found; + */ + int intersects_sphere(Vector3 p_sphere_center, real_t p_radius, Vector3 *r_first_intersection, Vector3 *r_second_intersection); + void set_point_1(Vector3 p_point); + void set_point_2(Vector3 p_point); + Vector3 get_point_2(); + Vector3 get_point_1(); + int intersects_sphere(Vector3 p_rp1, Vector3 p_rp2, real_t p_radius, Vector3 *r_first_intersection, Vector3 *r_second_intersection); + real_t triangle_area_2d(real_t p_x1, real_t p_y1, real_t p_x2, real_t p_y2, real_t p_x3, real_t p_y3); + void barycentric(Vector3 p_a, Vector3 p_b, Vector3 p_c, Vector3 p_p, Vector3 *r_uvw); + Vector3 plane_intersect_test(Vector3 p_vertex_a, Vector3 p_vertex_b, Vector3 p_vertex_c, Vector3 *uvw); + operator String() const { + return String(L"(") + point_1.x + L" -> " + point_2.x + L") \n " + L"(" + point_1.y + L" -> " + point_2.y + L") \n " + L"(" + point_1.z + L" -> " + point_2.z + L") \n "; + } +}; + +#endif // IK_RAY_3D_H diff --git a/modules/many_bone_ik/src/many_bone_ik_3d.cpp b/modules/many_bone_ik/src/many_bone_ik_3d.cpp new file mode 100644 index 000000000000..6313d4c368bf --- /dev/null +++ b/modules/many_bone_ik/src/many_bone_ik_3d.cpp @@ -0,0 +1,1094 @@ +/**************************************************************************/ +/* many_bone_ik_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "many_bone_ik_3d.h" +#include "core/error/error_macros.h" +#include "core/math/math_defs.h" +#include "core/object/class_db.h" +#include "core/object/object.h" +#include "core/string/string_name.h" +#include "ik_bone_3d.h" +#include "ik_kusudama_3d.h" +#include "ik_open_cone_3d.h" +#include "scene/3d/skeleton_3d.h" +#include "scene/main/node.h" +#include "scene/main/scene_tree.h" + +void ManyBoneIK3D::set_pin_count(int32_t p_value) { + int32_t old_count = pins.size(); + pin_count = p_value; + pins.resize(p_value); + for (int32_t pin_i = p_value; pin_i-- > old_count;) { + pins.write[pin_i].instantiate(); + } + set_dirty(); + notify_property_list_changed(); +} + +int32_t ManyBoneIK3D::get_pin_count() const { + return pin_count; +} + +void ManyBoneIK3D::set_pin_target_node_path(int32_t p_pin_index, const NodePath &p_target_node) { + ERR_FAIL_INDEX(p_pin_index, pins.size()); + Ref effector_template = pins[p_pin_index]; + if (effector_template.is_null()) { + effector_template.instantiate(); + pins.write[p_pin_index] = effector_template; + } + effector_template->set_target_node(p_target_node); + set_dirty(); +} + +NodePath ManyBoneIK3D::get_pin_target_node_path(int32_t p_pin_index) { + ERR_FAIL_INDEX_V(p_pin_index, pins.size(), NodePath()); + const Ref effector_template = pins[p_pin_index]; + return effector_template->get_target_node(); +} + +Vector> ManyBoneIK3D::_get_bone_effectors() const { + return pins; +} + +void ManyBoneIK3D::_remove_pin(int32_t p_index) { + ERR_FAIL_INDEX(p_index, pins.size()); + pins.remove_at(p_index); + pin_count--; + pins.resize(pin_count); + set_dirty(); +} + +void ManyBoneIK3D::_update_ik_bones_transform() { + for (int32_t bone_i = bone_list.size(); bone_i-- > 0;) { + Ref bone = bone_list[bone_i]; + if (bone.is_null()) { + continue; + } + bone->set_initial_pose(get_skeleton()); + if (bone->is_pinned()) { + bone->get_pin()->update_target_global_transform(get_skeleton(), this); + } + } +} + +void ManyBoneIK3D::_update_skeleton_bones_transform() { + for (int32_t bone_i = bone_list.size(); bone_i-- > 0;) { + Ref bone = bone_list[bone_i]; + if (bone.is_null()) { + continue; + } + if (bone->get_bone_id() == -1) { + continue; + } + bone->set_skeleton_bone_pose(get_skeleton()); + } + update_gizmos(); +} + +void ManyBoneIK3D::_get_property_list(List *p_list) const { + const Vector> ik_bones = get_bone_list(); + RBSet existing_pins; + for (int32_t pin_i = 0; pin_i < get_pin_count(); pin_i++) { + const String bone_name = get_pin_bone_name(pin_i); + existing_pins.insert(bone_name); + } + const uint32_t pin_usage = PROPERTY_USAGE_DEFAULT; + p_list->push_back( + PropertyInfo(Variant::INT, "pin_count", + PROPERTY_HINT_RANGE, "0,65536,or_greater", pin_usage | PROPERTY_USAGE_ARRAY | PROPERTY_USAGE_READ_ONLY, + "Pins,pins/")); + for (int pin_i = 0; pin_i < get_pin_count(); pin_i++) { + PropertyInfo effector_name; + effector_name.type = Variant::STRING_NAME; + effector_name.name = "pins/" + itos(pin_i) + "/bone_name"; + effector_name.usage = pin_usage; + if (get_skeleton()) { + String names; + for (int bone_i = 0; bone_i < get_skeleton()->get_bone_count(); bone_i++) { + String name = get_skeleton()->get_bone_name(bone_i); + StringName string_name = StringName(name); + if (existing_pins.has(string_name)) { + continue; + } + name += ","; + names += name; + existing_pins.insert(name); + } + effector_name.hint = PROPERTY_HINT_ENUM_SUGGESTION; + effector_name.hint_string = names; + } else { + effector_name.hint = PROPERTY_HINT_NONE; + effector_name.hint_string = ""; + } + p_list->push_back(effector_name); + p_list->push_back( + PropertyInfo(Variant::NODE_PATH, "pins/" + itos(pin_i) + "/target_node", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Node3D", pin_usage)); + p_list->push_back( + PropertyInfo(Variant::BOOL, "pins/" + itos(pin_i) + "/target_static", PROPERTY_HINT_NONE, "", pin_usage)); + p_list->push_back( + PropertyInfo(Variant::FLOAT, "pins/" + itos(pin_i) + "/motion_propagation_factor", PROPERTY_HINT_RANGE, "0,1,0.1,or_greater", pin_usage)); + p_list->push_back( + PropertyInfo(Variant::FLOAT, "pins/" + itos(pin_i) + "/weight", PROPERTY_HINT_RANGE, "0,1,0.1,or_greater", pin_usage)); + p_list->push_back( + PropertyInfo(Variant::VECTOR3, "pins/" + itos(pin_i) + "/direction_priorities", PROPERTY_HINT_RANGE, "0,1,0.1,or_greater", pin_usage)); + } + uint32_t constraint_usage = PROPERTY_USAGE_DEFAULT; + p_list->push_back( + PropertyInfo(Variant::INT, "constraint_count", + PROPERTY_HINT_RANGE, "0,256,or_greater", constraint_usage | PROPERTY_USAGE_ARRAY | PROPERTY_USAGE_READ_ONLY, + "Kusudama Constraints,constraints/")); + RBSet existing_constraints; + for (int constraint_i = 0; constraint_i < get_constraint_count(); constraint_i++) { + PropertyInfo bone_name; + bone_name.type = Variant::STRING_NAME; + bone_name.usage = constraint_usage; + bone_name.name = "constraints/" + itos(constraint_i) + "/bone_name"; + if (get_skeleton()) { + String names; + for (int bone_i = 0; bone_i < get_skeleton()->get_bone_count(); bone_i++) { + String name = get_skeleton()->get_bone_name(bone_i); + if (existing_constraints.has(name)) { + continue; + } + name += ","; + names += name; + existing_constraints.insert(name); + } + bone_name.hint = PROPERTY_HINT_ENUM_SUGGESTION; + bone_name.hint_string = names; + } else { + bone_name.hint = PROPERTY_HINT_NONE; + bone_name.hint_string = ""; + } + p_list->push_back(bone_name); + p_list->push_back( + PropertyInfo(Variant::FLOAT, "constraints/" + itos(constraint_i) + "/twist_start", PROPERTY_HINT_RANGE, "-359.9,359.9,0.1,radians,exp", constraint_usage)); + p_list->push_back( + PropertyInfo(Variant::FLOAT, "constraints/" + itos(constraint_i) + "/twist_end", PROPERTY_HINT_RANGE, "-359.9,359.9,0.1,radians,exp", constraint_usage)); + p_list->push_back( + PropertyInfo(Variant::INT, "constraints/" + itos(constraint_i) + "/kusudama_open_cone_count", PROPERTY_HINT_RANGE, "0,10,1", constraint_usage | PROPERTY_USAGE_ARRAY | PROPERTY_USAGE_READ_ONLY, + "Limit Cones,constraints/" + itos(constraint_i) + "/kusudama_open_cone/")); + for (int cone_i = 0; cone_i < get_kusudama_open_cone_count(constraint_i); cone_i++) { + p_list->push_back( + PropertyInfo(Variant::VECTOR3, "constraints/" + itos(constraint_i) + "/kusudama_open_cone/" + itos(cone_i) + "/center", PROPERTY_HINT_RANGE, "-1,1,0.1,exp", constraint_usage)); + + p_list->push_back( + PropertyInfo(Variant::FLOAT, "constraints/" + itos(constraint_i) + "/kusudama_open_cone/" + itos(cone_i) + "/radius", PROPERTY_HINT_RANGE, "0,180,0.1,radians,exp", constraint_usage)); + } + p_list->push_back( + PropertyInfo(Variant::TRANSFORM3D, "constraints/" + itos(constraint_i) + "/kusudama_twist", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE)); + p_list->push_back( + PropertyInfo(Variant::TRANSFORM3D, "constraints/" + itos(constraint_i) + "/kusudama_orientation", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE)); + p_list->push_back( + PropertyInfo(Variant::TRANSFORM3D, "constraints/" + itos(constraint_i) + "/bone_direction", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE)); + } +} + +bool ManyBoneIK3D::_get(const StringName &p_name, Variant &r_ret) const { + String name = p_name; + if (name == "constraint_count") { + r_ret = get_constraint_count(); + return true; + } else if (name == "pin_count") { + r_ret = get_pin_count(); + return true; + } else if (name == "bone_count") { + r_ret = get_bone_count(); + return true; + } else if (name.begins_with("pins/")) { + int index = name.get_slicec('/', 1).to_int(); + String what = name.get_slicec('/', 2); + ERR_FAIL_INDEX_V(index, pins.size(), false); + Ref effector_template = pins[index]; + ERR_FAIL_COND_V(effector_template.is_null(), false); + if (what == "bone_name") { + r_ret = effector_template->get_name(); + return true; + } else if (what == "target_node") { + r_ret = effector_template->get_target_node(); + return true; + } else if (what == "target_static") { + r_ret = effector_template->get_target_node().is_empty(); + return true; + } else if (what == "motion_propagation_factor") { + r_ret = get_pin_motion_propagation_factor(index); + return true; + } else if (what == "weight") { + r_ret = get_pin_weight(index); + return true; + } else if (what == "direction_priorities") { + r_ret = get_pin_direction_priorities(index); + return true; + } + } else if (name.begins_with("constraints/")) { + int index = name.get_slicec('/', 1).to_int(); + String what = name.get_slicec('/', 2); + ERR_FAIL_INDEX_V(index, constraint_count, false); + String begins = "constraints/" + itos(index) + "/kusudama_open_cone"; + if (what == "bone_name") { + ERR_FAIL_INDEX_V(index, constraint_names.size(), false); + r_ret = constraint_names[index]; + return true; + } else if (what == "twist_start") { + r_ret = get_joint_twist(index).x; + return true; + } else if (what == "twist_end") { + r_ret = get_joint_twist(index).y; + return true; + } else if (what == "kusudama_open_cone_count") { + r_ret = get_kusudama_open_cone_count(index); + return true; + } else if (name.begins_with(begins)) { + int32_t cone_index = name.get_slicec('/', 3).to_int(); + String cone_what = name.get_slicec('/', 4); + if (cone_what == "center") { + Vector3 center = get_kusudama_open_cone_center(index, cone_index); + r_ret = center; + return true; + } else if (cone_what == "radius") { + r_ret = get_kusudama_open_cone_radius(index, cone_index); + return true; + } + } else if (what == "bone_direction") { + r_ret = get_direction_transform_of_bone(index); + return true; + } else if (what == "kusudama_orientation") { + r_ret = get_orientation_transform_of_constraint(index); + return true; + } else if (what == "kusudama_twist") { + r_ret = get_twist_transform_of_constraint(index); + return true; + } + } + return false; +} + +bool ManyBoneIK3D::_set(const StringName &p_name, const Variant &p_value) { + String name = p_name; + if (name == "constraint_count") { + _set_constraint_count(p_value); + return true; + } else if (name == "pin_count") { + set_pin_count(p_value); + return true; + } else if (name.begins_with("pins/")) { + int index = name.get_slicec('/', 1).to_int(); + String what = name.get_slicec('/', 2); + if (index >= pins.size()) { + set_pin_count(constraint_count); + } + if (what == "bone_name") { + set_pin_bone_name(index, p_value); + return true; + } else if (what == "target_node") { + set_pin_target_node_path(index, p_value); + return true; + } else if (what == "target_static") { + if (p_value) { + set_pin_target_node_path(index, NodePath()); + } + return true; + } else if (what == "motion_propagation_factor") { + set_pin_motion_propagation_factor(index, p_value); + return true; + } else if (what == "weight") { + set_pin_weight(index, p_value); + return true; + } else if (what == "direction_priorities") { + set_pin_direction_priorities(index, p_value); + return true; + } + } else if (name.begins_with("constraints/")) { + int index = name.get_slicec('/', 1).to_int(); + String what = name.get_slicec('/', 2); + String begins = "constraints/" + itos(index) + "/kusudama_open_cone/"; + if (index >= constraint_names.size()) { + _set_constraint_count(constraint_count); + } + if (what == "bone_name") { + set_constraint_name_at_index(index, p_value); + return true; + } else if (what == "twist_from") { + Vector2 twist_from = get_joint_twist(index); + set_joint_twist(index, Vector2(p_value, twist_from.y)); + return true; + } else if (what == "twist_range") { + Vector2 twist_range = get_joint_twist(index); + set_joint_twist(index, Vector2(twist_range.x, p_value)); + return true; + } else if (what == "kusudama_open_cone_count") { + set_kusudama_open_cone_count(index, p_value); + return true; + } else if (name.begins_with(begins)) { + int cone_index = name.get_slicec('/', 3).to_int(); + String cone_what = name.get_slicec('/', 4); + if (cone_what == "center") { + set_kusudama_open_cone_center(index, cone_index, p_value); + return true; + } else if (cone_what == "radius") { + set_kusudama_open_cone_radius(index, cone_index, p_value); + return true; + } + } else if (what == "bone_direction") { + set_direction_transform_of_bone(index, p_value); + return true; + } else if (what == "kusudama_orientation") { + set_orientation_transform_of_constraint(index, p_value); + return true; + } else if (what == "kusudama_twist") { + set_twist_transform_of_constraint(index, p_value); + return true; + } + } + + return false; +} + +void ManyBoneIK3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("set_constraint_name_at_index", "index", "name"), &ManyBoneIK3D::set_constraint_name_at_index); + ClassDB::bind_method(D_METHOD("set_total_effector_count", "count"), &ManyBoneIK3D::set_pin_count); + ClassDB::bind_method(D_METHOD("get_twist_transform_of_constraint", "index"), &ManyBoneIK3D::get_twist_transform_of_constraint); + ClassDB::bind_method(D_METHOD("set_twist_transform_of_constraint", "index", "transform"), &ManyBoneIK3D::set_twist_transform_of_constraint); + ClassDB::bind_method(D_METHOD("get_orientation_transform_of_constraint", "index"), &ManyBoneIK3D::get_orientation_transform_of_constraint); + ClassDB::bind_method(D_METHOD("set_orientation_transform_of_constraint", "index", "transform"), &ManyBoneIK3D::set_orientation_transform_of_constraint); + ClassDB::bind_method(D_METHOD("get_direction_transform_of_bone", "index"), &ManyBoneIK3D::get_direction_transform_of_bone); + ClassDB::bind_method(D_METHOD("set_direction_transform_of_bone", "index", "transform"), &ManyBoneIK3D::set_direction_transform_of_bone); + ClassDB::bind_method(D_METHOD("remove_constraint_at_index", "index"), &ManyBoneIK3D::remove_pin_at_index); + ClassDB::bind_method(D_METHOD("register_skeleton"), &ManyBoneIK3D::register_skeleton); + ClassDB::bind_method(D_METHOD("reset_constraints"), &ManyBoneIK3D::reset_constraints); + ClassDB::bind_method(D_METHOD("set_dirty"), &ManyBoneIK3D::set_dirty); + ClassDB::bind_method(D_METHOD("set_kusudama_open_cone_radius", "index", "cone_index", "radius"), &ManyBoneIK3D::set_kusudama_open_cone_radius); + ClassDB::bind_method(D_METHOD("get_kusudama_open_cone_radius", "index", "cone_index"), &ManyBoneIK3D::get_kusudama_open_cone_radius); + ClassDB::bind_method(D_METHOD("set_kusudama_open_cone_center", "index", "cone_index", "center"), &ManyBoneIK3D::set_kusudama_open_cone_center); + ClassDB::bind_method(D_METHOD("get_kusudama_open_cone_center", "index", "cone_index"), &ManyBoneIK3D::get_kusudama_open_cone_center); + ClassDB::bind_method(D_METHOD("set_kusudama_open_cone_count", "index", "count"), &ManyBoneIK3D::set_kusudama_open_cone_count); + ClassDB::bind_method(D_METHOD("get_kusudama_open_cone_count", "index"), &ManyBoneIK3D::get_kusudama_open_cone_count); + ClassDB::bind_method(D_METHOD("set_joint_twist", "index", "limit"), &ManyBoneIK3D::set_joint_twist); + ClassDB::bind_method(D_METHOD("get_joint_twist", "index"), &ManyBoneIK3D::get_joint_twist); + ClassDB::bind_method(D_METHOD("set_pin_motion_propagation_factor", "index", "falloff"), &ManyBoneIK3D::set_pin_motion_propagation_factor); + ClassDB::bind_method(D_METHOD("get_pin_motion_propagation_factor", "index"), &ManyBoneIK3D::get_pin_motion_propagation_factor); + ClassDB::bind_method(D_METHOD("get_pin_count"), &ManyBoneIK3D::get_pin_count); + ClassDB::bind_method(D_METHOD("set_pin_count", "count"), &ManyBoneIK3D::set_pin_count); + + ClassDB::bind_method(D_METHOD("get_effector_bone_name", "index"), &ManyBoneIK3D::get_pin_bone_name); + ClassDB::bind_method(D_METHOD("get_pin_direction_priorities", "index"), &ManyBoneIK3D::get_pin_direction_priorities); + ClassDB::bind_method(D_METHOD("set_pin_direction_priorities", "index", "priority"), &ManyBoneIK3D::set_pin_direction_priorities); + ClassDB::bind_method(D_METHOD("get_effector_pin_node_path", "index"), &ManyBoneIK3D::get_pin_node_path); + ClassDB::bind_method(D_METHOD("set_effector_pin_node_path", "index", "nodepath"), &ManyBoneIK3D::set_pin_node_path); + ClassDB::bind_method(D_METHOD("set_pin_weight", "index", "weight"), &ManyBoneIK3D::set_pin_weight); + ClassDB::bind_method(D_METHOD("get_pin_weight", "index"), &ManyBoneIK3D::get_pin_weight); + ClassDB::bind_method(D_METHOD("get_pin_enabled", "index"), &ManyBoneIK3D::get_pin_enabled); + ClassDB::bind_method(D_METHOD("get_constraint_name", "index"), &ManyBoneIK3D::get_constraint_name); + ClassDB::bind_method(D_METHOD("get_iterations_per_frame"), &ManyBoneIK3D::get_iterations_per_frame); + ClassDB::bind_method(D_METHOD("set_iterations_per_frame", "count"), &ManyBoneIK3D::set_iterations_per_frame); + ClassDB::bind_method(D_METHOD("find_constraint", "name"), &ManyBoneIK3D::find_constraint); + ClassDB::bind_method(D_METHOD("find_pin", "name"), &ManyBoneIK3D::find_pin); + ClassDB::bind_method(D_METHOD("get_constraint_count"), &ManyBoneIK3D::get_constraint_count); + ClassDB::bind_method(D_METHOD("set_constraint_count", "count"), &ManyBoneIK3D::_set_constraint_count); + ClassDB::bind_method(D_METHOD("get_default_damp"), &ManyBoneIK3D::get_default_damp); + ClassDB::bind_method(D_METHOD("set_default_damp", "damp"), &ManyBoneIK3D::set_default_damp); + ClassDB::bind_method(D_METHOD("get_bone_count"), &ManyBoneIK3D::get_bone_count); + ClassDB::bind_method(D_METHOD("set_constraint_mode", "enabled"), &ManyBoneIK3D::set_constraint_mode); + ClassDB::bind_method(D_METHOD("get_constraint_mode"), &ManyBoneIK3D::get_constraint_mode); + ClassDB::bind_method(D_METHOD("set_ui_selected_bone", "bone"), &ManyBoneIK3D::set_ui_selected_bone); + ClassDB::bind_method(D_METHOD("get_ui_selected_bone"), &ManyBoneIK3D::get_ui_selected_bone); + ClassDB::bind_method(D_METHOD("set_stabilization_passes", "passes"), &ManyBoneIK3D::set_stabilization_passes); + ClassDB::bind_method(D_METHOD("get_stabilization_passes"), &ManyBoneIK3D::get_stabilization_passes); + ClassDB::bind_method(D_METHOD("set_effector_bone_name", "index", "name"), &ManyBoneIK3D::set_pin_bone_name); + + ADD_PROPERTY(PropertyInfo(Variant::INT, "iterations_per_frame", PROPERTY_HINT_RANGE, "1,150,1,or_greater"), "set_iterations_per_frame", "get_iterations_per_frame"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "default_damp", PROPERTY_HINT_RANGE, "0.01,180.0,0.1,radians,exp", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_default_damp", "get_default_damp"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "constraint_mode"), "set_constraint_mode", "get_constraint_mode"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "ui_selected_bone", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_ui_selected_bone", "get_ui_selected_bone"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "stabilization_passes"), "set_stabilization_passes", "get_stabilization_passes"); +} + +ManyBoneIK3D::ManyBoneIK3D() { +} + +ManyBoneIK3D::~ManyBoneIK3D() { +} + +float ManyBoneIK3D::get_pin_motion_propagation_factor(int32_t p_effector_index) const { + ERR_FAIL_INDEX_V(p_effector_index, pins.size(), 0.0f); + const Ref effector_template = pins[p_effector_index]; + return effector_template->get_motion_propagation_factor(); +} + +void ManyBoneIK3D::set_pin_motion_propagation_factor(int32_t p_effector_index, const float p_motion_propagation_factor) { + ERR_FAIL_INDEX(p_effector_index, pins.size()); + Ref effector_template = pins[p_effector_index]; + ERR_FAIL_COND(effector_template.is_null()); + effector_template->set_motion_propagation_factor(p_motion_propagation_factor); + set_dirty(); +} + +void ManyBoneIK3D::_set_constraint_count(int32_t p_count) { + int32_t old_count = constraint_names.size(); + constraint_count = p_count; + constraint_names.resize(p_count); + joint_twist.resize(p_count); + kusudama_open_cone_count.resize(p_count); + kusudama_open_cones.resize(p_count); + for (int32_t constraint_i = p_count; constraint_i-- > old_count;) { + constraint_names.write[constraint_i] = String(); + kusudama_open_cone_count.write[constraint_i] = 0; + kusudama_open_cones.write[constraint_i].resize(1); + kusudama_open_cones.write[constraint_i].write[0] = Vector4(0, 1, 0, 0.01745f); + joint_twist.write[constraint_i] = Vector2(0, 0.01745f); + } + set_dirty(); + notify_property_list_changed(); +} + +int32_t ManyBoneIK3D::get_constraint_count() const { + return constraint_count; +} + +inline StringName ManyBoneIK3D::get_constraint_name(int32_t p_index) const { + ERR_FAIL_INDEX_V(p_index, constraint_names.size(), StringName()); + return constraint_names[p_index]; +} + +Vector2 ManyBoneIK3D::get_joint_twist(int32_t p_index) const { + ERR_FAIL_INDEX_V(p_index, joint_twist.size(), Vector2()); + return joint_twist[p_index]; +} + +void ManyBoneIK3D::set_joint_twist(int32_t p_index, Vector2 p_to) { + ERR_FAIL_INDEX(p_index, constraint_count); + joint_twist.write[p_index] = p_to; + set_dirty(); +} + +int32_t ManyBoneIK3D::find_pin_id(StringName p_bone_name) { + for (int32_t constraint_i = 0; constraint_i < constraint_count; constraint_i++) { + if (constraint_names[constraint_i] == p_bone_name) { + return constraint_i; + } + } + return -1; +} + +void ManyBoneIK3D::set_kusudama_open_cone(int32_t p_constraint_index, int32_t p_index, + Vector3 p_center, float p_radius) { + ERR_FAIL_INDEX(p_constraint_index, kusudama_open_cones.size()); + Vector cones = kusudama_open_cones.write[p_constraint_index]; + if (Math::is_zero_approx(p_center.length_squared())) { + p_center = Vector3(0.0f, 1.0f, 0.0f); + } + Vector3 center = p_center.normalized(); + Vector4 cone; + cone.x = center.x; + cone.y = center.y; + cone.z = center.z; + cone.w = p_radius; + cones.write[p_index] = cone; + kusudama_open_cones.write[p_constraint_index] = cones; + set_dirty(); +} + +float ManyBoneIK3D::get_kusudama_open_cone_radius(int32_t p_constraint_index, int32_t p_index) const { + ERR_FAIL_INDEX_V(p_constraint_index, kusudama_open_cones.size(), Math_TAU); + ERR_FAIL_INDEX_V(p_index, kusudama_open_cones[p_constraint_index].size(), Math_TAU); + return kusudama_open_cones[p_constraint_index][p_index].w; +} + +int32_t ManyBoneIK3D::get_kusudama_open_cone_count(int32_t p_constraint_index) const { + ERR_FAIL_INDEX_V(p_constraint_index, kusudama_open_cone_count.size(), 0); + return kusudama_open_cone_count[p_constraint_index]; +} + +void ManyBoneIK3D::set_kusudama_open_cone_count(int32_t p_constraint_index, int32_t p_count) { + ERR_FAIL_INDEX(p_constraint_index, kusudama_open_cone_count.size()); + ERR_FAIL_INDEX(p_constraint_index, kusudama_open_cones.size()); + int32_t old_cone_count = kusudama_open_cones[p_constraint_index].size(); + kusudama_open_cone_count.write[p_constraint_index] = p_count; + Vector &cones = kusudama_open_cones.write[p_constraint_index]; + cones.resize(p_count); + String bone_name = get_constraint_name(p_constraint_index); + Transform3D bone_transform = get_direction_transform_of_bone(p_constraint_index); + Vector3 forward_axis = -bone_transform.basis.get_column(Vector3::AXIS_Y).normalized(); + for (int32_t cone_i = p_count; cone_i-- > old_cone_count;) { + Vector4 &cone = cones.write[cone_i]; + cone.x = forward_axis.x; + cone.y = forward_axis.y; + cone.z = forward_axis.z; + cone.w = Math::deg_to_rad(0.0f); + } + set_dirty(); + notify_property_list_changed(); +} + +real_t ManyBoneIK3D::get_default_damp() const { + return default_damp; +} + +void ManyBoneIK3D::set_default_damp(float p_default_damp) { + default_damp = p_default_damp; + set_dirty(); +} + +StringName ManyBoneIK3D::get_pin_bone_name(int32_t p_effector_index) const { + ERR_FAIL_INDEX_V(p_effector_index, pins.size(), ""); + Ref effector_template = pins[p_effector_index]; + return effector_template->get_name(); +} + +void ManyBoneIK3D::set_kusudama_open_cone_radius(int32_t p_effector_index, int32_t p_index, float p_radius) { + ERR_FAIL_INDEX(p_effector_index, kusudama_open_cone_count.size()); + ERR_FAIL_INDEX(p_effector_index, kusudama_open_cones.size()); + ERR_FAIL_INDEX(p_index, kusudama_open_cone_count[p_effector_index]); + ERR_FAIL_INDEX(p_index, kusudama_open_cones[p_effector_index].size()); + Vector4 &cone = kusudama_open_cones.write[p_effector_index].write[p_index]; + cone.w = p_radius; + set_dirty(); +} + +void ManyBoneIK3D::set_kusudama_open_cone_center(int32_t p_effector_index, int32_t p_index, Vector3 p_center) { + ERR_FAIL_INDEX(p_effector_index, kusudama_open_cones.size()); + ERR_FAIL_INDEX(p_index, kusudama_open_cones[p_effector_index].size()); + Vector4 &cone = kusudama_open_cones.write[p_effector_index].write[p_index]; + if (Math::is_zero_approx(p_center.length_squared())) { + cone.x = 0; + cone.y = 1; + cone.z = 0; + } else { + cone.x = p_center.x; + cone.y = p_center.y; + cone.z = p_center.z; + } + set_dirty(); +} + +Vector3 ManyBoneIK3D::get_kusudama_open_cone_center(int32_t p_constraint_index, int32_t p_index) const { + if (unlikely((p_constraint_index) < 0 || (p_constraint_index) >= (kusudama_open_cones.size()))) { + ERR_PRINT_ONCE("Can't get limit cone center."); + return Vector3(0.0, 0.0, 1.0); + } + if (unlikely((p_index) < 0 || (p_index) >= (kusudama_open_cones[p_constraint_index].size()))) { + ERR_PRINT_ONCE("Can't get limit cone center."); + return Vector3(0.0, 0.0, 1.0); + } + const Vector4 &cone = kusudama_open_cones[p_constraint_index][p_index]; + Vector3 ret; + ret.x = cone.x; + ret.y = cone.y; + ret.z = cone.z; + return ret; +} + +void ManyBoneIK3D::set_constraint_name_at_index(int32_t p_index, String p_name) { + ERR_FAIL_INDEX(p_index, constraint_names.size()); + constraint_names.write[p_index] = p_name; + set_dirty(); +} + +Vector> ManyBoneIK3D::get_segmented_skeletons() { + return segmented_skeletons; +} + +float ManyBoneIK3D::get_iterations_per_frame() const { + return iterations_per_frame; +} + +void ManyBoneIK3D::set_iterations_per_frame(const float &p_iterations_per_frame) { + iterations_per_frame = p_iterations_per_frame; +} + +void ManyBoneIK3D::set_pin_node_path(int32_t p_effector_index, NodePath p_node_path) { + ERR_FAIL_INDEX(p_effector_index, pins.size()); + Node *node = get_node_or_null(p_node_path); + if (!node) { + return; + } + Ref effector_template = pins[p_effector_index]; + effector_template->set_target_node(p_node_path); +} + +NodePath ManyBoneIK3D::get_pin_node_path(int32_t p_effector_index) const { + ERR_FAIL_INDEX_V(p_effector_index, pins.size(), NodePath()); + Ref effector_template = pins[p_effector_index]; + return effector_template->get_target_node(); +} + +void ManyBoneIK3D::_process_modification() { + if (!get_skeleton()) { + return; + } + if (get_pin_count() == 0) { + return; + } + if (!segmented_skeletons.size()) { + set_dirty(); + } + if (is_dirty) { + is_dirty = false; + _bone_list_changed(); + } + if (bone_list.size()) { + Ref root_ik_bone = bone_list.write[0]->get_ik_transform(); + if (root_ik_bone.is_null()) { + return; + } + Skeleton3D *skeleton = get_skeleton(); + godot_skeleton_transform.instantiate(); + godot_skeleton_transform->set_transform(skeleton->get_transform()); + godot_skeleton_transform_inverse = skeleton->get_transform().affine_inverse(); + } + bool has_pins = false; + for (Ref pin : pins) { + if (pin.is_valid() && !pin->get_name().is_empty()) { + has_pins = true; + break; + } + } + if (!has_pins) { + return; + } + if (!is_enabled()) { + return; + } + if (!is_visible()) { + return; + } + for (int32_t i = 0; i < get_iterations_per_frame(); i++) { + for (Ref segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + segmented_skeleton->segment_solver(bone_damp, get_default_damp(), get_constraint_mode(), i, get_iterations_per_frame()); + } + } + _update_skeleton_bones_transform(); +} + +real_t ManyBoneIK3D::get_pin_weight(int32_t p_pin_index) const { + ERR_FAIL_INDEX_V(p_pin_index, pins.size(), 0.0); + const Ref effector_template = pins[p_pin_index]; + return effector_template->get_weight(); +} + +void ManyBoneIK3D::set_pin_weight(int32_t p_pin_index, const real_t &p_weight) { + ERR_FAIL_INDEX(p_pin_index, pins.size()); + Ref effector_template = pins[p_pin_index]; + if (effector_template.is_null()) { + effector_template.instantiate(); + pins.write[p_pin_index] = effector_template; + } + effector_template->set_weight(p_weight); + set_dirty(); +} + +Vector3 ManyBoneIK3D::get_pin_direction_priorities(int32_t p_pin_index) const { + ERR_FAIL_INDEX_V(p_pin_index, pins.size(), Vector3(0, 0, 0)); + const Ref effector_template = pins[p_pin_index]; + return effector_template->get_direction_priorities(); +} + +void ManyBoneIK3D::set_pin_direction_priorities(int32_t p_pin_index, const Vector3 &p_priority_direction) { + ERR_FAIL_INDEX(p_pin_index, pins.size()); + Ref effector_template = pins[p_pin_index]; + if (effector_template.is_null()) { + effector_template.instantiate(); + pins.write[p_pin_index] = effector_template; + } + effector_template->set_direction_priorities(p_priority_direction); + set_dirty(); +} + +void ManyBoneIK3D::set_dirty() { + is_dirty = true; +} + +int32_t ManyBoneIK3D::find_constraint(String p_string) const { + for (int32_t constraint_i = 0; constraint_i < constraint_count; constraint_i++) { + if (get_constraint_name(constraint_i) == p_string) { + return constraint_i; + } + } + return -1; +} + +void ManyBoneIK3D::remove_pin_at_index(int32_t p_index) { + ERR_FAIL_INDEX(p_index, constraint_count); + + constraint_names.remove_at(p_index); + kusudama_open_cone_count.remove_at(p_index); + kusudama_open_cones.remove_at(p_index); + joint_twist.remove_at(p_index); + + constraint_count--; + + set_dirty(); +} + +void ManyBoneIK3D::_set_bone_count(int32_t p_count) { + bone_damp.resize(p_count); + for (int32_t bone_i = p_count; bone_i-- > bone_count;) { + bone_damp.write[bone_i] = get_default_damp(); + } + bone_count = p_count; + set_dirty(); + notify_property_list_changed(); +} + +int32_t ManyBoneIK3D::get_bone_count() const { + return bone_count; +} + +Vector> ManyBoneIK3D::get_bone_list() const { + return bone_list; +} + +void ManyBoneIK3D::set_direction_transform_of_bone(int32_t p_index, Transform3D p_transform) { + ERR_FAIL_INDEX(p_index, constraint_names.size()); + if (!get_skeleton()) { + return; + } + String bone_name = constraint_names[p_index]; + int32_t bone_index = get_skeleton()->find_bone(bone_name); + for (Ref segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(bone_index); + if (ik_bone.is_null() || ik_bone->get_constraint().is_null()) { + continue; + } + if (ik_bone->get_bone_direction_transform().is_null()) { + continue; + } + ik_bone->get_bone_direction_transform()->set_transform(p_transform); + break; + } +} + +Transform3D ManyBoneIK3D::get_direction_transform_of_bone(int32_t p_index) const { + if (p_index < 0 || p_index >= constraint_names.size() || get_skeleton() == nullptr) { + return Transform3D(); + } + + String bone_name = constraint_names[p_index]; + int32_t bone_index = get_skeleton()->find_bone(bone_name); + for (const Ref &segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(bone_index); + if (ik_bone.is_null() || ik_bone->get_constraint().is_null()) { + continue; + } + return ik_bone->get_bone_direction_transform()->get_transform(); + } + return Transform3D(); +} + +Transform3D ManyBoneIK3D::get_orientation_transform_of_constraint(int32_t p_index) const { + ERR_FAIL_INDEX_V(p_index, constraint_names.size(), Transform3D()); + String bone_name = constraint_names[p_index]; + if (!segmented_skeletons.size()) { + return Transform3D(); + } + if (!get_skeleton()) { + return Transform3D(); + } + for (Ref segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(get_skeleton()->find_bone(bone_name)); + if (ik_bone.is_null()) { + continue; + } + if (ik_bone->get_constraint().is_null()) { + continue; + } + return ik_bone->get_constraint_orientation_transform()->get_transform(); + } + return Transform3D(); +} + +void ManyBoneIK3D::set_orientation_transform_of_constraint(int32_t p_index, Transform3D p_transform) { + ERR_FAIL_INDEX(p_index, constraint_names.size()); + String bone_name = constraint_names[p_index]; + if (!get_skeleton()) { + return; + } + for (Ref segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(get_skeleton()->find_bone(bone_name)); + if (ik_bone.is_null()) { + continue; + } + if (ik_bone->get_constraint().is_null()) { + continue; + } + ik_bone->get_constraint_orientation_transform()->set_transform(p_transform); + break; + } +} + +Transform3D ManyBoneIK3D::get_twist_transform_of_constraint(int32_t p_index) const { + ERR_FAIL_INDEX_V(p_index, constraint_names.size(), Transform3D()); + String bone_name = constraint_names[p_index]; + if (!segmented_skeletons.size()) { + return Transform3D(); + } + if (!get_skeleton()) { + return Transform3D(); + } + for (Ref segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(get_skeleton()->find_bone(bone_name)); + if (ik_bone.is_null()) { + continue; + } + if (ik_bone->get_constraint().is_null()) { + continue; + } + return ik_bone->get_constraint_twist_transform()->get_transform(); + } + return Transform3D(); +} + +void ManyBoneIK3D::set_twist_transform_of_constraint(int32_t p_index, Transform3D p_transform) { + ERR_FAIL_INDEX(p_index, constraint_names.size()); + String bone_name = constraint_names[p_index]; + if (!get_skeleton()) { + return; + } + for (Ref segmented_skeleton : segmented_skeletons) { + if (segmented_skeleton.is_null()) { + continue; + } + Ref ik_bone = segmented_skeleton->get_ik_bone(get_skeleton()->find_bone(bone_name)); + if (ik_bone.is_null()) { + continue; + } + if (ik_bone->get_constraint().is_null()) { + continue; + } + ik_bone->get_constraint_twist_transform()->set_transform(p_transform); + break; + } +} + +bool ManyBoneIK3D::get_pin_enabled(int32_t p_effector_index) const { + ERR_FAIL_INDEX_V(p_effector_index, pins.size(), false); + Ref effector_template = pins[p_effector_index]; + if (effector_template->get_target_node().is_empty()) { + return true; + } + return !effector_template->get_target_node().is_empty(); +} + +void ManyBoneIK3D::register_skeleton() { + if (!get_pin_count() && !get_constraint_count()) { + reset_constraints(); + } + set_dirty(); +} + +void ManyBoneIK3D::reset_constraints() { + Skeleton3D *skeleton = get_skeleton(); + if (skeleton) { + int32_t saved_pin_count = get_pin_count(); + set_pin_count(0); + set_pin_count(saved_pin_count); + int32_t saved_constraint_count = constraint_names.size(); + _set_constraint_count(0); + _set_constraint_count(saved_constraint_count); + _set_bone_count(0); + _set_bone_count(saved_constraint_count); + } + set_dirty(); +} + +bool ManyBoneIK3D::get_constraint_mode() const { + return is_constraint_mode; +} + +void ManyBoneIK3D::set_constraint_mode(bool p_enabled) { + is_constraint_mode = p_enabled; +} + +int32_t ManyBoneIK3D::get_ui_selected_bone() const { + return ui_selected_bone; +} + +void ManyBoneIK3D::set_ui_selected_bone(int32_t p_ui_selected_bone) { + ui_selected_bone = p_ui_selected_bone; +} + +void ManyBoneIK3D::set_stabilization_passes(int32_t p_passes) { + stabilize_passes = p_passes; + set_dirty(); +} + +int32_t ManyBoneIK3D::get_stabilization_passes() { + return stabilize_passes; +} + +Transform3D ManyBoneIK3D::get_godot_skeleton_transform_inverse() { + return godot_skeleton_transform_inverse; +} + +Ref ManyBoneIK3D::get_godot_skeleton_transform() { + return godot_skeleton_transform; +} + +void ManyBoneIK3D::add_constraint() { + int32_t old_count = constraint_count; + _set_constraint_count(constraint_count + 1); + constraint_names.write[old_count] = String(); + kusudama_open_cone_count.write[old_count] = 0; + kusudama_open_cones.write[old_count].resize(1); + kusudama_open_cones.write[old_count].write[0] = Vector4(0, 1, 0, Math_PI); + joint_twist.write[old_count] = Vector2(0, Math_PI); + set_dirty(); +} + +int32_t ManyBoneIK3D::find_pin(String p_string) const { + for (int32_t pin_i = 0; pin_i < pin_count; pin_i++) { + if (get_pin_bone_name(pin_i) == p_string) { + return pin_i; + } + } + return -1; +} + +bool ManyBoneIK3D::get_pin_target_fixed(int32_t p_effector_index) { + ERR_FAIL_INDEX_V(p_effector_index, pins.size(), false); + Ref effector_template = pins[p_effector_index]; + return get_pin_node_path(p_effector_index).is_empty(); +} + +void ManyBoneIK3D::set_pin_target_fixed(int32_t p_effector_index, bool p_force_ignore) { + ERR_FAIL_INDEX(p_effector_index, pins.size()); + if (!p_force_ignore) { + return; + } + Ref effector_template = pins[p_effector_index]; + effector_template->set_target_node(NodePath()); + set_dirty(); +} + +void ManyBoneIK3D::_bone_list_changed() { + Skeleton3D *skeleton = get_skeleton(); + Vector roots = skeleton->get_parentless_bones(); + if (roots.is_empty()) { + return; + } + bone_list.clear(); + segmented_skeletons.clear(); + for (BoneId root_bone_index : roots) { + String parentless_bone = skeleton->get_bone_name(root_bone_index); + Ref segmented_skeleton = Ref(memnew(IKBoneSegment3D(skeleton, parentless_bone, pins, this, nullptr, root_bone_index, -1, stabilize_passes))); + ik_origin.instantiate(); + segmented_skeleton->get_root()->get_ik_transform()->set_parent(ik_origin); + segmented_skeleton->generate_default_segments(pins, root_bone_index, -1, this); + Vector> new_bone_list; + segmented_skeleton->create_bone_list(new_bone_list, true); + bone_list.append_array(new_bone_list); + Vector> weight_array; + segmented_skeleton->update_pinned_list(weight_array); + segmented_skeleton->recursive_create_headings_arrays_for(segmented_skeleton); + segmented_skeletons.push_back(segmented_skeleton); + } + _update_ik_bones_transform(); + for (Ref &ik_bone_3d : bone_list) { + ik_bone_3d->update_default_bone_direction_transform(skeleton); + } + for (int constraint_i = 0; constraint_i < constraint_count; ++constraint_i) { + String bone = constraint_names[constraint_i]; + BoneId bone_id = skeleton->find_bone(bone); + for (Ref &ik_bone_3d : bone_list) { + if (ik_bone_3d->get_bone_id() != bone_id) { + continue; + } + Ref constraint; + constraint.instantiate(); + constraint->enable_orientational_limits(); + + int32_t cone_count = kusudama_open_cone_count[constraint_i]; + const Vector &cones = kusudama_open_cones[constraint_i]; + for (int32_t cone_i = 0; cone_i < cone_count; ++cone_i) { + const Vector4 &cone = cones[cone_i]; + Ref new_cone; + new_cone.instantiate(); + new_cone->set_attached_to(constraint); + new_cone->set_radius(MAX(1.0e-38, cone.w)); + new_cone->set_control_point(Vector3(cone.x, cone.y, cone.z).normalized()); + constraint->add_open_cone(new_cone); + } + + const Vector2 axial_limit = get_joint_twist(constraint_i); + constraint->enable_axial_limits(); + constraint->set_axial_limits(axial_limit.x, axial_limit.y); + ik_bone_3d->add_constraint(constraint); + constraint->_update_constraint(ik_bone_3d->get_constraint_twist_transform()); + break; + } + } +} + +void ManyBoneIK3D::_skeleton_changed(Skeleton3D *p_old, Skeleton3D *p_new) { + if (p_old) { + if (p_old->is_connected(SNAME("bone_list_changed"), callable_mp(this, &ManyBoneIK3D::_bone_list_changed))) { + p_old->disconnect(SNAME("bone_list_changed"), callable_mp(this, &ManyBoneIK3D::_bone_list_changed)); + } + } + if (p_new) { + if (!p_new->is_connected(SNAME("bone_list_changed"), callable_mp(this, &ManyBoneIK3D::_bone_list_changed))) { + p_new->connect(SNAME("bone_list_changed"), callable_mp(this, &ManyBoneIK3D::_bone_list_changed)); + } + } + if (is_connected(SNAME("modification_processed"), callable_mp(this, &ManyBoneIK3D::_update_ik_bones_transform))) { + disconnect(SNAME("modification_processed"), callable_mp(this, &ManyBoneIK3D::_update_ik_bones_transform)); + } + connect(SNAME("modification_processed"), callable_mp(this, &ManyBoneIK3D::_update_ik_bones_transform)); + _bone_list_changed(); +} + +void ManyBoneIK3D::set_pin_bone_name(int32_t p_pin_index, const String &p_bone) { + ERR_FAIL_INDEX(p_pin_index, pins.size()); + Ref effector_template = pins[p_pin_index]; + if (effector_template.is_null()) { + effector_template.instantiate(); + pins.write[p_pin_index] = effector_template; + } + effector_template->set_name(p_bone); + set_dirty(); +} diff --git a/modules/many_bone_ik/src/many_bone_ik_3d.h b/modules/many_bone_ik/src/many_bone_ik_3d.h new file mode 100644 index 000000000000..0129e33a67fc --- /dev/null +++ b/modules/many_bone_ik/src/many_bone_ik_3d.h @@ -0,0 +1,158 @@ +/**************************************************************************/ +/* many_bone_ik_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef MANY_BONE_IK_3D_H +#define MANY_BONE_IK_3D_H + +#include "core/math/math_defs.h" +#include "core/math/transform_3d.h" +#include "core/math/vector3.h" +#include "core/object/ref_counted.h" +#include "ik_bone_3d.h" +#include "ik_effector_template_3d.h" +#include "math/ik_node_3d.h" +#include "scene/3d/skeleton_3d.h" +#include "scene/3d/skeleton_modifier_3d.h" + +class ManyBoneIK3DState; +class ManyBoneIK3D : public SkeletonModifier3D { + GDCLASS(ManyBoneIK3D, SkeletonModifier3D); + + bool is_constraint_mode = false; + NodePath skeleton_path; + Vector> segmented_skeletons; + int32_t constraint_count = 0, pin_count = 0, bone_count = 0; + Vector constraint_names; + Vector> pins; + Vector> bone_list; + Vector joint_twist; + Vector bone_damp; + Vector> kusudama_open_cones; + Vector kusudama_open_cone_count; + float MAX_KUSUDAMA_OPEN_CONES = 10; + int32_t iterations_per_frame = 15; + float default_damp = Math::deg_to_rad(5.0f); + Ref godot_skeleton_transform; + Transform3D godot_skeleton_transform_inverse; + Ref ik_origin; + bool is_dirty = true; + NodePath skeleton_node_path = NodePath(".."); + int32_t ui_selected_bone = -1, stabilize_passes = 0; + + void _on_timer_timeout(); + void _update_ik_bones_transform(); + void _update_skeleton_bones_transform(); + Vector> _get_bone_effectors() const; + void set_constraint_name_at_index(int32_t p_index, String p_name); + void _set_constraint_count(int32_t p_count); + void _remove_pin(int32_t p_index); + void _set_bone_count(int32_t p_count); + void _set_pin_root_bone(int32_t p_pin_index, const String &p_root_bone); + String _get_pin_root_bone(int32_t p_pin_index) const; + void _bone_list_changed(); + void _pose_updated(); + void _update_ik_bone_pose(int32_t p_bone_idx); + +protected: + bool _set(const StringName &p_name, const Variant &p_value); + bool _get(const StringName &p_name, Variant &r_ret) const; + void _get_property_list(List *p_list) const; + static void _bind_methods(); + virtual void _process_modification() override; + void _skeleton_changed(Skeleton3D *p_old, Skeleton3D *p_new) override; + +public: + void set_pin_target_fixed(int32_t p_effector_index, bool p_force_ignore); + bool get_pin_target_fixed(int32_t p_effector_index); + void set_state(Ref p_state); + Ref get_state() const; + void add_constraint(); + void set_stabilization_passes(int32_t p_passes); + int32_t get_stabilization_passes(); + Transform3D get_godot_skeleton_transform_inverse(); + Ref get_godot_skeleton_transform(); + void set_ui_selected_bone(int32_t p_ui_selected_bone); + int32_t get_ui_selected_bone() const; + void set_constraint_mode(bool p_enabled); + bool get_constraint_mode() const; + bool get_pin_enabled(int32_t p_effector_index) const; + void register_skeleton(); + void reset_constraints(); + Vector> get_bone_list() const; + Vector> get_segmented_skeletons(); + float get_iterations_per_frame() const; + void set_iterations_per_frame(const float &p_iterations_per_frame); + void queue_print_skeleton(); + int32_t get_pin_count() const; + void set_pin_count(int32_t p_pin_count); + void remove_pin_at_index(int32_t p_index); + void set_pin_bone_name(int32_t p_pin_index, const String &p_bone); + StringName get_pin_bone_name(int32_t p_effector_index) const; + void set_pin_node_path(int32_t p_effector_index, NodePath p_node_path); + NodePath get_pin_node_path(int32_t p_effector_index) const; + int32_t find_pin_id(StringName p_bone_name); + void set_pin_target_node_path(int32_t p_effector_index, const NodePath &p_target_node); + void set_pin_weight(int32_t p_pin_index, const real_t &p_weight); + real_t get_pin_weight(int32_t p_pin_index) const; + void set_pin_direction_priorities(int32_t p_pin_index, const Vector3 &p_priority_direction); + Vector3 get_pin_direction_priorities(int32_t p_pin_index) const; + NodePath get_pin_target_node_path(int32_t p_pin_index); + void set_pin_motion_propagation_factor(int32_t p_effector_index, const float p_motion_propagation_factor); + float get_pin_motion_propagation_factor(int32_t p_effector_index) const; + real_t get_default_damp() const; + void set_default_damp(float p_default_damp); + int32_t find_constraint(String p_string) const; + int32_t find_pin(String p_string) const; + int32_t get_constraint_count() const; + StringName get_constraint_name(int32_t p_index) const; + void set_twist_transform_of_constraint(int32_t p_index, Transform3D p_transform); + Transform3D get_twist_transform_of_constraint(int32_t p_index) const; + void set_orientation_transform_of_constraint(int32_t p_index, Transform3D p_transform); + Transform3D get_orientation_transform_of_constraint(int32_t p_index) const; + void set_direction_transform_of_bone(int32_t p_index, Transform3D p_transform); + Transform3D get_direction_transform_of_bone(int32_t p_index) const; + Vector2 get_joint_twist(int32_t p_index) const; + void set_joint_twist(int32_t p_index, Vector2 p_twist); + void set_kusudama_open_cone(int32_t p_bone, int32_t p_index, + Vector3 p_center, float p_radius); + Vector3 get_kusudama_open_cone_center(int32_t p_constraint_index, int32_t p_index) const; + float get_kusudama_open_cone_radius(int32_t p_constraint_index, int32_t p_index) const; + int32_t get_kusudama_open_cone_count(int32_t p_constraint_index) const; + int32_t get_bone_count() const; + void set_kusudama_twist_from_to(int32_t p_index, float from, float to); + void set_kusudama_open_cone_count(int32_t p_constraint_index, int32_t p_count); + void set_kusudama_open_cone_center(int32_t p_constraint_index, int32_t p_index, Vector3 p_center); + void set_kusudama_open_cone_radius(int32_t p_constraint_index, int32_t p_index, float p_radius); + ManyBoneIK3D(); + ~ManyBoneIK3D(); + void set_dirty(); +}; + +#endif // MANY_BONE_IK_3D_H diff --git a/modules/many_bone_ik/src/math/ik_node_3d.cpp b/modules/many_bone_ik/src/math/ik_node_3d.cpp new file mode 100644 index 000000000000..61516bdd2f65 --- /dev/null +++ b/modules/many_bone_ik/src/math/ik_node_3d.cpp @@ -0,0 +1,159 @@ +/**************************************************************************/ +/* ik_node_3d.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "ik_node_3d.h" + +void IKNode3D::_propagate_transform_changed() { + Vector> to_remove; + + for (Ref transform : children) { + if (transform.is_null()) { + to_remove.push_back(transform); + } else { + transform->_propagate_transform_changed(); + } + } + + for (Ref transform : to_remove) { + children.erase(transform); + } + + dirty |= DIRTY_GLOBAL; +} + +void IKNode3D::_update_local_transform() const { + local_transform.basis = rotation.scaled(scale); + dirty &= ~DIRTY_LOCAL; +} + +void IKNode3D::rotate_local_with_global(const Basis &p_basis, bool p_propagate) { + if (parent.get_ref().is_null()) { + return; + } + Ref parent_ik_node = parent.get_ref(); + const Basis &new_rot = parent_ik_node->get_global_transform().basis; + local_transform.basis = new_rot.inverse() * p_basis * new_rot * local_transform.basis; + dirty |= DIRTY_GLOBAL; + if (p_propagate) { + _propagate_transform_changed(); + } +} + +void IKNode3D::set_transform(const Transform3D &p_transform) { + if (local_transform != p_transform) { + local_transform = p_transform; + dirty |= DIRTY_VECTORS; + _propagate_transform_changed(); + } +} + +void IKNode3D::set_global_transform(const Transform3D &p_transform) { + Ref ik_node = parent.get_ref(); + Transform3D xform = ik_node.is_valid() ? ik_node->get_global_transform().affine_inverse() * p_transform : p_transform; + local_transform = xform; + dirty |= DIRTY_VECTORS; + _propagate_transform_changed(); +} + +Transform3D IKNode3D::get_transform() const { + if (dirty & DIRTY_LOCAL) { + _update_local_transform(); + } + + return local_transform; +} + +Transform3D IKNode3D::get_global_transform() const { + if (dirty & DIRTY_GLOBAL) { + if (dirty & DIRTY_LOCAL) { + _update_local_transform(); + } + Ref ik_node = parent.get_ref(); + if (ik_node.is_valid()) { + global_transform = ik_node->get_global_transform() * local_transform; + } else { + global_transform = local_transform; + } + + if (disable_scale) { + global_transform.basis.orthogonalize(); + } + + dirty &= ~DIRTY_GLOBAL; + } + + return global_transform; +} + +void IKNode3D::set_disable_scale(bool p_enabled) { + disable_scale = p_enabled; +} + +bool IKNode3D::is_scale_disabled() const { + return disable_scale; +} + +void IKNode3D::set_parent(Ref p_parent) { + if (p_parent.is_valid()) { + p_parent->children.erase(this); + } + parent.set_ref(p_parent); + if (p_parent.is_valid()) { + p_parent->children.push_back(this); + } + _propagate_transform_changed(); +} + +Ref IKNode3D::get_parent() const { + return parent.get_ref(); +} + +Vector3 IKNode3D::to_local(const Vector3 &p_global) const { + return get_global_transform().affine_inverse().xform(p_global); +} + +Vector3 IKNode3D::to_global(const Vector3 &p_local) const { + return get_global_transform().xform(p_local); +} + +IKNode3D::~IKNode3D() { + cleanup(); +} + +void IKNode3D::_notification(int p_what) { + if (p_what == NOTIFICATION_PREDELETE) { + cleanup(); + } +} +void IKNode3D::cleanup() { + for (Ref &child : children) { + child->set_parent(Ref()); + } +} diff --git a/modules/many_bone_ik/src/math/ik_node_3d.h b/modules/many_bone_ik/src/math/ik_node_3d.h new file mode 100644 index 000000000000..b84af288e9b3 --- /dev/null +++ b/modules/many_bone_ik/src/math/ik_node_3d.h @@ -0,0 +1,102 @@ +/**************************************************************************/ +/* ik_node_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef IK_NODE_3D_H +#define IK_NODE_3D_H + +#include "core/object/ref_counted.h" +#include "core/templates/list.h" + +#include "core/io/resource.h" +#include "core/math/transform_3d.h" + +class IKNode3D : public RefCounted { + GDCLASS(IKNode3D, RefCounted); + + enum TransformDirty { + DIRTY_NONE = 0, + DIRTY_VECTORS = 1, + DIRTY_LOCAL = 2, + DIRTY_GLOBAL = 4 + }; + + mutable Transform3D global_transform; + mutable Transform3D local_transform; + mutable Basis rotation; + mutable Vector3 scale = Vector3(1, 1, 1); + + mutable int dirty = DIRTY_NONE; + + WeakRef parent; + List> children; + + bool disable_scale = false; + + void _update_local_transform() const; + +protected: + void _notification(int p_what); + static void _bind_methods() { + ClassDB::bind_method(D_METHOD("_propagate_transform_changed"), &IKNode3D::_propagate_transform_changed); + ClassDB::bind_method(D_METHOD("_update_local_transform"), &IKNode3D::_update_local_transform); + ClassDB::bind_method(D_METHOD("rotate_local_with_global", "p_basis", "p_propagate"), &IKNode3D::rotate_local_with_global, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("set_transform", "p_transform"), &IKNode3D::set_transform); + ClassDB::bind_method(D_METHOD("set_global_transform", "p_transform"), &IKNode3D::set_global_transform); + ClassDB::bind_method(D_METHOD("get_transform"), &IKNode3D::get_transform); + ClassDB::bind_method(D_METHOD("get_global_transform"), &IKNode3D::get_global_transform); + ClassDB::bind_method(D_METHOD("set_disable_scale", "p_enabled"), &IKNode3D::set_disable_scale); + ClassDB::bind_method(D_METHOD("is_scale_disabled"), &IKNode3D::is_scale_disabled); + ClassDB::bind_method(D_METHOD("set_parent", "p_parent"), &IKNode3D::set_parent); + ClassDB::bind_method(D_METHOD("get_parent"), &IKNode3D::get_parent); + ClassDB::bind_method(D_METHOD("to_local", "p_global"), &IKNode3D::to_local); + ClassDB::bind_method(D_METHOD("to_global", "p_local"), &IKNode3D::to_global); + } + +public: + void _propagate_transform_changed(); + void set_transform(const Transform3D &p_transform); + void set_global_transform(const Transform3D &p_transform); + Transform3D get_transform() const; + Transform3D get_global_transform() const; + + void set_disable_scale(bool p_enabled); + bool is_scale_disabled() const; + + void set_parent(Ref p_parent); + Ref get_parent() const; + + Vector3 to_local(const Vector3 &p_global) const; + Vector3 to_global(const Vector3 &p_local) const; + void rotate_local_with_global(const Basis &p_basis, bool p_propagate = false); + void cleanup(); + ~IKNode3D(); +}; + +#endif // IK_NODE_3D_H diff --git a/modules/many_bone_ik/src/math/qcp.cpp b/modules/many_bone_ik/src/math/qcp.cpp new file mode 100644 index 000000000000..1e16b7151de5 --- /dev/null +++ b/modules/many_bone_ik/src/math/qcp.cpp @@ -0,0 +1,269 @@ +/**************************************************************************/ +/* qcp.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#include "qcp.h" + +QuaternionCharacteristicPolynomial::QuaternionCharacteristicPolynomial(double p_evec_prec) { + eigenvector_precision = p_evec_prec; +} + +void QuaternionCharacteristicPolynomial::set(PackedVector3Array &r_target, PackedVector3Array &r_moved) { + target = r_target; + moved = r_moved; + transformation_calculated = false; + inner_product_calculated = false; +} + +Quaternion QuaternionCharacteristicPolynomial::_get_rotation() { + Quaternion result; + if (!transformation_calculated) { + if (!inner_product_calculated) { + inner_product(target, moved); + } + result = calculate_rotation(); + transformation_calculated = true; + } + return result; +} + +Quaternion QuaternionCharacteristicPolynomial::calculate_rotation() { + Quaternion result; + + if (moved.size() == 1) { + Vector3 u = moved[0]; + Vector3 v = target[0]; + double norm_product = u.length() * v.length(); + + if (norm_product == 0.0) { + return Quaternion(); + } + + double dot = u.dot(v); + + if (dot < ((2.0e-15 - 1.0) * norm_product)) { + Vector3 w = u.normalized(); + result = Quaternion(w.x, w.y, w.z, 0.0f).normalized(); + } else { + double q0 = Math::sqrt(0.5 * (1.0 + dot / norm_product)); + double coeff = 1.0 / (2.0 * q0 * norm_product); + Vector3 q = v.cross(u).normalized(); + result = Quaternion(coeff * q.x, coeff * q.y, coeff * q.z, q0).normalized(); + } + } else { + double a13 = -sum_xz_minus_zx; + double a14 = sum_xy_minus_yx; + double a21 = sum_yz_minus_zy; + double a22 = sum_xx_minus_yy - sum_zz - max_eigenvalue; + double a23 = sum_xy_plus_yx; + double a24 = sum_xz_plus_zx; + double a31 = a13; + double a32 = a23; + double a33 = sum_yy - sum_xx - sum_zz - max_eigenvalue; + double a34 = sum_yz_plus_zy; + double a41 = a14; + double a42 = a24; + double a43 = a34; + double a44 = sum_zz - sum_xx_plus_yy - max_eigenvalue; + + double a3344_4334 = a33 * a44 - a43 * a34; + double a3244_4234 = a32 * a44 - a42 * a34; + double a3243_4233 = a32 * a43 - a42 * a33; + double a3143_4133 = a31 * a43 - a41 * a33; + double a3144_4134 = a31 * a44 - a41 * a34; + double a3142_4132 = a31 * a42 - a41 * a32; + + double quaternion_w = a22 * a3344_4334 - a23 * a3244_4234 + a24 * a3243_4233; + double quaternion_x = -a21 * a3344_4334 + a23 * a3144_4134 - a24 * a3143_4133; + double quaternion_y = a21 * a3244_4234 - a22 * a3144_4134 + a24 * a3142_4132; + double quaternion_z = -a21 * a3243_4233 + a22 * a3143_4133 - a23 * a3142_4132; + double qsqr = quaternion_w * quaternion_w + quaternion_x * quaternion_x + quaternion_y * quaternion_y + quaternion_z * quaternion_z; + + if (qsqr < eigenvector_precision) { + result = Quaternion(); + } else { + quaternion_x *= -1; + quaternion_y *= -1; + quaternion_z *= -1; + double min = quaternion_w; + min = quaternion_x < min ? quaternion_x : min; + min = quaternion_y < min ? quaternion_y : min; + min = quaternion_z < min ? quaternion_z : min; + quaternion_w /= min; + quaternion_x /= min; + quaternion_y /= min; + quaternion_z /= min; + result = Quaternion(quaternion_x, quaternion_y, quaternion_z, quaternion_w).normalized(); + } + } + + return result; +} + +void QuaternionCharacteristicPolynomial::translate(Vector3 r_translate, PackedVector3Array &r_x) { + for (Vector3 &p : r_x) { + p += r_translate; + } +} + +Vector3 QuaternionCharacteristicPolynomial::_get_translation() { + return target_center - moved_center; +} + +Vector3 QuaternionCharacteristicPolynomial::move_to_weighted_center(PackedVector3Array &r_to_center, Vector &r_weight) { + Vector3 center; + double total_weight = 0; + bool weight_is_empty = r_weight.is_empty(); + int size = r_to_center.size(); + + for (int i = 0; i < size; i++) { + if (!weight_is_empty) { + total_weight += r_weight[i]; + center += r_to_center[i] * r_weight[i]; + } else { + center += r_to_center[i]; + total_weight++; + } + } + + if (total_weight > 0) { + center /= total_weight; + } + + return center; +} + +void QuaternionCharacteristicPolynomial::inner_product(PackedVector3Array &coords1, PackedVector3Array &coords2) { + Vector3 weighted_coord1, weighted_coord2; + double sum_of_squares1 = 0, sum_of_squares2 = 0; + + sum_xx = 0; + sum_xy = 0; + sum_xz = 0; + sum_yx = 0; + sum_yy = 0; + sum_yz = 0; + sum_zx = 0; + sum_zy = 0; + sum_zz = 0; + + bool weight_is_empty = weight.is_empty(); + int size = coords1.size(); + + for (int i = 0; i < size; i++) { + if (!weight_is_empty) { + weighted_coord1 = weight[i] * coords1[i]; + sum_of_squares1 += weighted_coord1.dot(coords1[i]); + } else { + weighted_coord1 = coords1[i]; + sum_of_squares1 += weighted_coord1.dot(weighted_coord1); + } + + weighted_coord2 = coords2[i]; + + sum_of_squares2 += weight_is_empty ? weighted_coord2.dot(weighted_coord2) : (weight[i] * weighted_coord2.dot(weighted_coord2)); + + sum_xx += (weighted_coord1.x * weighted_coord2.x); + sum_xy += (weighted_coord1.x * weighted_coord2.y); + sum_xz += (weighted_coord1.x * weighted_coord2.z); + + sum_yx += (weighted_coord1.y * weighted_coord2.x); + sum_yy += (weighted_coord1.y * weighted_coord2.y); + sum_yz += (weighted_coord1.y * weighted_coord2.z); + + sum_zx += (weighted_coord1.z * weighted_coord2.x); + sum_zy += (weighted_coord1.z * weighted_coord2.y); + sum_zz += (weighted_coord1.z * weighted_coord2.z); + } + + double initial_eigenvalue = (sum_of_squares1 + sum_of_squares2) * 0.5; + + sum_xz_plus_zx = sum_xz + sum_zx; + sum_yz_plus_zy = sum_yz + sum_zy; + sum_xy_plus_yx = sum_xy + sum_yx; + sum_yz_minus_zy = sum_yz - sum_zy; + sum_xz_minus_zx = sum_xz - sum_zx; + sum_xy_minus_yx = sum_xy - sum_yx; + sum_xx_plus_yy = sum_xx + sum_yy; + sum_xx_minus_yy = sum_xx - sum_yy; + max_eigenvalue = initial_eigenvalue; + + inner_product_calculated = true; +} + +Quaternion QuaternionCharacteristicPolynomial::_weighted_superpose(PackedVector3Array &p_moved, PackedVector3Array &p_target, Vector &p_weight, bool translate) { + set(p_moved, p_target, p_weight, translate); + return _get_rotation(); +} + +void QuaternionCharacteristicPolynomial::set(PackedVector3Array &p_moved, PackedVector3Array &p_target, Vector &p_weight, bool p_translate) { + transformation_calculated = false; + inner_product_calculated = false; + + moved = p_moved; + target = p_target; + weight = p_weight; + + if (p_translate) { + moved_center = move_to_weighted_center(moved, weight); + w_sum = 0; // set wsum to 0 so we don't double up. + target_center = move_to_weighted_center(target, weight); + translate(moved_center * -1, moved); + translate(target_center * -1, target); + } else { + if (!p_weight.is_empty()) { + for (int i = 0; i < p_weight.size(); i++) { + w_sum += p_weight[i]; + } + } else { + w_sum = p_moved.size(); + } + } +} + +void QuaternionCharacteristicPolynomial::_bind_methods() { + ClassDB::bind_static_method("QuaternionCharacteristicPolynomial", + D_METHOD("weighted_superpose", "moved", "target", + "weight", "translate", "precision"), + &QuaternionCharacteristicPolynomial::weighted_superpose); +} + +Array QuaternionCharacteristicPolynomial::weighted_superpose(PackedVector3Array p_moved, + PackedVector3Array p_target, + Vector p_weight, bool p_translate, + double p_precision) { + QuaternionCharacteristicPolynomial qcp(p_precision); + Quaternion rotation = + qcp._weighted_superpose(p_moved, p_target, p_weight, p_translate); + Vector3 translation = qcp._get_translation(); + Array result; + result.push_back(rotation); + result.push_back(translation); + return result; +} diff --git a/modules/many_bone_ik/src/math/qcp.h b/modules/many_bone_ik/src/math/qcp.h new file mode 100644 index 000000000000..274b74fb02ff --- /dev/null +++ b/modules/many_bone_ik/src/math/qcp.h @@ -0,0 +1,108 @@ +/**************************************************************************/ +/* qcp.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef QCP_H +#define QCP_H + +#include "core/math/vector3.h" +#include "core/object/class_db.h" +#include "core/object/object.h" +#include "core/variant/variant.h" + +/** + * Implementation of the Quaternion-Based Characteristic Polynomial algorithm + * for RMSD and Superposition calculations. + * + * Usage: + * 1. Create a QCP object with two Vector3 arrays of equal length as input. + * The input coordinates are not changed. + * 2. Optionally, provide weighting factors [0 - 1] for each point. + * 3. For maximum efficiency, create a QCP object once and reuse it. + * + * A. Calculate rmsd only: double rmsd = qcp.getRmsd(); + * B. Calculate a 4x4 transformation (Quaternion and translation) matrix: Matrix4f trans = qcp.getTransformationMatrix(); + * C. Get transformed points (y superposed onto the reference x): Vector3[] ySuperposed = qcp.getTransformedCoordinates(); + * + * Citations: + * - Liu P, Agrafiotis DK, & Theobald DL (2011) Reply to comment on: "Fast determination of the optimal Quaternionation matrix for macromolecular superpositions." Journal of Computational Chemistry 32(1):185-186. [http://dx.doi.org/10.1002/jcc.21606] + * - Liu P, Agrafiotis DK, & Theobald DL (2010) "Fast determination of the optimal Quaternionation matrix for macromolecular superpositions." Journal of Computational Chemistry 31(7):1561-1563. [http://dx.doi.org/10.1002/jcc.21439] + * - Douglas L Theobald (2005) "Rapid calculation of RMSDs using a quaternion-based characteristic polynomial." Acta Crystallogr A 61(4):478-480. [http://dx.doi.org/10.1107/S0108767305015266] + * + * This is an adaptation of the original C code QCPQuaternion 1.4 (2012, October 10) to C++. + * The original C source code is available from http://theobald.brandeis.edu/qcp/ and was developed by: + * - Douglas L. Theobald, Department of Biochemistry, Brandeis University + * - Pu Liu, Johnson & Johnson Pharmaceutical Research and Development, L.L.C. + * + * @author Douglas L. Theobald (original C code) + * @author Pu Liu (original C code) + * @author Peter Rose (adapted to Java) + * @author Aleix Lafita (adapted to Java) + * @author Eron Gjoni (adapted to EWB IK) + * @author K. S. Ernest (iFire) Lee (adapted to ManyBoneIK) + */ + +class QuaternionCharacteristicPolynomial : Object { + GDCLASS(QuaternionCharacteristicPolynomial, Object); + double eigenvector_precision = 1E-6; + + PackedVector3Array target, moved; + Vector weight; + double w_sum = 0; + + Vector3 target_center, moved_center; + + double sum_xy = 0, sum_xz = 0, sum_yx = 0, sum_yz = 0, sum_zx = 0, sum_zy = 0; + double sum_xx_plus_yy = 0, sum_zz = 0, max_eigenvalue = 0, sum_yz_minus_zy = 0, sum_xz_minus_zx = 0, sum_xy_minus_yx = 0; + double sum_xx_minus_yy = 0, sum_xy_plus_yx = 0, sum_xz_plus_zx = 0; + double sum_yy = 0, sum_xx = 0, sum_yz_plus_zy = 0; + bool transformation_calculated = false, inner_product_calculated = false; + + void inner_product(PackedVector3Array &coords1, PackedVector3Array &coords2); + void set(PackedVector3Array &r_target, PackedVector3Array &r_moved); + Quaternion calculate_rotation(); + void set(PackedVector3Array &p_moved, PackedVector3Array &p_target, Vector &p_weight, bool p_translate); + static void translate(Vector3 r_translate, PackedVector3Array &r_x); + Vector3 move_to_weighted_center(PackedVector3Array &r_to_center, Vector &r_weight); + QuaternionCharacteristicPolynomial(double p_evec_prec); + Quaternion _weighted_superpose(PackedVector3Array &p_moved, PackedVector3Array &p_target, Vector &p_weight, bool translate); + Quaternion _get_rotation(); + Vector3 _get_translation(); + +protected: + static void _bind_methods(); + +public: + static Array weighted_superpose(PackedVector3Array p_moved, + PackedVector3Array p_target, + Vector p_weight, bool p_translate, + double p_precision = 1E-6); +}; + +#endif // QCP_H diff --git a/modules/many_bone_ik/tests/test_ik_kusudama_3d.h b/modules/many_bone_ik/tests/test_ik_kusudama_3d.h new file mode 100644 index 000000000000..6f16190bf59b --- /dev/null +++ b/modules/many_bone_ik/tests/test_ik_kusudama_3d.h @@ -0,0 +1,296 @@ +/**************************************************************************/ +/* test_ik_kusudama_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_IK_KUSUDAMA_3D_H +#define TEST_IK_KUSUDAMA_3D_H +#include "modules/many_bone_ik/src/ik_kusudama_3d.h" +#include "tests/test_macros.h" + +namespace TestIKKusudama3D { + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Test a point inside or on the bounds with radius 30 degrees") { + Ref kusudama; + kusudama.instantiate(); + + Vector3 limit_cone_control_point = Vector3(0, 0, 1); + real_t limit_cone_radius = Math_PI / 6; // 30 degrees + + Ref cone; + cone.instantiate(); + cone->set_attached_to(kusudama); + cone->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone->set_radius(MAX(1.0e-38, limit_cone_radius)); + cone->set_control_point(limit_cone_control_point.normalized()); + + kusudama->add_open_cone(cone); + + TypedArray open_cones = kusudama->get_open_cones(); + REQUIRE(open_cones.size() == 1); + + Vector bounds; + bounds.resize(2); + bounds.write[0] = 0; + bounds.write[1] = 0; + Vector3 returned_point_outside = kusudama->get_local_point_in_limits(limit_cone_control_point, &bounds); + CHECK(bounds[0] > 0); + CHECK(returned_point_outside == limit_cone_control_point); +} + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Test a point inside or on the bounds with radius 0 degrees") { + Ref kusudama; + kusudama.instantiate(); + + Vector3 limit_cone_control_point = Vector3(0, 0, 1); + real_t limit_cone_radius = 0; + + Ref cone; + cone.instantiate(); + cone->set_attached_to(kusudama); + cone->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone->set_radius(MAX(1.0e-38, limit_cone_radius)); + cone->set_control_point(limit_cone_control_point.normalized()); + + kusudama->add_open_cone(cone); + + TypedArray open_cones = kusudama->get_open_cones(); + CHECK_EQ(open_cones.size(), 1); + + Vector bounds; + bounds.resize(2); + bounds.write[0] = 0; + bounds.write[1] = 0; + Vector3 returned_point_outside = kusudama->get_local_point_in_limits(limit_cone_control_point, &bounds); + CHECK_LT(bounds[0], 0); + CHECK(returned_point_outside.is_equal_approx(limit_cone_control_point)); +} + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Test a point outside the bounds with radius 0 degrees") { + Ref kusudama; + kusudama.instantiate(); + + Vector3 limit_cone_control_point = Vector3(0, 0, 1); + real_t limit_cone_radius = 0; + + Ref cone; + cone.instantiate(); + cone->set_attached_to(kusudama); + cone->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone->set_radius(MAX(1.0e-38, limit_cone_radius)); + cone->set_control_point(limit_cone_control_point.normalized()); + + kusudama->add_open_cone(cone); + + TypedArray open_cones = kusudama->get_open_cones(); + REQUIRE(open_cones.size() == 1); + + Vector bounds; + bounds.resize(2); + bounds.write[0] = 0; + bounds.write[1] = 0; + + Vector3 test_point_outside = Vector3(1, 0, 0); + Vector3 returned_point_outside = kusudama->get_local_point_in_limits(test_point_outside, &bounds); + CHECK_EQ(bounds[0], -1); + CHECK(returned_point_outside.is_equal_approx(limit_cone_control_point)); +} + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Test a point outside the bounds with radius 30 degrees") { + Ref kusudama; + kusudama.instantiate(); + + Vector3 limit_cone_control_point = Vector3(0, 0, 1); + real_t limit_cone_radius = Math::deg_to_rad(30.0f); + + Ref cone; + cone.instantiate(); + cone->set_attached_to(kusudama); + cone->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone->set_radius(MAX(1.0e-38, limit_cone_radius)); + cone->set_control_point(limit_cone_control_point.normalized()); + + kusudama->add_open_cone(cone); + + TypedArray open_cones = kusudama->get_open_cones(); + REQUIRE(open_cones.size() == 1); + + Vector bounds; + bounds.resize(2); + bounds.write[0] = 0; + bounds.write[1] = 0; + + Vector3 test_point_outside = Vector3(1, 0, 0); + Vector3 returned_point_outside = kusudama->get_local_point_in_limits(test_point_outside, &bounds); + CHECK_EQ(bounds[0], -1); + CHECK(returned_point_outside.is_equal_approx(Vector3(0.50000001261839133, 0, 0.86602539649920684))); +} + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Adding and retrieving Limit Cones") { + Ref kusudama; + kusudama.instantiate(); + + Vector3 point_on_sphere(1, 0, 0); // Unit sphere point + double radius = Math_PI / 4; // 45 degrees + + Ref cone; + cone.instantiate(); + cone->set_attached_to(kusudama); + cone->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone->set_radius(MAX(1.0e-38, radius)); + cone->set_control_point(point_on_sphere.normalized()); + + kusudama->add_open_cone(cone); + + TypedArray open_cones = kusudama->get_open_cones(); + CHECK(open_cones.size() == 1); // Expect one limit cone + + Ref retrieved_cone = open_cones[0]; + CHECK(retrieved_cone.is_valid()); // Validate retrieved cone + CHECK(Math::is_equal_approx(retrieved_cone->get_radius(), radius)); // Radius check + CHECK(retrieved_cone->get_closest_path_point(Ref(), point_on_sphere) == point_on_sphere); + CHECK(retrieved_cone->get_closest_path_point(retrieved_cone, point_on_sphere) == point_on_sphere); // Check match + + Vector3 different_point_on_sphere(-1, 0, 0); // Opposite sphere point + + Ref cone_2; + cone_2.instantiate(); + cone_2->set_attached_to(kusudama); + cone_2->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone_2->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone_2->set_radius(MAX(1.0e-38, radius)); + cone_2->set_control_point(different_point_on_sphere.normalized()); + kusudama->add_open_cone(cone_2); + + open_cones = kusudama->get_open_cones(); + CHECK(open_cones.size() == 2); // Now expect two cones + + Ref second_retrieved_cone = open_cones[1]; + CHECK(second_retrieved_cone.is_valid()); // Validate second cone + CHECK(Math::is_equal_approx(second_retrieved_cone->get_radius(), radius)); // Radius check + CHECK(second_retrieved_cone->get_closest_path_point(Ref(), different_point_on_sphere) == different_point_on_sphere); +} + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Verify limit cone removal") { + Ref kusudama; + kusudama.instantiate(); + + // Add a couple of limit cones + Vector3 first_control_point = Vector3(1, 0, 0); + real_t first_radius = Math_PI / 4; // 45 degrees + + Ref cone_3; + cone_3.instantiate(); + cone_3->set_attached_to(kusudama); + cone_3->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone_3->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone_3->set_radius(MAX(1.0e-38, first_radius)); + cone_3->set_control_point(first_control_point.normalized()); + + kusudama->add_open_cone(cone_3); + + Vector3 second_control_point = Vector3(0, 1, 0); + real_t second_radius = Math_PI / 6; // 30 degrees + + Ref cone_4; + cone_4.instantiate(); + cone_4->set_attached_to(kusudama); + cone_4->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone_4->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone_4->set_radius(MAX(1.0e-38, second_radius)); + cone_4->set_control_point(second_control_point.normalized()); + + kusudama->add_open_cone(cone_4); + + // Initial checks (expected two limit cones) + TypedArray open_cones = kusudama->get_open_cones(); + REQUIRE(open_cones.size() == 2); + + // Re-check limit cones + open_cones = kusudama->get_open_cones(); + + // Remove the first limit cone + kusudama->remove_open_cone(open_cones[0]); + + // Re-check limit cones + open_cones = kusudama->get_open_cones(); + CHECK(open_cones.size() == 1); // Only one limit cone should be left + Ref open_cone = open_cones[0]; + CHECK(open_cone->get_control_point() == second_control_point); // Ensure the remaining cone is the correct one +} + +TEST_CASE("[Modules][ManyBoneIK][IKKusudama3D] Check limit cones clear functionality") { + Ref kusudama; + kusudama.instantiate(); + + Ref cone_5; + cone_5.instantiate(); + cone_5->set_attached_to(kusudama); + cone_5->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone_5->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone_5->set_radius(MAX(1.0e-38, Math_PI / 4)); + cone_5->set_control_point(Vector3(1, 0, 0).normalized()); + + kusudama->add_open_cone(cone_5); // 45 degrees + + Ref cone_6; + cone_6.instantiate(); + cone_6->set_attached_to(kusudama); + cone_6->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone_6->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone_6->set_radius(MAX(1.0e-38, Math_PI / 6)); + cone_6->set_control_point(Vector3(0, 1, 0).normalized()); + kusudama->add_open_cone(cone_6); // 30 degrees + + Ref cone_7; + cone_7.instantiate(); + cone_7->set_attached_to(kusudama); + cone_7->set_tangent_circle_center_next_1(Vector3(0.0f, -1.0f, 0.0f)); + cone_7->set_tangent_circle_center_next_2(Vector3(0.0f, 1.0f, 0.0f)); + cone_7->set_radius(MAX(1.0e-38, Math_PI / 3)); + cone_7->set_control_point(Vector3(0, 1, 0).normalized()); + kusudama->add_open_cone(cone_7); // 60 degrees + + // Initial checks (three limit cones expected) + TypedArray open_cones = kusudama->get_open_cones(); + REQUIRE(open_cones.size() == 3); + + kusudama->clear_open_cones(); + + // Re-check limit cones - there should be none + open_cones = kusudama->get_open_cones(); + CHECK(open_cones.size() == 0); // Expect no limit cones to remain +} +} // namespace TestIKKusudama3D + +#endif // TEST_IK_KUSUDAMA_3D_H diff --git a/modules/many_bone_ik/tests/test_ik_node_3d.h b/modules/many_bone_ik/tests/test_ik_node_3d.h new file mode 100644 index 000000000000..02191429d238 --- /dev/null +++ b/modules/many_bone_ik/tests/test_ik_node_3d.h @@ -0,0 +1,109 @@ +/**************************************************************************/ +/* test_ik_node_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_IK_NODE_3D_H +#define TEST_IK_NODE_3D_H + +#include "modules/many_bone_ik/src/math/ik_node_3d.h" +#include "tests/test_macros.h" + +namespace TestIKNode3D { + +TEST_CASE("[Modules][IKNode3D] Transform operations") { + Ref node; + node.instantiate(); + + // Test set_transform and get_transform + Transform3D t; + t.origin = Vector3(1, 2, 3); + node->set_transform(t); + CHECK(node->get_transform() == t); + + // Test set_global_transform and get_global_transform + Transform3D gt; + gt.origin = Vector3(4, 5, 6); + node->set_global_transform(gt); + CHECK(node->get_global_transform() == gt); +} + +TEST_CASE("[Modules][IKNode3D] Scale operations") { + Ref node; + node.instantiate(); + + // Test set_disable_scale and is_scale_disabled + node->set_disable_scale(true); + CHECK(node->is_scale_disabled()); +} + +TEST_CASE("[Modules][IKNode3D] Parent operations") { + Ref node; + node.instantiate(); + Ref parent; + parent.instantiate(); + + // Test set_parent and get_parent + node->set_parent(parent); + CHECK(node->get_parent() == parent); +} + +TEST_CASE("[Modules][IKNode3D] Coordinate transformations") { + Ref node; + node.instantiate(); + + // Test to_local and to_global + Vector3 global(1, 2, 3); + Vector3 local = node->to_local(global); + CHECK(node->to_global(local) == global); +} + +TEST_CASE("[Modules][IKNode3D] Test local transform calculation") { + Ref node; + node.instantiate(); + + Transform3D node_transform; + node_transform.origin = Vector3(1.0, 2.0, 3.0); // Translation by (1, 2, 3) + node->set_global_transform(node_transform); + + Ref parent_node; + parent_node.instantiate(); + + Transform3D parent_transform; + parent_transform.origin = Vector3(4.0, 5.0, 6.0); // Translation by (4, 5, 6) + parent_node->set_global_transform(parent_transform); + + node->set_parent(parent_node); + + Transform3D expected_local_transform = parent_node->get_global_transform().affine_inverse() * node->get_global_transform(); + + CHECK(node->get_transform() == expected_local_transform); +} +} // namespace TestIKNode3D + +#endif // TEST_IK_NODE_3D_H diff --git a/modules/many_bone_ik/tests/test_qcp.h b/modules/many_bone_ik/tests/test_qcp.h new file mode 100644 index 000000000000..857840fb575b --- /dev/null +++ b/modules/many_bone_ik/tests/test_qcp.h @@ -0,0 +1,143 @@ +/**************************************************************************/ +/* test_qcp.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_QCP_H +#define TEST_QCP_H + +#include "core/math/quaternion.h" +#include "modules/many_bone_ik/src/math/qcp.h" +#include "tests/test_macros.h" + +namespace TestQCP { + +TEST_CASE("[Modules][QCP] No Translation") { + Quaternion expected = Quaternion(0, 0, sqrt(2) / 2, sqrt(2) / 2); + PackedVector3Array moved = { Vector3(4, 5, 6), Vector3(7, 8, 9), Vector3(1, 2, 3) }; + PackedVector3Array target = moved; + for (Vector3 &element : target) { + element = expected.xform(element); + } + Vector weight = { 1.0, 1.0, 1.0 }; // Equal weights + bool translate = false; + double epsilon = 1e-6; + Array result = QuaternionCharacteristicPolynomial::weighted_superpose(moved, target, weight, translate, epsilon); + Quaternion rotation = result[0]; + CHECK(abs(rotation.x - expected.x) < epsilon); + CHECK(abs(rotation.y - expected.y) < epsilon); + CHECK(abs(rotation.z - expected.z) < epsilon); + CHECK(abs(rotation.w - expected.w) < epsilon); + Vector3 result_translation = result[1]; + CHECK(result_translation.is_zero_approx()); +} + +TEST_CASE("[Modules][QCP] Different Weights") { + Quaternion expected = Quaternion(0, 0, sqrt(2) / 2, sqrt(2) / 2); + PackedVector3Array moved = { Vector3(4, 5, 6), Vector3(7, 8, 9), Vector3(1, 2, 3) }; + PackedVector3Array target = moved; + for (Vector3 &element : target) { + element = expected.xform(element); + } + Vector weight = { 0.5, 1.0, 1.5 }; // Different weights + bool translate = false; + double epsilon = 1e-6; + + Array result = QuaternionCharacteristicPolynomial::weighted_superpose(moved, target, weight, translate, epsilon); + Quaternion rotation = result[0]; + CHECK(abs(rotation.x - expected.x) < epsilon); + CHECK(abs(rotation.y - expected.y) < epsilon); + CHECK(abs(rotation.z - expected.z) < epsilon); + CHECK(abs(rotation.w - expected.w) < epsilon); +} + +TEST_CASE("[Modules][QCP] Zero Weights") { + Quaternion expected = Quaternion(0, 0, sqrt(2) / 2, sqrt(2) / 2); + PackedVector3Array moved = { Vector3(4, 5, 6), Vector3(7, 8, 9), Vector3(1, 2, 3) }; + PackedVector3Array target = moved; + for (Vector3 &element : target) { + element = expected.xform(element); + } + Vector weight = { 0.0, 0.0, 0.0 }; // Zero weights + bool translate = false; + double epsilon = 1e-6; + + Array result = QuaternionCharacteristicPolynomial::weighted_superpose(moved, target, weight, translate, epsilon); + Quaternion rotation = result[0]; + CHECK(abs(rotation.x - expected.x) < epsilon); + CHECK(abs(rotation.y - expected.y) < epsilon); + CHECK(abs(rotation.z - expected.z) < epsilon); + CHECK(abs(rotation.w - expected.w) < epsilon); +} + +TEST_CASE("[Modules][QCP] Identity Rotation") { + Quaternion expected = Quaternion(); + PackedVector3Array moved = { Vector3(4, 5, 6), Vector3(7, 8, 9), Vector3(1, 2, 3) }; + PackedVector3Array target = moved; + Vector weight = { 1.0, 1.0, 1.0 }; // Equal weights + bool translate = false; + double epsilon = 1e-6; + + Array result = QuaternionCharacteristicPolynomial::weighted_superpose(moved, target, weight, translate, epsilon); + Quaternion rotation = result[0]; + CHECK(abs(rotation.x - expected.x) < epsilon); + CHECK(abs(rotation.y - expected.y) < epsilon); + CHECK(abs(rotation.z - expected.z) < epsilon); + CHECK(abs(rotation.w - expected.w) < epsilon); +} + +TEST_CASE("[Modules][QCP] Random Rotation and Translation") { + Quaternion expected_rotation = Quaternion(0.1, 0.2, 0.3, 0.4).normalized(); + Vector3 expected_translation = Vector3(1, 2, 3); + PackedVector3Array moved = { Vector3(4, 5, 6), Vector3(7, 8, 9), Vector3(1, 2, 3) }; + PackedVector3Array target = moved; + for (Vector3 &element : target) { + element = expected_rotation.xform(element + expected_translation); + } + Vector weight = { 1.0, 1.0, 1.0 }; // Equal weights + bool translate = true; + double epsilon = 1e-6; + + Array result = QuaternionCharacteristicPolynomial::weighted_superpose(moved, target, weight, translate, epsilon); + Quaternion rotation = result[0]; + Vector3 translation = result[1]; + CHECK(abs(rotation.x - expected_rotation.x) < epsilon); + CHECK(abs(rotation.y - expected_rotation.y) < epsilon); + CHECK(abs(rotation.z - expected_rotation.z) < epsilon); + CHECK(abs(rotation.w - expected_rotation.w) < epsilon); + + CHECK(translate); + Vector3 translation_result = expected_rotation.xform_inv(translation); + CHECK(abs(translation_result.x - expected_translation.x) < epsilon); + CHECK(abs(translation_result.y - expected_translation.y) < epsilon); + CHECK(abs(translation_result.z - expected_translation.z) < epsilon); +} + +} // namespace TestQCP + +#endif // TEST_QCP_H

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 GGwEOQgqL0b literal 0 HcmV?d00001 diff --git a/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018ED76B18851DB9DC34.png b/modules/many_bone_ik/design_docs/Pictures/10000000000002070000018ED76B18851DB9DC34.png new file mode 100644 index 0000000000000000000000000000000000000000..9373407d7bb56f54ef312d6ff522b726ee70b019 GIT binary patch literal 19960 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 bsO}HS@Qgsry)giHE|F$oZ_`Kiy zPu%D7_=CXNd#|$f;1{xl6Iidrg<(Qq3t9 ztJ05)r5dG-ECd8vIG0GpDq2u{C=~5G79;g+Fy?G77v zBTP0sajV#fB5+Ut9%!JO%b0gW|M%@+7P=G!2M!(w4u%ea2BH(rK*0auaeNslQU1Gt z0ab*6K}{FqzYB_dNuNFpk5fPir(B>5WB%W@@C6Y2|J_|A%MVT|+YhPkziYG5fBx^o z|NqVZKXxoDw6JgAzJ34xolZXEH7#wM+bJyv2L~UY25oGqcB}jC#eQL7VX;anpXZgW zq-0+R9^J#uZn>YI-w*jrF@lC<%p-I}5npV?k1{ew9J9r$<=!{jKL{9A7TSH5M@C9b z#xi)V7Ya1%t#_wOZI)Wh3=AgQeI9Qw4^fbjBi|LZ+=;++sT=(-Gr>*f< z+}uuG0ci7eRzpKW&0e?8_V)H>W@g^rZDQHuomK^YSmWbJPnLfsO3Ba9FDxwl`gN|y z<-yCBFZ=rX+S=N#udgu(ncmv2_-e6?jf~_iViiF4rPwJ^ec@2Igwu@s$~LBJ8^&aGY|fmFW?nru`_TXJ~>Grs#crl^}J2H*Ug#PPy(};r>CN# zqV;my7d5q?GXV@JK@0^F{s@$C5Xufx_&_lQC8Zj$U>%+1pFe-jR-25az2l^z$*ZY} zYn0}G`LZYrjiv_v>Be)YadB}0fr0Pdy(|6F%tJ->cc#(+d{Yx4=SEooF$#F`KiB1= zq)Z&LS!h`O_m9(fIBCA#MyJ_Xw%#OwD=AbFuK+^hx%CVJp1y-dkB^@GiN|(DWPQ=E zI~bdYfS~YDe*{EAuGWG=(7lItatOqty-=bOBzPRkL=j`-jlaENQDppeZl@byci-IR zvs65xff~=V;hzrow-}|M;Qd0Q!|tDQ3O+|uPft(g(gC4o%9Q*<67PQff>CIBQ!ELwjXNrX@N1= za+KIUnYK6N@^G0bL_+xCiuztWmWxUWmTTHU2wn#jnpT5tw$*$c@DO0V62wwJ6rf0a zX8KIvmyyq-2MnVqgt5@jX6tPzWR``;d8nXBRw3DfVADFNX~I5B3k#l$O-`P6SEZRy zB<(lt0uAPo-NhlH)5?&cND=2OB@kO~oe%s0e~gj~xqB|di$j{uA98iZqn{gy zx1}BL`_UAO{W)ByJ?tqgXt!RLjW}h-U4s1T)Pz=17mg%MX*ksU~BcO z!i*f{!>@l4sr3=$yaV&~#Sy=2+X{`y27RV4SggDtK~dxsP1ci(9(I-=dX#Um$@pr( z-hfvgUl%E?uZR&aOm^@@q3$jERLDQ-ZW>b%r_Msl9#gO=>ztiW&Hw!HIU4