godot/editor
TwistedTwigleg 5ffed49907 New and improved IK system for Skeleton3D
This PR and commit adds a new IK system for 3D with the Skeleton3D node
that adds several new IK solvers, as well as additional changes and functionality
for making bone manipulation in Godot easier.

This work was sponsored by GSoC 2020 and TwistedTwigleg

Full list of changes:
* Adds a SkeletonModification3D resource
  * This resource is the base where all IK code is written and executed
* Adds a SkeletonModificationStack3D resource
  * This node oversees the execution of the modifications and acts as a bridge of sorts for the modifications to the Skeleton3D node
* Adds SkeletonModification3D resources for LookAt, CCDIK, FABRIK, Jiggle, and TwoBoneIK
  * Each modification is in it's own file
* Several changes to Skeletons, listed below:
  * Added local_pose_override, which acts just like global_pose_override but keeps bone-child relationships intract
    * So if you move a bone using local_pose_override, all of the bones that are children will also be moved. This is different than global_pose_override, which only affects the individual bone
  * Internally bones keep track of their children. This removes the need of a processing list, makes it possible to update just a few select bones at a time, and makes it easier to traverse down the bone chain
  * Additional functions added for converting from world transform to global poses, global poses to local poses, and all the same changes but backwards (local to global, global to world). This makes it much easier to work with bone transforms without needing to think too much about how to convert them.
  * New signal added, bone_pose_changed, that can be used to tell if a specific bone changed its transform. Needed for BoneAttachment3D
  * Added functions for getting the forward position of a bone
* BoneAttachment3D node refactored heavily
  * BoneAttachment3D node is now completely standalone in its functionality.
    * This makes the code easier and less interconnected, as well as allowing them to function properly without being direct children of Skeleton3D nodes
  * BoneAttachment3D now can be set either using the index or the bone name.
  * BoneAttachment3D nodes can now set the bone transform instead of just following it. This is disabled by default for compatibility
  * BoneAttachment3D now shows a warning when not configured correctly
* Added rotate_to_align function in Basis
* Added class reference documentation for all changes
2021-08-14 15:57:00 -04:00
..
debugger Merge pull request #50454 from Ev1lbl0w/gsoc21-dap 2021-08-03 17:12:37 +02:00
fileserver Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
icons Rename LineShape2D to WorldMarginShape2D 2021-08-14 03:12:13 +02:00
import Fix duplicate conditions. 2021-08-13 12:22:38 +05:45
plugins New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
translations i18n: Sync translations with Weblate 2021-08-12 17:10:01 +02:00
action_map_editor.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
action_map_editor.h Rename "Control" key to "Ctrl" and add "_pressed" suffix to all InputEventWithModifiers properties/methods 2021-05-07 14:00:50 -06:00
animation_bezier_editor.cpp Shortcut: Rename shortcut property to event 2021-08-05 13:48:43 +02:00
animation_bezier_editor.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
animation_track_editor_plugins.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
animation_track_editor_plugins.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
animation_track_editor.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
animation_track_editor.h Documentation search fixes 2021-06-16 09:43:34 -07:00
array_property_edit.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
array_property_edit.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
audio_stream_preview.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
audio_stream_preview.h Implement Range Iterators 2021-07-08 23:27:27 -03:00
code_editor.cpp Move CodeEdit theme overrides into EditorTheme 2021-08-13 17:47:53 +01:00
code_editor.h Move CodeEdit theme overrides into EditorTheme 2021-08-13 17:47:53 +01:00
connections_dialog.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
connections_dialog.h Documentation search fixes 2021-06-16 09:43:34 -07:00
create_dialog.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
create_dialog.h Fix cases of resources destroyed too early 2021-01-06 23:40:50 +01:00
dependency_editor.cpp Dependency editor: Edit message about move to trash 2021-08-02 12:03:18 +02:00
dependency_editor.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
dictionary_property_edit.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
dictionary_property_edit.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
doc_tools.cpp Add theme item descriptions to the online documentation 2021-08-04 22:27:10 +03:00
doc_tools.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_about.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_about.h Make it possible to copy the Godot version identifier by clicking it 2021-04-28 17:35:57 +02:00
editor_asset_installer.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_asset_installer.h Automatically display the installer after downloading an asset 2021-07-12 11:47:43 +02:00
editor_atlas_packer.cpp Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
editor_atlas_packer.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_audio_buses.cpp Fix theming in the audio bus editor 2021-07-31 22:14:14 +03:00
editor_audio_buses.h Improve the audio bus editor appearance 2021-05-27 10:00:49 +02:00
editor_autoload_settings.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
editor_autoload_settings.h Documentation search fixes 2021-06-16 09:43:34 -07:00
editor_builders.py Use a DynamicFont for the default project theme 2021-05-17 15:19:13 +02:00
editor_command_palette.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
editor_command_palette.h Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
editor_data.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
editor_data.h Fix typos with codespell 2021-05-20 12:38:56 +02:00
editor_dir_dialog.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_dir_dialog.h Core: Move DirAccess and FileAccess to core/io 2021-06-11 14:52:39 +02:00
editor_export.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
editor_export.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
editor_feature_profile.cpp Fix various i18n failures 2021-08-03 23:53:36 +08:00
editor_feature_profile.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
editor_file_dialog.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
editor_file_dialog.h Documentation search fixes 2021-06-16 09:43:34 -07:00
editor_file_system.cpp Fix various typos 2021-07-25 07:18:25 -04:00
editor_file_system.h Implement Resource UIDs 2021-07-24 09:16:52 -03:00
editor_folding.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
editor_folding.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_fonts.cpp [Editor Fonts] Add Noto Sans Bold font variant for supported languages. 2021-07-19 23:08:05 +03:00
editor_fonts.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_help_search.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
editor_help_search.h Add theme item descriptions to the online documentation 2021-08-04 22:27:10 +03:00
editor_help.cpp Add theme item descriptions to the online documentation 2021-08-04 22:27:10 +03:00
editor_help.h Documentation search fixes 2021-06-16 09:43:34 -07:00
editor_inspector.cpp Fix incorrect word block colors in the inspector tooltip 2021-08-13 16:15:05 +03:00
editor_inspector.h Fix up property reversion 2021-08-02 13:58:02 +02:00
editor_layouts_dialog.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
editor_layouts_dialog.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_log.cpp Improve naming of a couple shortcuts 2021-08-10 13:01:07 -04:00
editor_log.h Fix Output panel colors on theme changing 2021-07-21 11:22:33 +03:00
editor_native_shader_source_visualizer.cpp Rename readonly to editable 2021-08-12 09:29:58 +01:00
editor_native_shader_source_visualizer.h Added ability to visualize native shaders 2021-01-06 09:40:09 -03:00
editor_node.cpp Fix double Next Editor Tab 2021-08-14 16:57:42 +02:00
editor_node.h Added EditorCommandPalette 2021-08-09 17:41:50 +05:30
editor_path.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
editor_path.h Make several actions in the Inspector dock more obvious 2021-06-04 02:05:27 +03:00
editor_paths.cpp Main: Fixup bogus fallback to project manager with more bolognese 2021-06-16 19:11:08 +02:00
editor_paths.h Refactor editor paths validation in EditorPaths and EditorSettings 2021-06-14 19:56:20 +02:00
editor_plugin_settings.cpp Remove colon from column titles 2021-07-29 22:01:07 +08:00
editor_plugin_settings.h Detect plugins recursively 2021-01-19 18:09:30 +02:00
editor_plugin.cpp Added EditorCommandPalette 2021-08-09 17:41:50 +05:30
editor_plugin.h Added EditorCommandPalette 2021-08-09 17:41:50 +05:30
editor_properties_array_dict.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_properties_array_dict.h Add the ability to reorder arrays from the inspector 2021-07-11 16:09:39 -06:00
editor_properties.cpp Merge pull request #51532 from nekomatata/layer-mask-accessors 2021-08-12 17:55:11 +02:00
editor_properties.h Add type variations to Theme 2021-07-13 02:26:28 +03:00
editor_resource_picker.cpp Added editor dialog for easily creating shaders. 2021-08-07 21:02:13 +03:00
editor_resource_picker.h Added editor dialog for easily creating shaders. 2021-08-07 21:02:13 +03:00
editor_resource_preview.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_resource_preview.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
editor_run_native.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_run_native.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_run_script.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_run_script.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
editor_run.cpp Clear debug process id at stop() to prevent invalid checking of them 2021-07-29 19:08:15 +03:00
editor_run.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_scale.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_scale.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_sectioned_inspector.cpp Use C++ iterators for Lists in many situations 2021-07-23 17:38:28 -04:00
editor_sectioned_inspector.h Reorganize Project Settings 2021-02-18 11:23:34 -03:00
editor_settings.cpp Expose and cleanup TextEdit line wrap API 2021-08-12 09:29:16 +01:00
editor_settings.h Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
editor_spin_slider.cpp Use Command+Drag in EditSpinSlider on macOS 2021-08-02 18:43:43 +08:00
editor_spin_slider.h Fix crash in EditorSpinSlider 2021-07-18 01:04:27 +02:00
editor_themes.cpp Move CodeEdit theme overrides into EditorTheme 2021-08-13 17:47:53 +01:00
editor_themes.h Fix project icon size in Project Manager 2021-03-20 17:32:38 +08:00
editor_translation_parser.cpp Consistently prefix bound virtual methods with _ 2021-06-12 00:55:52 +02:00
editor_translation_parser.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
editor_vcs_interface.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
editor_vcs_interface.h Make EditorVCSInterface proxy functions virtual in C++ 2021-07-06 22:20:03 +03:00
editor_zoom_widget.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
editor_zoom_widget.h Improve 2D editor zoom logic 2021-07-10 17:32:40 +02:00
export_template_manager.cpp Fix various i18n failures 2021-08-03 23:53:36 +08:00
export_template_manager.h Addes ability to load build sources from file. 2021-07-15 10:14:08 -03:00
filesystem_dock.cpp Use Ref<T> references as iterators where relevant 2021-07-26 19:27:11 +02:00
filesystem_dock.h Merge pull request #49295 from foxydevloper/fix-focus-filter 2021-06-29 17:23:45 +02:00
find_in_files.cpp Make "Find in Files" searches ignore directories with .gdignore files in them 2021-07-30 15:10:05 -04:00
find_in_files.h Documentation search fixes 2021-06-16 09:43:34 -07:00
groups_editor.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
groups_editor.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
import_defaults_editor.cpp Use Ref<T> references as iterators where relevant 2021-07-26 19:27:11 +02:00
import_defaults_editor.h Fix heap-use-after-free in Import Defaults Editor 2021-02-25 11:50:10 -03:00
import_dock.cpp Use Ref<T> references as iterators where relevant 2021-07-26 19:27:11 +02:00
import_dock.h Improved 3D Scene Importer 2021-03-22 12:16:40 -03:00
inspector_dock.cpp Disable save button when Inspector is not editing anything 2021-08-04 15:03:10 +08:00
inspector_dock.h Make several actions in the Inspector dock more obvious 2021-06-04 02:05:27 +03:00
localization_editor.cpp Fix being able to add duplicate files in the Localization editor 2021-07-31 19:35:46 -03:00
localization_editor.h ICU: Update to version 69.1, improve ICU data export process. 2021-04-22 16:56:53 +03:00
multi_node_edit.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
multi_node_edit.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
node_dock.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
node_dock.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
plugin_config_dialog.cpp Expose and cleanup TextEdit line wrap API 2021-08-12 09:29:16 +01:00
plugin_config_dialog.h Added validation to plugin creation. 2021-07-12 00:18:52 +10:00
pot_generator.cpp Remove uses of auto for better readability and online code reviews 2021-04-26 14:59:28 +02:00
pot_generator.h Core: Move DirAccess and FileAccess to core/io 2021-06-11 14:52:39 +02:00
progress_dialog.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
progress_dialog.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
project_export.cpp Use bullet points in the editor instead of dashes where relevant 2021-07-28 19:40:45 +02:00
project_export.h Core: Move DirAccess and FileAccess to core/io 2021-06-11 14:52:39 +02:00
project_manager.cpp Expose Vulkan's clustered and mobile backends in the project manager 2021-07-30 19:36:17 +02:00
project_manager.h Make it possible to copy the Godot version identifier by clicking it 2021-04-28 17:35:57 +02:00
project_settings_editor.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
project_settings_editor.h Improve Project Settings Editor 2021-05-14 13:58:43 +03:00
property_editor.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
property_editor.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
property_selector.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
property_selector.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
quick_open.cpp Use Key enum instead of plain integers 2021-08-10 16:26:55 -05:00
quick_open.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
register_exporters.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
rename_dialog.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
rename_dialog.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
reparent_dialog.cpp Optimize StringName usage 2021-07-18 21:20:02 -03:00
reparent_dialog.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
scene_tree_dock.cpp Focus the scene tree dock after hitting one of the "Create Root Node:" buttons 2021-08-11 18:15:24 -06:00
scene_tree_dock.h Added editor dialog for easily creating shaders. 2021-08-07 21:02:13 +03:00
scene_tree_editor.cpp Use C++ iterators for Lists in many situations 2021-07-23 17:38:28 -04:00
scene_tree_editor.h Revert "Fix duplicate selection in SceneTree" 2021-07-23 17:34:21 +09:00
script_create_dialog.cpp Use bullet points in the editor instead of dashes where relevant 2021-07-28 19:40:45 +02:00
script_create_dialog.h Minor cleanup of the "New Script" dialog 2021-07-04 00:06:46 -03:00
SCsub Allow additional cpp files to be added for export template 2021-08-12 16:56:17 +03:00
settings_config_dialog.cpp corrected method name set_event 2021-08-11 19:30:53 +05:30
settings_config_dialog.h Added Built-in Action editor to Editor Settings dialog. 2021-02-19 19:36:42 +10:00
shader_create_dialog.cpp Fix some bugs in shader creation dialog (continue) 2021-08-09 11:49:57 +03:00
shader_create_dialog.h Fix some bugs in shader creation dialog (continue) 2021-08-09 11:49:57 +03:00
shader_globals_editor.cpp Merge pull request #50648 from foxydevloper/remove-weird-prints 2021-07-20 17:23:39 +02:00
shader_globals_editor.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00