Browse Source

Merge pull request #6764 from TokageItLab/fix-outdated-animation

Update outdated animation documents to synchronize them with latest version Godot
Rémi Verschelde 2 years ago
parent
commit
2db1f830b1
62 changed files with 175 additions and 64 deletions
  1. 8 8
      tutorials/2d/2d_sprite_animation.rst
  2. BIN
      tutorials/2d/img/2d_animation_add_from_spritesheet.png
  3. BIN
      tutorials/2d/img/2d_animation_add_from_spritesheet.webp
  4. BIN
      tutorials/2d/img/2d_animation_play_spritesheet_animation.png
  5. BIN
      tutorials/2d/img/2d_animation_play_spritesheet_animation.webp
  6. BIN
      tutorials/2d/img/2d_animation_spriteframes.png
  7. BIN
      tutorials/2d/img/2d_animation_spriteframes.webp
  8. BIN
      tutorials/2d/img/2d_animation_spriteframes_done.png
  9. BIN
      tutorials/2d/img/2d_animation_spriteframes_done.webp
  10. BIN
      tutorials/2d/img/2d_animation_spritesheet_animation.png
  11. BIN
      tutorials/2d/img/2d_animation_spritesheet_animation.webp
  12. BIN
      tutorials/2d/img/2d_animation_spritesheet_select_rows.png
  13. BIN
      tutorials/2d/img/2d_animation_spritesheet_select_rows.webp
  14. BIN
      tutorials/2d/img/2d_animation_spritesheet_selectframes.png
  15. BIN
      tutorials/2d/img/2d_animation_spritesheet_selectframes.webp
  16. 38 21
      tutorials/animation/animation_track_types.rst
  17. 94 20
      tutorials/animation/animation_tree.rst
  18. BIN
      tutorials/animation/img/3D_transform_track.png
  19. BIN
      tutorials/animation/img/animation_animation_panel.png
  20. BIN
      tutorials/animation/img/animation_animation_panel.webp
  21. BIN
      tutorials/animation/img/animation_animation_panel_overview.png
  22. BIN
      tutorials/animation/img/animation_animation_panel_overview.webp
  23. BIN
      tutorials/animation/img/animation_create_animationplayer.png
  24. BIN
      tutorials/animation/img/animation_create_animationplayer.webp
  25. BIN
      tutorials/animation/img/animation_create_new_animation.png
  26. BIN
      tutorials/animation/img/animation_create_new_animation.webp
  27. BIN
      tutorials/animation/img/animation_keyframe_editor_key.png
  28. BIN
      tutorials/animation/img/animation_keyframe_editor_key.webp
  29. BIN
      tutorials/animation/img/animation_library.webp
  30. BIN
      tutorials/animation/img/animation_library_dialog.webp
  31. BIN
      tutorials/animation/img/animation_player_animation.png
  32. BIN
      tutorials/animation/img/animation_player_animation.webp
  33. BIN
      tutorials/animation/img/animation_properties_keyframe.png
  34. BIN
      tutorials/animation/img/animation_properties_keyframe.webp
  35. BIN
      tutorials/animation/img/animation_track.png
  36. BIN
      tutorials/animation/img/animation_track.webp
  37. BIN
      tutorials/animation/img/animation_track_interpolation.png
  38. BIN
      tutorials/animation/img/animation_track_interpolation.webp
  39. BIN
      tutorials/animation/img/animation_track_loop_modes.png
  40. BIN
      tutorials/animation/img/animation_track_loop_modes.webp
  41. BIN
      tutorials/animation/img/animation_track_rate.png
  42. BIN
      tutorials/animation/img/animation_track_rate.webp
  43. BIN
      tutorials/animation/img/animation_track_settings.png
  44. BIN
      tutorials/animation/img/animation_track_settings.webp
  45. BIN
      tutorials/animation/img/animtree3.png
  46. BIN
      tutorials/animation/img/animtree3.webp
  47. BIN
      tutorials/animation/img/audio_track.png
  48. BIN
      tutorials/animation/img/audio_track.webp
  49. BIN
      tutorials/animation/img/bezier_curve_icon.png
  50. BIN
      tutorials/animation/img/bezier_curve_icon.webp
  51. BIN
      tutorials/animation/img/bezier_curves.png
  52. BIN
      tutorials/animation/img/bezier_curves.webp
  53. BIN
      tutorials/animation/img/blend_mode.webp
  54. BIN
      tutorials/animation/img/manipulator_modes.png
  55. BIN
      tutorials/animation/img/manipulator_modes.webp
  56. BIN
      tutorials/animation/img/node_method_args.png
  57. BIN
      tutorials/animation/img/node_method_args.webp
  58. BIN
      tutorials/animation/img/node_methods.png
  59. BIN
      tutorials/animation/img/node_methods.webp
  60. BIN
      tutorials/animation/img/track_types.png
  61. BIN
      tutorials/animation/img/track_types.webp
  62. 35 15
      tutorials/animation/introduction.rst

+ 8 - 8
tutorials/2d/2d_sprite_animation.rst

@@ -50,13 +50,13 @@ Now select the ``AnimatedSprite2D`` and in its *SpriteFrames* property, select
 Click on the new SpriteFrames resource and you'll see a new panel appear at the
 Click on the new SpriteFrames resource and you'll see a new panel appear at the
 bottom of the editor window:
 bottom of the editor window:
 
 
-.. image:: img/2d_animation_spriteframes.png
+.. image:: img/2d_animation_spriteframes.webp
 
 
 From the FileSystem dock on the left side, drag the 8 individual images into
 From the FileSystem dock on the left side, drag the 8 individual images into
 the center part of the SpriteFrames panel. On the left side, change the name
 the center part of the SpriteFrames panel. On the left side, change the name
 of the animation from "default" to "run".
 of the animation from "default" to "run".
 
 
-.. image:: img/2d_animation_spriteframes_done.png
+.. image:: img/2d_animation_spriteframes_done.webp
 
 
 Back in the Inspector, check the box for the *Playing* property. You should
 Back in the Inspector, check the box for the *Playing* property. You should
 now see the animation playing in the viewport. However, it is a bit slow. To
 now see the animation playing in the viewport. However, it is a bit slow. To
@@ -127,25 +127,25 @@ Set up your scene tree the same way you did previously when using individual ima
 
 
 Click on the new SpriteFrames resource. This time, when the bottom panel appears, select "Add frames from a Sprite Sheet".
 Click on the new SpriteFrames resource. This time, when the bottom panel appears, select "Add frames from a Sprite Sheet".
 
 
-.. image:: img/2d_animation_add_from_spritesheet.png
+.. image:: img/2d_animation_add_from_spritesheet.webp
 
 
 You will be prompted to open a file. Select your sprite sheet.
 You will be prompted to open a file. Select your sprite sheet.
 
 
 A new window will open, showing your sprite sheet. The first thing you will need to do is to change the number of vertical and horizontal images in your sprite sheet. In this sprite sheet, we have four images horizontally and two images vertically.
 A new window will open, showing your sprite sheet. The first thing you will need to do is to change the number of vertical and horizontal images in your sprite sheet. In this sprite sheet, we have four images horizontally and two images vertically.
 
 
-.. image:: img/2d_animation_spritesheet_select_rows.png
+.. image:: img/2d_animation_spritesheet_select_rows.webp
 
 
 Next, select the frames from the sprite sheet that you want to include in your animation. We will select the top four, then click "Add 4 frames" to create the animation.
 Next, select the frames from the sprite sheet that you want to include in your animation. We will select the top four, then click "Add 4 frames" to create the animation.
 
 
-.. image:: img/2d_animation_spritesheet_selectframes.png
+.. image:: img/2d_animation_spritesheet_selectframes.webp
 
 
 You will now see your animation under the list of animations in the bottom panel. Double click on default to change the name of the animation to jump.
 You will now see your animation under the list of animations in the bottom panel. Double click on default to change the name of the animation to jump.
 
 
-.. image:: img/2d_animation_spritesheet_animation.png
+.. image:: img/2d_animation_spritesheet_animation.webp
 
 
-Finally, check Playing on the AnimatedSprite2D in the inspector to see your frog jump!
+Finally, check the play button on the SpriteFrames editor to see your frog jump!
 
 
-.. image:: img/2d_animation_play_spritesheet_animation.png
+.. image:: img/2d_animation_play_spritesheet_animation.webp
 
 
 
 
 Sprite sheet with AnimationPlayer
 Sprite sheet with AnimationPlayer

BIN
tutorials/2d/img/2d_animation_add_from_spritesheet.png


BIN
tutorials/2d/img/2d_animation_add_from_spritesheet.webp


BIN
tutorials/2d/img/2d_animation_play_spritesheet_animation.png


BIN
tutorials/2d/img/2d_animation_play_spritesheet_animation.webp


BIN
tutorials/2d/img/2d_animation_spriteframes.png


BIN
tutorials/2d/img/2d_animation_spriteframes.webp


BIN
tutorials/2d/img/2d_animation_spriteframes_done.png


BIN
tutorials/2d/img/2d_animation_spriteframes_done.webp


BIN
tutorials/2d/img/2d_animation_spritesheet_animation.png


BIN
tutorials/2d/img/2d_animation_spritesheet_animation.webp


BIN
tutorials/2d/img/2d_animation_spritesheet_select_rows.png


BIN
tutorials/2d/img/2d_animation_spritesheet_select_rows.webp


BIN
tutorials/2d/img/2d_animation_spritesheet_selectframes.png


BIN
tutorials/2d/img/2d_animation_spritesheet_selectframes.webp


+ 38 - 21
tutorials/animation/animation_track_types.rst

@@ -13,38 +13,51 @@ player node on top of the default property tracks.
    We assume you already read :ref:`doc_introduction_animation`, which covers
    We assume you already read :ref:`doc_introduction_animation`, which covers
    the basics, including property tracks.
    the basics, including property tracks.
 
 
-.. image:: img/track_types.png
+.. image:: img/track_types.webp
 
 
+Property Track
+--------------
 
 
-3D Transform Track
-------------------
+The most basic track type. See :ref:`doc_introduction_animation`.
+
+Position 3D / Rotation 3D / Scale 3D Track
+------------------------------------------
 
 
-3D transform tracks control the location, rotation, and scale of a 3D object.
+These 3D transform tracks control the location, rotation, and scale of a 3D object.
 They make it easier to animate a 3D object's transform compared to using regular
 They make it easier to animate a 3D object's transform compared to using regular
 property tracks.
 property tracks.
 
 
-.. image:: img/3D_transform_track.png
+It is designed for animations imported from external 3D models and can reduce resource capacity through compression.
+
+Blend Shape Track
+-----------------
+
+A blend shape track is optimized for animating blend shape in :ref:`MeshInstance <class_MeshInstance>`:.
 
 
-Call Method tracks
+It is designed for animations imported from external 3D models and can reduce resource capacity through compression.
+
+Call Method Track
 ------------------
 ------------------
 
 
-Call method tracks allow you to call a function at a precise time from within an
+A call method track allow you to call a function at a precise time from within an
 animation. For example, you can call ``queue_free()`` to delete a node at the
 animation. For example, you can call ``queue_free()`` to delete a node at the
 end of a death animation.
 end of a death animation.
 
 
+.. note:: The events placed on the call method track are not executed when the animation is previewed in the editor for safety.
+
 To create such a track, click "Add Track -> Call Method Track." Then, a window
 To create such a track, click "Add Track -> Call Method Track." Then, a window
 opens and lets you select the node to associate with the track. To call one of
 opens and lets you select the node to associate with the track. To call one of
 the node's methods, right-click the timeline and select "Insert Key". A window
 the node's methods, right-click the timeline and select "Insert Key". A window
 opens with a list of available methods. Double-click one to finish creating the
 opens with a list of available methods. Double-click one to finish creating the
 keyframe.
 keyframe.
 
 
-.. image:: img/node_methods.png
+.. image:: img/node_methods.webp
 
 
 To change the method call or its arguments, click on the key and head to the
 To change the method call or its arguments, click on the key and head to the
 inspector dock. There, you can change the method to call. If you expand the
 inspector dock. There, you can change the method to call. If you expand the
 "Args" section, you will see a list of arguments you can edit.
 "Args" section, you will see a list of arguments you can edit.
 
 
-.. image:: img/node_method_args.png
+.. image:: img/node_method_args.webp
 
 
 Bezier Curve Track
 Bezier Curve Track
 ------------------
 ------------------
@@ -52,27 +65,30 @@ Bezier Curve Track
 A bezier curve track is similar to a property track, except it allows you to
 A bezier curve track is similar to a property track, except it allows you to
 animate a property's value using a bezier curve.
 animate a property's value using a bezier curve.
 
 
+.. note:: Bezier curve track and property track cannot be blended in :ref:`AnimationPlayer <class_AnimationPlayer>` and :ref:`AnimationTree <class_AnimationTree>`.
+
 To create one, click "Add Track -> Bezier Curve Track". As with property tracks,
 To create one, click "Add Track -> Bezier Curve Track". As with property tracks,
 you need to select a node and a property to animate. To open the bezier curve
 you need to select a node and a property to animate. To open the bezier curve
 editor, click the curve icon to the right of the animation track.
 editor, click the curve icon to the right of the animation track.
 
 
-.. image:: img/bezier_curve_icon.png
+.. image:: img/bezier_curve_icon.webp
 
 
-In the editor, keys are represented by white diamonds and the transparent
+In the editor, keys are represented by filled diamonds and the outlined
 diamonds connected to them by a line control curve's shape.
 diamonds connected to them by a line control curve's shape.
 
 
-.. image:: img/bezier_curves.png
+.. image:: img/bezier_curves.webp
 
 
-In the bottom-right of the editor, you can select the manipulator mode:
+In the right click panel of the editor, you can select the handle mode:
 
 
-- Free allows you to orient a manipulator in any direction without affecting the
+- Free: Allows you to orient a manipulator in any direction without affecting the
   other's position.
   other's position.
-- Balanced makes it so manipulators rotate together, but the distance between
+- Linear: Does not allow rotation of the manipulator and draws a linear graph.
+- Balanced: Makes it so manipulators rotate together, but the distance between
   the key and a manipulator is not mirrored.
   the key and a manipulator is not mirrored.
-- Mirror makes the position of one manipulator perfectly mirror the other,
+- Mirrored: Makes the position of one manipulator perfectly mirror the other,
   including their distance to the key.
   including their distance to the key.
 
 
-.. image:: img/manipulator_modes.png
+.. image:: img/manipulator_modes.webp
 
 
 Audio Playback Track
 Audio Playback Track
 --------------------
 --------------------
@@ -86,13 +102,14 @@ To play a sound in your animation, drag and drop an audio file from the file
 system dock onto the animation track. You should see the waveform of your audio
 system dock onto the animation track. You should see the waveform of your audio
 file in the track.
 file in the track.
 
 
-.. image:: img/audio_track.png
+.. image:: img/audio_track.webp
 
 
 To remove a sound from the animation, you can right-click it and select "Delete
 To remove a sound from the animation, you can right-click it and select "Delete
 Key(s)" or click on it and press the :kbd:`Del` key.
 Key(s)" or click on it and press the :kbd:`Del` key.
 
 
-.. note:: If you need to, you can create multiple audio tracks that trigger
-          playback on the same node.
+The blend mode allows you to choose whether or not to adjust the audio volume when blending in the :ref:`AnimationTree <class_AnimationTree>`.
+
+.. image:: img/blend_mode.webp
 
 
 Animation Playback Track
 Animation Playback Track
 ------------------------
 ------------------------
@@ -109,7 +126,7 @@ Then, select the animation player you want to associate with the track.
 To add an animation to the track, right-click on it and insert a key. Select the
 To add an animation to the track, right-click on it and insert a key. Select the
 key you just created to select an animation in the inspector dock.
 key you just created to select an animation in the inspector dock.
 
 
-.. image:: img/animation_player_animation.png
+.. image:: img/animation_player_animation.webp
 
 
 If an animation is already playing and you want to stop it early, you can create
 If an animation is already playing and you want to stop it early, you can create
 a key and have it set to `[STOP]` in the inspector.
 a key and have it set to `[STOP]` in the inspector.

+ 94 - 20
tutorials/animation/animation_tree.rst

@@ -60,7 +60,7 @@ Blend tree
 
 
 An ``AnimationNodeBlendTree`` can contain both root and regular nodes used for blending. Nodes are added to the graph from a menu:
 An ``AnimationNodeBlendTree`` can contain both root and regular nodes used for blending. Nodes are added to the graph from a menu:
 
 
-.. image:: img/animtree3.png
+.. image:: img/animtree3.webp
 
 
 All blend trees contain an ``Output`` node by default, and something has to be connected to it in order for animations to play.
 All blend trees contain an ``Output`` node by default, and something has to be connected to it in order for animations to play.
 
 
@@ -93,33 +93,64 @@ This node will execute a sub-animation and return once it finishes. Blend times
 
 
 .. image:: img/animtree6b.gif
 .. image:: img/animtree6b.gif
 
 
-Seek
-^^^^
+After setting the request and changing the animation playback, the one-shot node automatically clears the request on the next process frame by setting its [code]request[/code] value to [constant ONE_SHOT_REQUEST_NONE].
+
+.. tabs::
+ .. code-tab:: gdscript GDScript
+
+    # Play child animation connected to "shot" port.
+    animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE)
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE
+
+    # Abort child animation connected to "shot" port.
+    animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT)
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT
+
+    # Get current state (read-only).
+    animation_tree.get("parameters/OneShot/active"))
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/OneShot/active"]
+
+ .. code-tab:: csharp
+
+    // Play child animation connected to "shot" port.
+    animationTree.Set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE);
+
+    // Abort child animation connected to "shot" port.
+    animationTree.Set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT);
+
+    // Get current state (read-only).
+    animationTree.Get("parameters/OneShot/active");
+
+TimeSeek
+^^^^^^^^
 
 
 This node can be used to cause a seek command to happen to any sub-children of the animation graph. Use this node type to play an ``Animation`` from the start or a certain playback position inside the ``AnimationNodeBlendTree``.
 This node can be used to cause a seek command to happen to any sub-children of the animation graph. Use this node type to play an ``Animation`` from the start or a certain playback position inside the ``AnimationNodeBlendTree``.
 
 
