Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove animation 3D transform track, replace by loc/rot/scale tracks. #53689

Merged

Conversation

reduz
Copy link
Member

@reduz reduz commented Oct 11, 2021

Supersedes #53473

  • 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.
  • Removed AnimationCache, I have no idea what it was but it seemed unused.

New tracks in the animation editor:

image

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.

Upcoming PRs after this: Track import behavior selection, un-linking of rest/pose matrices in bones (bones becoming pose only), animation compression.

Note GLTF2 animation saving went broken with this PR, needs to be fixed in a subsequent one.

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For a future date run the svg processing tools.

Copy link
Member

@fire fire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/InterpolationTest Tested using.

Playing the scale animation track causes a crash.

Crash Log

CrashHandlerException: Program crashed
Engine version: Godot Engine v4.0.dev.custom_build (26628fdd1bf599a08ca24de778b434ade986dee9)
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[0] Node3D::set_scale (C:\chibifire\godot-3d-transform\scene\3d\node_3d.cpp:326)
[1] AnimationPlayer::_animation_update_transforms (C:\chibifire\godot-3d-transform\scene\animation\animation_player.cpp:934)
[2] AnimationPlayer::_animation_process (C:\chibifire\godot-3d-transform\scene\animation\animation_player.cpp:1036)
[3] AnimationPlayer::seek (C:\chibifire\godot-3d-transform\scene\animation\animation_player.cpp:1395)
[4] AnimationPlayerEditor::_seek_value_changed (C:\chibifire\godot-3d-transform\editor\plugins\animation_player_editor_plugin.cpp:1033)
[5] AnimationPlayerEditor::_animation_key_editor_seek (C:\chibifire\godot-3d-transform\editor\plugins\animation_player_editor_plugin.cpp:1078)
[6] AnimationPlayerEditor::_animation_selected (C:\chibifire\godot-3d-transform\editor\plugins\animation_player_editor_plugin.cpp:303)
[7] CallableCustomMethodPointer<AnimationPlayerEditor,int>::call (C:\chibifire\godot-3d-transform\core\object\callable_method_pointer.h:97)
[8] Callable::call (C:\chibifire\godot-3d-transform\core\variant\callable.cpp:51)
[9] Object::emit_signal (C:\chibifire\godot-3d-transform\core\object\object.cpp:1100)
[10] Object::emit_signal (C:\chibifire\godot-3d-transform\core\object\object.cpp:1155)
[11] OptionButton::_select (C:\chibifire\godot-3d-transform\scene\gui\option_button.cpp:223)
[12] call_with_variant_args_helper<VisualScript,int,0> (C:\chibifire\godot-3d-transform\core\variant\binder_common.h:227)
[13] CallableCustomMethodPointer<OptionButton,int>::call (C:\chibifire\godot-3d-transform\core\object\callable_method_pointer.h:97)
[14] Callable::call (C:\chibifire\godot-3d-transform\core\variant\callable.cpp:51)
[15] Object::emit_signal (C:\chibifire\godot-3d-transform\core\object\object.cpp:1100)
[16] Object::emit_signal (C:\chibifire\godot-3d-transform\core\object\object.cpp:1155)
[17] PopupMenu::activate_item (C:\chibifire\godot-3d-transform\scene\gui\popup_menu.cpp:1382)
[18] PopupMenu::gui_input (C:\chibifire\godot-3d-transform\scene\gui\popup_menu.cpp:399)
[19] call_with_variant_args<VisualScriptEditor,Ref<InputEvent> const &> (C:\chibifire\godot-3d-transform\core\variant\binder_common.h:336)
[20] Callable::call (C:\chibifire\godot-3d-transform\core\variant\callable.cpp:51)
[21] Object::emit_signal (C:\chibifire\godot-3d-transform\core\object\object.cpp:1100)
[22] Object::emit_signal (C:\chibifire\godot-3d-transform\core\object\object.cpp:1155)
[23] Window::_window_input (C:\chibifire\godot-3d-transform\scene\main\window.cpp:917)
[24] call_with_variant_args<VisualScriptEditor,Ref<InputEvent> const &> (C:\chibifire\godot-3d-transform\core\variant\binder_common.h:336)
[25] Callable::call (C:\chibifire\godot-3d-transform\core\variant\callable.cpp:51)
[26] DisplayServerWindows::_dispatch_input_event (C:\chibifire\godot-3d-transform\platform\windows\display_server_windows.cpp:1850)
[27] Input::_parse_input_event_impl (C:\chibifire\godot-3d-transform\core\input\input.cpp:615)
[28] Input::flush_buffered_events (C:\chibifire\godot-3d-transform\core\input\input.cpp:835)
[29] DisplayServerWindows::process_events (C:\chibifire\godot-3d-transform\platform\windows\display_server_windows.cpp:1575)
[30] OS_Windows::run (C:\chibifire\godot-3d-transform\platform\windows\os_windows.cpp:641)
[31] widechar_main (C:\chibifire\godot-3d-transform\platform\windows\godot_windows.cpp:163)
[32] _main (C:\chibifire\godot-3d-transform\platform\windows\godot_windows.cpp:187)
[33] main (C:\chibifire\godot-3d-transform\platform\windows\godot_windows.cpp:199)
[34] __scrt_common_main_seh (d:\a01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[35] BaseThreadInitThunk
-- END OF BACKTRACE --
================================================================

@fire
Copy link
Member

fire commented Oct 12, 2021

I can't recreate the crash, but the motions in the sample for cubic and for stepwise scale don't play.

* `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.
@reduz reduz force-pushed the remove-animation-transform3d-track branch from 26628fd to ec19ed3 Compare October 12, 2021 23:09
Copy link
Member

@fire fire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test cases work. 🌮

@akien-mga akien-mga merged commit 3e86ca5 into godotengine:master Oct 13, 2021
@akien-mga
Copy link
Member

Thanks!

TrackNodeCache::PropertyAnim pa;
pa.subpath = leftover_path;
pa.object = resource.is_valid() ? (Object *)resource.ptr() : (Object *)child;
pa.special = SP_NONE;
pa.owner = p_anim->node_cache[i];
if (false && p_anim->node_cache[i]->node_2d) {
if (false && node_cache->node_2d) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fire Dead code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants