1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00
Commit Graph

67 Commits

Author SHA1 Message Date
LuoZhihao
713ed59a77 Remove unnecessary _validate_property() calling 2025-06-03 21:57:36 +08:00
Silc Lizard (Tokage) Renew
96200abb97 Add p_delta argument to _process_modification() and expose advance() 2025-04-03 23:58:54 +09:00
Michael Alexsander
5ad414d046 Allow to compile templates without physics servers 2025-03-28 11:00:44 -03:00
Thaddeus Crews
324512e11c Style: Replace header guards with #pragma once 2025-03-07 17:33:47 -06:00
Silc Lizard (Tokage) Renew
cb7085340e Add saving flag hack to Skeleton and revert reset timing of animation 2025-01-28 03:52:01 +09:00
Nazarii
482531c4b8 Use thread_local for bones_backup 2024-12-31 16:32:15 +02:00
Yufeng Ying
73d85f46c9 Remove unused headers in scene.
Co-authored-by: Thaddeus Crews <repiteo@outlook.com>

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2024-12-24 00:40:09 +08:00
rune-scape
d58b2e879f Get rid of easily removable uses of const_cast 2024-12-01 17:50:13 -08:00
Thaddeus Crews
04786f0ee8 Merge pull request #97824 from TokageItLab/retarget-modifier
Add RetargetModifier3D for realtime retarget to keep original rest
2024-11-26 13:04:47 -06:00
Silc Lizard (Tokage) Renew
f5b49af99f Add RetargetModifier3D for realtime retarget to keep original rest 2024-11-18 22:44:55 +09:00
Silc Lizard (Tokage) Renew
5d1a2a4216 Fix Skeleton doesn't update skin after deactivating modifiers 2024-11-12 04:41:08 +09:00
Thaddeus Crews
89a311205f Style: Apply clang-tidy fixes
• `modernize-use-default-member-init` and `readability-redundant-member-init`
• Minor adjustments to `.clang-tidy` to improve syntax & remove redundancies
2024-11-04 12:11:06 -06:00
nazarii
76208f7155 Implement array based hash map 2024-10-24 21:34:12 +03:00
detomon
9ab84887aa Improve performance of global bone pose calculation in Skeleton3D 2024-10-12 11:13:22 +02:00
Nazarii
1ba168fcbc Use local vector for skeleton 2024-10-02 20:38:40 +03:00
demolke
0468bea899 Add per-bone meta to Skeleton3D
Individual bones are not represented as `Node`s in Godot, in order to support meta functionality for them the skeleton has to carry the information similarly to how other per-bone properties are handled.
- Also adds support for GLTF import/export
2024-09-16 16:26:15 +02:00
Silc Lizard (Tokage) Renew
9c1f23c3db Re-add Skeleton3D::animate_physical_bones 2024-07-14 14:24:25 +09:00
Silc Lizard (Tokage) Renew
793f3832e5 Rework migration of animate_physical_bones to compatibility 2024-06-25 18:54:59 +09:00
Silc Lizard (Tokage) Renew
5774d57496 Optimize update flag by SkeletonModifier 2024-06-23 17:01:01 +09:00
Silc Lizard (Tokage) Renew
a57f9f863d Add get_concatenated_bone_names() to Skeleton3D for Modifier's hint 2024-06-10 10:19:36 +09:00
Rémi Verschelde
84013a31ea Merge pull request #91122 from TokageItLab/simulator-memdel
Modify allocation process of the PhysicalBoneSimulator in Skeleton3D
2024-05-04 11:52:22 +02:00
Silc Lizard (Tokage) Renew
a22923daf7 Static allocation bones copy for SkeletonModifier
Co-authored-by: SlugFiller <5435495+SlugFiller@users.noreply.github.com>
2024-05-04 11:16:26 +09:00
Silc Lizard (Tokage) Renew
4900dddb88 Modify allocation process of the PhysicalBoneSimulator in Skeleton3D 2024-05-03 06:00:10 +09:00
Silc Lizard (Tokage) Renew
04dd299cba Skeleton3D: Add SkeletonModifier / Deprecate Override / Separate PB 2024-04-05 01:28:26 +09:00
Aaron Franke
c399424db9 Move 3D-only resources to their own folder 2024-02-26 05:23:04 -06:00
Zi Ye
995bc8d049 Make Skeleton3D::add_bone return the new bone index right away, instead of requiring an additional call to get_bone_count. 2024-02-25 05:24:48 -06:00
Artyom Lunchenkov
f645eee62e Improve Skeleton3D::find_bone() performance 2023-05-23 21:02:46 +06:00
Lyuma
fd25bb50ab Remove SkeletonModificationStack3D, and Skeleton3D api cleanup
Removes all 3D modification resources. SkeletonIK3D is a node and still supported.
Remove deprecated Skeleton3D functionality for 4.0, so we can add it back in 4.x.
Remove local_pose_override feature from Skeleton3D and BoneAttachment3D.
Expose Skeleton3D::get_version() so IK scripts/extensions can cache bones.

Note: This change only affects 3D. SkeletonModification2D will work as before.
2023-01-12 12:04:53 -08:00
Rémi Verschelde
d95794ec8a One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
Tomasz Chabora
882a4f8906 Port remaining connections to callable_mp 2022-09-18 13:08:54 +02:00
Silc Renew
28b11e216a Clean-up/change some Skeleton3D API 2022-08-30 23:03:12 +09:00
Rémi Verschelde
1f61d47766 Merge pull request #64339 from YuriSizov/core-multilevel-validate-property 2022-08-22 21:39:48 +02:00
Yuri Sizov
1a24c9e14b Make _validate_property a multilevel method 2022-08-22 18:35:11 +03:00
Silc Renew
b27fe6452d add init bone poses 2022-08-18 18:41:37 +09:00
Silc Renew
dde235ad82 add position track normalization & post process key value for retarget 2022-07-26 18:48:08 +09:00
Rémi Verschelde
90019676b0 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 11:17:40 +02:00
reduz
45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
reduz
746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
Rémi Verschelde
c273ddc3ee Style: Partially apply clang-tidy's cppcoreguidelines-pro-type-member-init
Didn't commit all the changes where it wants to initialize a struct
with `{}`. Should be reviewed in a separate PR.

Option `IgnoreArrays` enabled for now to be conservative, can be
disabled to see if it proposes more useful changes.

Also fixed manually a handful of other missing initializations / moved
some from constructors.
2022-05-02 16:28:25 +02:00
Silc 'Tokage' Renew
4d4ffa3a2c Implement global rest 2022-04-18 02:11:19 +09:00
Rémi Verschelde
f8ab79e68a Zero initialize all pointer class and struct members
This prevents the pitfall of UB when checking if they have been
assigned something valid by comparing to nullptr.
2022-04-04 19:49:50 +02:00
Rémi Verschelde
fe52458154 Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
Silc 'Tokage' Renew
8e9897b6de get rid set_bone_pose and fix some function in SkeletonEditor 2021-10-15 02:41:17 +09:00
reduz
2dc823273e Remove REST transform influence in skeleton bones
* Animations and Skeletons are now pose-only.
* Rest transform is kept as reference (when it exists) and for IK
* Improves 3D model compatibility (non uniform transforms will properly work, as well as all animations coming from Autodesk products).
2021-10-13 14:51:29 -03:00
reduz
ec19ed3723 Remove animation 3D transform track, replace by loc/rot/scale tracks.
* `Animation.TYPE_TRANSFORM3D` track is gone.
* Added POSITION_3D, ROTATION_3D, SCALE_3D tracks.
* GLTF2, Collada, FBX importers will only import the track types found.
* Skeleton3D bone poses are now Pos/Rot/Scale, pose matrix removed.
* AnimationPlayer and AnimationTree animate these tracks separately, only when found.
* Removed BakeReset code, is useless with these changes.

This is the first in a series of commits designed to make the animation system in Godot more useful, which includes:

* Better compatibility with Autodesk products
* Better reusability of animations across models (including retargeting).
* Proper animation compression.
* etc.

*Note* GLTF2 animation saving went broken with this PR, needs to be fixed in a subsequent one.
2021-10-12 20:08:42 -03:00
Rémi Verschelde
5ae569560d Fix missing argument names in bindings
While at it, tweak some boolean setters to use `p_enabled` for the bool.

Also renames `draw_minimap()` to `set_draw_minimap()`.
2021-10-09 00:20:10 +02:00
Silc Renew
f2e9867e9f Implemented SkeletonEditorGizmo
Co-authored-by: Lyuma <xn.lyuma@gmail.com>
2021-10-07 01:07:46 +09:00
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
Aaron Franke
eb4902a455 Fix some unnecessary includes 2021-08-13 00:27:38 -05:00
Aaron Franke
7cec3c2b95 Use real_t in 3D nodes 2021-08-03 11:16:51 -05:00