-After setting the time and changing the animation playback, the seek node automatically goes into sleep mode on the next process frame by setting its ``seek_position`` value to ``-1.0``.
+After setting the time and changing the animation playback, the seek node automatically goes into sleep mode on the next process frame by setting its ``seek_request`` value to ``-1.0``.
 
 
 .. tabs::
 .. tabs::
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
 
 
     # Play child animation from the start.
     # Play child animation from the start.
-    anim_tree.set("parameters/Seek/seek_position", 0.0)
+    animation_tree.set("parameters/TimeSeek/seek_request", 0.0)
     # Alternative syntax (same result as above).
     # Alternative syntax (same result as above).
-    anim_tree["parameters/Seek/seek_position"] = 0.0
+    animation_tree["parameters/TimeSeek/seek_request"] = 0.0
 
 
     # Play child animation from 12 second timestamp.
     # Play child animation from 12 second timestamp.
-    anim_tree.set("parameters/Seek/seek_position", 12.0)
+    animation_tree.set("parameters/TimeSeek/seek_request", 12.0)
     # Alternative syntax (same result as above).
     # Alternative syntax (same result as above).
-    anim_tree["parameters/Seek/seek_position"] = 12.0
+    animation_tree["parameters/TimeSeek/seek_request"] = 12.0
 
 
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
     // Play child animation from the start.
     // Play child animation from the start.
-    animTree.Set("parameters/Seek/seek_position", 0.0);
+    animationTree.Set("parameters/TimeSeek/seek_request", 0.0);
 
 
     // Play child animation from 12 second timestamp.
     // Play child animation from 12 second timestamp.
-    animTree.Set("parameters/Seek/seek_position", 12.0);
+    animationTree.Set("parameters/TimeSeek/seek_request", 12.0);
 
 
 TimeScale
 TimeScale
 ^^^^^^^^^
 ^^^^^^^^^
