godot/scene/resources
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
..
default_theme Better port handling connection for GraphEdit 2021-08-12 09:09:24 +03:00
animation.cpp Some work on double support 2021-08-09 17:43:48 -05:00
animation.h Some work on double support 2021-08-09 17:43:48 -05:00
audio_stream_sample.cpp Invert how global_rate_scale value works, and rename it to playback_speed_scale 2021-08-07 12:32:42 -03:00
audio_stream_sample.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
bit_map.cpp Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
bit_map.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
box_shape_3d.cpp Re-add extents property to box shapes for compatibility 2021-06-17 17:10:52 -04:00
box_shape_3d.h Re-add extents property to box shapes for compatibility 2021-06-17 17:10:52 -04:00
camera_effects.cpp Fix editor suffixes and degrees conversion 2021-06-30 12:38:25 -03:00
camera_effects.h Hide more options of disabled properties 2021-03-03 20:51:35 -03:00
canvas_item_material.cpp Fix some unnecessary includes 2021-08-13 00:27:38 -05:00
canvas_item_material.h Fix some unnecessary includes 2021-08-13 00:27:38 -05:00
capsule_shape_2d.cpp Improve CapsuleShape2D size clamping 2021-08-11 21:39:18 +02:00
capsule_shape_2d.h Make radius & height in CapsuleShape2D independent 2021-08-11 17:34:27 +02:00
capsule_shape_3d.cpp Make radius & height in CapsuleShape3D independent 2021-08-11 14:54:53 -07:00
capsule_shape_3d.h Make radius & height in CapsuleShape3D independent 2021-08-11 14:54:53 -07:00
circle_shape_2d.cpp Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
circle_shape_2d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
concave_polygon_shape_2d.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
concave_polygon_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
concave_polygon_shape_3d.cpp Disable backface collision with ConcavePolygonShape by default 2021-03-18 11:30:22 -07:00
concave_polygon_shape_3d.h Disable backface collision with ConcavePolygonShape by default 2021-03-18 11:30:22 -07:00
convex_polygon_shape_2d.cpp Rename Array.invert() to Array.reverse() 2021-03-21 10:20:08 +00:00
convex_polygon_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
convex_polygon_shape_3d.cpp Replace QuickHull with Bullet's convex hull computer. 2021-05-22 22:35:42 +02:00
convex_polygon_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
curve.cpp Some work on double support 2021-08-09 17:43:48 -05:00
curve.h Some work on double support 2021-08-09 17:43:48 -05:00
cylinder_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
cylinder_shape_3d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
environment.cpp Validates set_sdfgi_cascades argument range 2021-08-02 23:50:59 +08:00
environment.h Merge pull request #45845 from qarmin/cppcheck_scene_2 2021-02-10 20:06:12 +01:00
font.cpp Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
font.h Merge pull request #46045 from bruvzg/text_server_bmp_create 2021-02-24 12:55:36 +01:00
gradient.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
gradient.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
height_map_shape_3d.cpp Some work on double support 2021-08-09 17:43:48 -05:00
height_map_shape_3d.h Some work on double support 2021-08-09 17:43:48 -05:00
immediate_mesh.cpp Fix various typos with codespell 2021-07-25 11:21:51 +02:00
immediate_mesh.h Deprecate ImmediateGeometry 2021-06-30 14:14:41 -03:00
material.cpp Style: Cleanup code using text_editor/completion/use_single_quotes 2021-08-13 21:27:57 +02:00
material.h Merge pull request #50193 from reduz/fix-command-queue-crash 2021-07-07 16:36:13 +02:00
mesh.cpp Enclose unused components in DISABLE_DEPRECATED 2021-08-10 00:54:24 -04:00
mesh.h Options to clean/simplify convex hull generated from mesh 2021-07-07 12:14:12 -07:00
mesh_data_tool.cpp Some work on double support 2021-08-09 17:43:48 -05:00
mesh_data_tool.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
mesh_library.cpp Rename Variant TRANSFORM to TRANSFORM3D 2021-06-03 07:30:01 -04:00
mesh_library.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
multimesh.cpp Add PROPERTY_USAGE_NONE and use it 2021-06-17 19:10:26 -04:00
multimesh.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
navigation_mesh.cpp Uniformize layer names, script methods and documentation 2021-08-12 08:06:42 -07:00
navigation_mesh.h Uniformize layer names, script methods and documentation 2021-08-12 08:06:42 -07:00
packed_scene.cpp Disable Node3D when compiling without 3D and fix disable_3d option 2021-08-13 08:59:48 -05:00
packed_scene.h Rename instance()->instantiate() when it's a verb 2021-06-19 20:49:18 -06:00
particles_material.cpp Use real_t and double where appropriate in Particles 2021-08-12 11:35:31 -05:00
particles_material.h Use real_t and double where appropriate in Particles 2021-08-12 11:35:31 -05:00
physics_material.cpp Allow values > 1 for friction and bounce in PhysicsMaterial 2021-05-03 17:48:23 -07:00
physics_material.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
polygon_path_finder.cpp Some work on double support 2021-08-09 17:43:48 -05:00
polygon_path_finder.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
primitive_meshes.cpp Make radius & height in CapsuleShape3D independent 2021-08-11 14:54:53 -07:00
primitive_meshes.h Make radius & height in CapsuleShape3D independent 2021-08-11 14:54:53 -07:00
rectangle_shape_2d.cpp Re-add extents property to box shapes for compatibility 2021-06-17 17:10:52 -04:00
rectangle_shape_2d.h Re-add extents property to box shapes for compatibility 2021-06-17 17:10:52 -04:00
resource_format_text.cpp Assign embedded text resource path earlier to prevent error on embedded scripts. 2021-08-10 05:42:35 +01:00
resource_format_text.h Implement Resource UIDs 2021-07-24 09:16:52 -03:00
SCsub SCons: Add explicit dependencies on thirdparty code in cloned env 2020-12-18 10:29:34 +01:00
segment_shape_2d.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
segment_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
shader.cpp Preserve original name in shader params cache 2021-08-05 18:31:08 -05:00
shader.h Improve resource load cache 2021-02-11 15:44:28 -03:00
shape_2d.cpp Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
shape_2d.h Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
shape_3d.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
shape_3d.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
skeleton_modification_2d.cpp Use get_global_* functions instead of using transforms. 2021-08-14 14:01:57 +05:45
skeleton_modification_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_ccdik.cpp Use get_global_* functions instead of using transforms. 2021-08-14 14:01:57 +05:45
skeleton_modification_2d_ccdik.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_fabrik.cpp Use get_global_* functions instead of using transforms. 2021-08-14 14:01:57 +05:45
skeleton_modification_2d_fabrik.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_jiggle.cpp Use get_global_* functions instead of using transforms. 2021-08-14 14:01:57 +05:45
skeleton_modification_2d_jiggle.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_lookat.cpp Use get_global_* functions instead of using transforms. 2021-08-14 14:01:57 +05:45
skeleton_modification_2d_lookat.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_physicalbones.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_physicalbones.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_stackholder.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_stackholder.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_twoboneik.cpp Use get_global_* functions instead of using transforms. 2021-08-14 14:01:57 +05:45
skeleton_modification_2d_twoboneik.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_3d.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_ccdik.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_ccdik.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_fabrik.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_fabrik.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_jiggle.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_jiggle.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_lookat.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_lookat.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_stackholder.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_stackholder.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_twoboneik.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_3d_twoboneik.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_stack_2d.cpp Validate parameter of SkeletonModificationStack2D::add_modification 2021-06-13 14:07:01 +08:00
skeleton_modification_stack_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_stack_3d.cpp New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skeleton_modification_stack_3d.h New and improved IK system for Skeleton3D 2021-08-14 15:57:00 -04:00
skin.cpp Rename Variant TRANSFORM to TRANSFORM3D 2021-06-03 07:30:01 -04:00
skin.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
sky.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
sky.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
sky_material.cpp Make Sky initialize shaders only once 2021-07-21 09:23:51 -03:00
sky_material.h Make Sky initialize shaders only once 2021-07-21 09:23:51 -03:00
sphere_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
sphere_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
sprite_frames.cpp Use doubles for time in many other places 2021-08-09 14:05:42 -05:00
sprite_frames.h Use doubles for time in many other places 2021-08-09 14:05:42 -05:00
style_box.cpp Use real_t and double where appropriate in Particles 2021-08-12 11:35:31 -05:00
style_box.h Use real_t and double where appropriate in Particles 2021-08-12 11:35:31 -05:00
surface_tool.cpp Fix crash when number of indices to optimize is not a multiple of 3 2021-08-02 23:07:18 +08:00
surface_tool.h Rename Reference to RefCounted 2021-06-11 18:48:42 +02:00
syntax_highlighter.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
syntax_highlighter.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
text_file.cpp Core: Move DirAccess and FileAccess to core/io 2021-06-11 14:52:39 +02:00
text_file.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
text_line.cpp Merge pull request #51178 from Geometror/layout-options-textline-textparagraph 2021-08-11 07:51:57 +02:00
text_line.h Merge pull request #51178 from Geometror/layout-options-textline-textparagraph 2021-08-11 07:51:57 +02:00
text_paragraph.cpp Merge pull request #51178 from Geometror/layout-options-textline-textparagraph 2021-08-11 07:51:57 +02:00
text_paragraph.h Merge pull request #51178 from Geometror/layout-options-textline-textparagraph 2021-08-11 07:51:57 +02:00
texture.cpp Add placeholder textures to ensure CameraTexture / CameraFeed always have valid RIDs. 2021-08-13 12:32:01 +03:00
texture.h Add placeholder textures to ensure CameraTexture / CameraFeed always have valid RIDs. 2021-08-13 12:32:01 +03:00
theme.cpp Use const references where possible for List range iterators 2021-07-25 12:22:25 +02:00
theme.h Add type variations to Theme 2021-07-13 02:26:28 +03:00
tile_set.cpp Merge pull request #51185 from timothyqiu/tile-data-enum-range 2021-08-02 17:20:44 +02:00
tile_set.h Implements TileMap layers and move TileSetPlugins's functions to the TileMap node instead 2021-08-02 13:54:39 +02:00
video_stream.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
visual_shader.cpp Fix printing error about unsupported modifier on TransformUniform 2021-08-12 19:40:45 +03:00
visual_shader.h Makes dictionary instead of string for visual shader version 2021-08-02 21:34:19 +03:00
visual_shader_nodes.cpp Merge pull request #50114 from Chaosus/vs_constants 2021-08-13 14:45:13 +02:00
visual_shader_nodes.h Changed TransformMult node to TransformOp in visual shaders 2021-08-11 22:05:04 +03:00
visual_shader_particle_nodes.cpp Use C++11 raw literals for shader code to improve readability 2021-07-19 08:19:50 +02:00
visual_shader_particle_nodes.h Continuation of work on visual particles system 2021-06-07 20:33:17 +03:00
visual_shader_sdf_nodes.cpp Use C++11 raw literals for shader code to improve readability 2021-07-19 08:19:50 +02:00
visual_shader_sdf_nodes.h Added SDF nodes to visual shader 2021-01-18 15:04:54 +01:00
world_2d.cpp Add PROPERTY_USAGE_NONE and use it 2021-06-17 19:10:26 -04:00
world_2d.h Rename VisibilityNotifierXD to VisibleOnScreenNotifierXD 2021-06-16 22:01:39 -03:00
world_3d.cpp Add PROPERTY_USAGE_NONE and use it 2021-06-17 19:10:26 -04:00
world_3d.h Rename VisibilityNotifierXD to VisibleOnScreenNotifierXD 2021-06-16 22:01:39 -03:00
world_margin_shape_2d.cpp Rename LineShape2D to WorldMarginShape2D 2021-08-14 03:12:13 +02:00
world_margin_shape_2d.h Rename LineShape2D to WorldMarginShape2D 2021-08-14 03:12:13 +02:00
world_margin_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
world_margin_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00