@@ -130,6 +161,36 @@ Transition
 ^^^^^^^^^^
 ^^^^^^^^^^
 
 
 Very simple state machine (when you don't want to cope with a ``StateMachine`` node). Animations can be connected to the outputs and transition times can be specified.
 Very simple state machine (when you don't want to cope with a ``StateMachine`` node). Animations can be connected to the outputs and transition times can be specified.
+After setting the request and changing the animation playback, the transition node automatically clears the request on the next process frame by setting its [code]transition_request[/code] value to empty.
+
+.. tabs::
+ .. code-tab:: gdscript GDScript
+
+    # Play child animation connected to "state_2" port.
+    animation_tree.set("parameters/Transition/transition_request", "state_2")
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/Transition/transition_request"] = "state_2"
+
+    # Get current state name (read-only).
+    animation_tree.get("parameters/Transition/current_state")
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/Transition/current_state"]
+
+    # Get current state index (read-only).
+    animation_tree.get("parameters/Transition/current_index"))
+    # Alternative syntax (same result as above).
+    animation_tree["parameters/Transition/current_index"]
+
+ .. code-tab:: csharp
+
+    // Play child animation connected to "state_2" port.
+    animationTree.Set("parameters/Transition/transition_request", "state_2");
+
+    // Get current state name (read-only).
+    animationTree.Get("parameters/Transition/current_state");
+
+    // Get current state index (read-only).
+    animationTree.Get("parameters/Transition/current_index");
 
 
 BlendSpace2D
 BlendSpace2D
 ^^^^^^^^^^^^
 ^^^^^^^^^^^^
@@ -247,11 +308,27 @@ Afterwards, the actual motion can be retrieved via the :ref:`AnimationTree <clas
 .. tabs::
 .. tabs::
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
 
 
-    anim_tree.get_root_motion_transform()
+    # Get the motion delta.
+    animation_tree.get_root_motion_position()
+    animation_tree.get_root_motion_rotation()
+    animation_tree.get_root_motion_scale()
+
+    # Get the actual blended value of the animation.
+    animation_tree.get_root_motion_position_accumulator()
+    animation_tree.get_root_motion_rotation_accumulator()
+    animation_tree.get_root_motion_scale_accumulator()
 
 
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
-    animTree.GetRootMotionTransform();
+    // Get the motion delta.
+    animationTree.GetRootMotionPosition();
+    animationTree.GetRootMotionRotation();
+    animationTree.GetRootMotionScale();
+
+    // Get the actual blended value of the animation.
+    animationTree.GetRootMotionPositionAccumulator();
+    animationTree.GetRootMotionRotationAccumulator();
+    animationTree.GetRootMotionScaleAccumulator();
 
 
 This can be fed to functions such as :ref:`CharacterBody3D.move_and_slide <class_CharacterBody3D_method_move_and_slide>` to control the character movement.
 This can be fed to functions such as :ref:`CharacterBody3D.move_and_slide <class_CharacterBody3D_method_move_and_slide>` to control the character movement.
 
 
@@ -260,7 +337,6 @@ character and animations (this node is disabled by default during the game).
 
 
 .. image:: img/animtree15.gif
 .. image:: img/animtree15.gif
 
 
-
 Controlling from code
 Controlling from code
 ---------------------
 ---------------------
 
 
@@ -288,14 +364,13 @@ Which allows setting them or reading them:
 .. tabs::
 .. tabs::
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
 
 
-    anim_tree.set("parameters/eye_blend/blend_amount", 1.0)
+    animation_tree.set("parameters/eye_blend/blend_amount", 1.0)
     # Simpler alternative form:
     # Simpler alternative form:
-    anim_tree["parameters/eye_blend/blend_amount"] = 1.0
+    animation_tree["parameters/eye_blend/blend_amount"] = 1.0
 
 
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
-    animTree.Set("parameters/eye_blend/blend_amount", 1.0);
-
+    animationTree.Set("parameters/eye_blend/blend_amount", 1.0);
 
 
 State machine travel
 State machine travel
 --------------------
 --------------------
@@ -308,15 +383,14 @@ to the destination state.
 To use the travel ability, you should first retrieve the :ref:`AnimationNodeStateMachinePlayback <class_AnimationNodeStateMachinePlayback>`
 To use the travel ability, you should first retrieve the :ref:`AnimationNodeStateMachinePlayback <class_AnimationNodeStateMachinePlayback>`
 object from the ``AnimationTree`` node (it is exported as a property).
 object from the ``AnimationTree`` node (it is exported as a property).
 
 
-
 .. tabs::
 .. tabs::
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
 
 
-    var state_machine = anim_tree["parameters/playback"]
+    var state_machine = animation_tree["parameters/playback"]
 
 
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
-    AnimationNodeStateMachinePlayback stateMachine = (AnimationNodeStateMachinePlayback)animTree.Get("parameters/playback");
+    AnimationNodeStateMachinePlayback stateMachine = (AnimationNodeStateMachinePlayback)animationTree.Get("parameters/playback");
 
 
 Once retrieved, it can be used by calling one of the many functions it offers:
 Once retrieved, it can be used by calling one of the many functions it offers:
 
 

BIN
tutorials/animation/img/3D_transform_track.png


BIN
tutorials/animation/img/animation_animation_panel.png


BIN
tutorials/animation/img/animation_animation_panel.webp


BIN
tutorials/animation/img/animation_animation_panel_overview.png


BIN
tutorials/animation/img/animation_animation_panel_overview.webp


BIN
tutorials/animation/img/animation_create_animationplayer.png


BIN
tutorials/animation/img/animation_create_animationplayer.webp


BIN
tutorials/animation/img/animation_create_new_animation.png


BIN
tutorials/animation/img/animation_create_new_animation.webp


BIN
tutorials/animation/img/animation_keyframe_editor_key.png


BIN
tutorials/animation/img/animation_keyframe_editor_key.webp


BIN
tutorials/animation/img/animation_library.webp


BIN
tutorials/animation/img/animation_library_dialog.webp


BIN
tutorials/animation/img/animation_player_animation.png


BIN
tutorials/animation/img/animation_player_animation.webp


BIN
tutorials/animation/img/animation_properties_keyframe.png


BIN
tutorials/animation/img/animation_properties_keyframe.webp


BIN
tutorials/animation/img/animation_track.png


BIN
tutorials/animation/img/animation_track.webp


BIN
tutorials/animation/img/animation_track_interpolation.png


BIN
tutorials/animation/img/animation_track_interpolation.webp


BIN
tutorials/animation/img/animation_track_loop_modes.png


BIN
tutorials/animation/img/animation_track_loop_modes.webp


BIN
tutorials/animation/img/animation_track_rate.png


BIN
tutorials/animation/img/animation_track_rate.webp


BIN
tutorials/animation/img/animation_track_settings.png


BIN
tutorials/animation/img/animation_track_settings.webp


BIN
tutorials/animation/img/animtree3.png


BIN
tutorials/animation/img/animtree3.webp


BIN
tutorials/animation/img/audio_track.png


BIN
tutorials/animation/img/audio_track.webp


BIN
tutorials/animation/img/bezier_curve_icon.png


BIN
tutorials/animation/img/bezier_curve_icon.webp


BIN
tutorials/animation/img/bezier_curves.png


BIN
tutorials/animation/img/bezier_curves.webp


BIN
tutorials/animation/img/blend_mode.webp


BIN
tutorials/animation/img/manipulator_modes.png


BIN
tutorials/animation/img/manipulator_modes.webp


BIN
tutorials/animation/img/node_method_args.png


BIN
tutorials/animation/img/node_method_args.webp


BIN
tutorials/animation/img/node_methods.png


BIN
tutorials/animation/img/node_methods.webp


BIN
tutorials/animation/img/track_types.png


BIN
tutorials/animation/img/track_types.webp


+ 35 - 15
tutorials/animation/introduction.rst

@@ -27,7 +27,7 @@ The AnimationPlayer node type is the data container for your animations.
 One AnimationPlayer node can hold multiple animations, which can
 One AnimationPlayer node can hold multiple animations, which can
 automatically transition to one another.
 automatically transition to one another.
 
 
-.. figure:: img/animation_create_animationplayer.png
+.. figure:: img/animation_create_animationplayer.webp
    :alt: The AnimationPlayer node
    :alt: The AnimationPlayer node
 
 
    The AnimationPlayer node
    The AnimationPlayer node
@@ -35,14 +35,14 @@ automatically transition to one another.
 After you create an AnimationPlayer node, click on it to
 After you create an AnimationPlayer node, click on it to
 open the Animation Panel at the bottom of the viewport.
 open the Animation Panel at the bottom of the viewport.
 
 
-.. figure:: img/animation_animation_panel.png
+.. figure:: img/animation_animation_panel.webp
    :alt: The animation panel position
    :alt: The animation panel position
 
 
    The animation panel position
    The animation panel position
 
 
 The animation panel consists of four parts:
 The animation panel consists of four parts:
 
 
-.. figure:: img/animation_animation_panel_overview.png
+.. figure:: img/animation_animation_panel_overview.webp
    :alt: The animation panel
    :alt: The animation panel
 
 
    The animation panel
    The animation panel
@@ -128,15 +128,35 @@ The sprite holds an image texture. For this tutorial, select the Sprite2D node,
 click Texture in the Inspector, and then click Load. Select the default Godot
 click Texture in the Inspector, and then click Load. Select the default Godot
 icon for the sprite's texture.
 icon for the sprite's texture.
 
 
+Adding an animation
+~~~~~~~~~~~~~~~~~~~
+
 Select the AnimationPlayer node and click the "Animation" button in the
 Select the AnimationPlayer node and click the "Animation" button in the
 animation editor. From the list, select "New" (|Add Animation|) to add a new
 animation editor. From the list, select "New" (|Add Animation|) to add a new
 animation. Enter a name for the animation in the dialog box.
 animation. Enter a name for the animation in the dialog box.
 
 
-.. figure:: img/animation_create_new_animation.png
+.. figure:: img/animation_create_new_animation.webp
    :alt: Add a new animation
    :alt: Add a new animation
 
 
    Add a new animation
    Add a new animation
 
 
+Manage an animation libraries
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For reusability, the animation is registered in a list in the animation library resource. If you add an animation to AnimationPlayer without specifying any particular settings, the animation will be registered in the [Global] animation library that AnimationPlayer has by default.
+
+.. figure:: img/animation_library.webp
+   :alt: Manage animations
+
+   Manage animations
+
+If there are multiple animation libraries and you try to add an animation, a dialog box will appear with options.
+
+.. figure:: img/animation_library_dialog.webp
+   :alt: Add a new animation with library option
+
+   Add a new animation with library option
+
 Adding a track
 Adding a track
 ~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~
 
 
@@ -160,7 +180,7 @@ create it for us. Click **Create**.
 Godot will create a new track and insert our first keyframe at the beginning of
 Godot will create a new track and insert our first keyframe at the beginning of
 the timeline:
 the timeline:
 
 
-.. figure:: img/animation_track.png
+.. figure:: img/animation_track.webp
    :alt: The sprite track
    :alt: The sprite track
 
 
    The sprite track
    The sprite track
@@ -223,7 +243,7 @@ Track settings
 Each track has a settings panel at the end, where you can set its update
 Each track has a settings panel at the end, where you can set its update
 mode, track interpolation, and loop mode.
 mode, track interpolation, and loop mode.
 
 
-.. figure:: img/animation_track_settings.png
+.. figure:: img/animation_track_settings.webp
    :alt: Track settings
    :alt: Track settings
 
 
    Track settings
    Track settings
@@ -233,17 +253,13 @@ values. This can be:
 
 
 -  **Continuous:** Update the property on each frame
 -  **Continuous:** Update the property on each frame
 -  **Discrete:** Only update the property on keyframes
 -  **Discrete:** Only update the property on keyframes
--  **Trigger:** Only update the property on keyframes or triggers.
-   Triggers are a type of keyframe used by the
-   ``current_animation`` property of a :ref:`class_AnimationPlayer`,
-   and Animation Playback tracks.
 -  **Capture:** if the first keyframe's time is greater than ``0.0``, the
 -  **Capture:** if the first keyframe's time is greater than ``0.0``, the
    current value of the property will be remembered and
    current value of the property will be remembered and
    will be blended with the first animation key. For example, you
    will be blended with the first animation key. For example, you
    could use the Capture mode to move a node that's located anywhere
    could use the Capture mode to move a node that's located anywhere
    to a specific location.
    to a specific location.
 
 
-.. figure:: img/animation_track_rate.png
+.. figure:: img/animation_track_rate.webp
    :alt: Track mode
    :alt: Track mode
 
 
    Track mode
    Track mode
@@ -259,8 +275,10 @@ keyframes. These interpolation modes are supported:
    the two keyframes
    the two keyframes
 -  Cubic: Set the value based on a cubic function calculation between
 -  Cubic: Set the value based on a cubic function calculation between
    the two keyframes
    the two keyframes
+-  Linear Angle (Only appears in rotation property): Linear mode with shortest path rotation
+-  Cubic Angle (Only appears in rotation property): Cubic mode with shortest path rotation
 
 
-.. figure:: img/animation_track_interpolation.png
+.. figure:: img/animation_track_interpolation.webp
    :alt: Track interpolation
    :alt: Track interpolation
 
 
    Track interpolation
    Track interpolation
@@ -273,7 +291,7 @@ pace, resulting in a more robotic effect.
 Godot supports two loop modes, which affect the animation when it's set to
 Godot supports two loop modes, which affect the animation when it's set to
 loop:
 loop:
 
 
-.. figure:: img/animation_track_loop_modes.png
+.. figure:: img/animation_track_loop_modes.webp
    :alt: Loop modes
    :alt: Loop modes
 
 
    Loop modes
    Loop modes
@@ -296,7 +314,7 @@ display a small keyframe button in the *Inspector* for each of the sprite's
 properties. Click on one of these buttons to add a track and keyframe to
 properties. Click on one of these buttons to add a track and keyframe to
 the current animation.
 the current animation.
 
 
-.. figure:: img/animation_properties_keyframe.png
+.. figure:: img/animation_properties_keyframe.webp
    :alt: Keyframes for other properties
    :alt: Keyframes for other properties
 
 
    Keyframes for other properties
    Keyframes for other properties
@@ -307,7 +325,7 @@ Edit keyframes
 You can click on a keyframe in the animation timeline to display and
 You can click on a keyframe in the animation timeline to display and
 edit its value in the *Inspector*.
 edit its value in the *Inspector*.
 
 
-.. figure:: img/animation_keyframe_editor_key.png
+.. figure:: img/animation_keyframe_editor_key.webp
    :alt: Keyframe editor editing a key
    :alt: Keyframe editor editing a key
 
 
    Keyframe editor editing a key
    Keyframe editor editing a key
@@ -347,3 +365,5 @@ When adding tracks on new animations, the editor will ask you to automatically
 create a RESET track when using the keyframe icon next to a property in the inspector.
 create a RESET track when using the keyframe icon next to a property in the inspector.
 This does not apply on tracks created with Godot versions prior to 3.4,
 This does not apply on tracks created with Godot versions prior to 3.4,
 as the animation reset track feature was added in 3.4.
 as the animation reset track feature was added in 3.4.
+
+.. note:: RESET tracks is also used as a reference value for blending. See also `For better blending <../tutorials/animation/animation_tree.html#for-better-blending>`__.