AnimAll does not keyframe bezier curve handle type #94846

Closed
opened 2022-01-12 10:46:24 +01:00 by Rainer · 10 comments

System Information
Operating system: Arch Linux
Graphics card: Nvidia

Blender Version
Broken: 3.0.0
Worked: did not find working version

Short description of error
When I edit Bezier curves and animate them via AnimAll (change Handles to go from "curvy" to "edgy") Blender does not adjust curve according to handle positions (Curve stays "edgy" all the time).
After I touch a handle (move it slightly) the curve is correctly animated.

I am quite new to blender (Only ~1 year experience) and mostly used it for video editing until now, so It might also be a user-error as this is my first Animation. However in this case I would be really happy If you push my understanding in the right direction on how to animate curves/text correctly.

Exact steps for others to reproduce the error
See attached Image-Sequence for detailed problem description.
But in essence:

  • Create Bezier Curve (shich should be curved to begin with)
  • Go to Edit Mode
  • Add Keyframe via AnimAll (for all points)
  • Change all point's handle types to Vector (to get a straight line)
  • Create Keyframe
  • Scroll through timeline and see that line now always is straight line, even though handles move correctly (also for first keyframe, where line was definitely curved)
  • Touch a handle slightly by moving it a little bit
  • Observe that now suddenly everything works as intended: Animation transitions from curved to straight line

curve_anim.jpg

**System Information** Operating system: Arch Linux Graphics card: Nvidia **Blender Version** Broken: 3.0.0 Worked: did not find working version **Short description of error** When I edit Bezier curves and animate them via AnimAll (change Handles to go from "curvy" to "edgy") Blender does not adjust curve according to handle positions (Curve stays "edgy" all the time). After I touch a handle (move it slightly) the curve is correctly animated. I am quite new to blender (Only ~1 year experience) and mostly used it for video editing until now, so It might also be a user-error as this is my first Animation. However in this case I would be really happy If you push my understanding in the right direction on how to animate curves/text correctly. **Exact steps for others to reproduce the error** See attached Image-Sequence for detailed problem description. But in essence: - Create Bezier Curve (shich should be curved to begin with) - Go to Edit Mode - Add Keyframe via AnimAll (for all points) - Change all point's handle types to Vector (to get a straight line) - Create Keyframe - Scroll through timeline and see that line now always is straight line, even though handles move correctly (also for first keyframe, where line was definitely curved) - Touch a handle slightly by moving it a little bit - Observe that now suddenly everything works as intended: Animation transitions from curved to straight line ![curve_anim.jpg](https://archive.blender.org/developer/F12802060/curve_anim.jpg)
Author

Added subscriber: @Rainer

Added subscriber: @Rainer
Rainer changed title from Bezier curve handles not recognized when animated via AnimAll to Bezier curve handles animated correctly, but curve is not adjusted accordingly when animated via AnimAll 2022-01-12 10:50:11 +01:00
Member

Added subscribers: @pioverfour, @BrendonMurphy, @lichtwerk

Added subscribers: @pioverfour, @BrendonMurphy, @lichtwerk
Member

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'
Member

This is just not supported in the Addon.
It would be a simple addition, just wondering if we should clutter with this Handle Type fcurves by default (might potentionally add a lot of keyframes which many users would not rely on) of if this should be an option?

P2720: AnimAll support curve handle type



diff --git a/animation_animall.py b/animation_animall.py
index 141c032a..a1dd7470 100644
--- a/animation_animall.py
+++ b/animation_animall.py
@@ -266,7 +266,9 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                                 if animall_properties.key_points:
                                     insert_key(CV, 'co', group="Spline %s CV %s" % (s_i, v_i))
                                     insert_key(CV, 'handle_left', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'handle_left_type', group="Spline %s CV %s" % (s_i, v_i))
                                     insert_key(CV, 'handle_right', group="Spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'handle_right_type', group="Spline %s CV %s" % (s_i, v_i))
 
                                 if animall_properties.key_radius:
                                     insert_key(CV, 'radius', group="Spline %s CV %s" % (s_i, v_i))
@@ -455,7 +457,7 @@ class ANIM_OT_delete_keyframe_animall(Operator):
                         for CV in obj.active_shape_key.data:
                             delete_key(CV, 'co')
                             delete_key(CV, 'handle_left')
-                            delete_key(CV, 'handle_right')
+                            delete_key(CV, 'handle_right') #
 
                 for spline in data.splines:
                     if spline.type == 'BEZIER':
@@ -467,7 +469,9 @@ class ANIM_OT_delete_keyframe_animall(Operator):
                                 if animall_properties.key_points:
                                     delete_key(CV, 'co')
                                     delete_key(CV, 'handle_left')
+                                    delete_key(CV, 'handle_left_type')
                                     delete_key(CV, 'handle_right')
+                                    delete_key(CV, 'handle_right_type')
                                 if animall_properties.key_radius:
                                     delete_key(CV, 'radius')
                                 if animall_properties.key_tilt:

CC @BrendonMurphy
CC @pioverfour

This is just not supported in the Addon. It would be a simple addition, just wondering if we should clutter with this Handle Type fcurves by default (might potentionally add a lot of keyframes which many users would not rely on) of if this should be an option? [P2720: AnimAll support curve handle type](https://archive.blender.org/developer/P2720.txt) ``` diff --git a/animation_animall.py b/animation_animall.py index 141c032a..a1dd7470 100644 --- a/animation_animall.py +++ b/animation_animall.py @@ -266,7 +266,9 @@ class ANIM_OT_insert_keyframe_animall(Operator): if animall_properties.key_points: insert_key(CV, 'co', group="Spline %s CV %s" % (s_i, v_i)) insert_key(CV, 'handle_left', group="Spline %s CV %s" % (s_i, v_i)) + insert_key(CV, 'handle_left_type', group="Spline %s CV %s" % (s_i, v_i)) insert_key(CV, 'handle_right', group="Spline %s CV %s" % (s_i, v_i)) + insert_key(CV, 'handle_right_type', group="Spline %s CV %s" % (s_i, v_i)) if animall_properties.key_radius: insert_key(CV, 'radius', group="Spline %s CV %s" % (s_i, v_i)) @@ -455,7 +457,7 @@ class ANIM_OT_delete_keyframe_animall(Operator): for CV in obj.active_shape_key.data: delete_key(CV, 'co') delete_key(CV, 'handle_left') - delete_key(CV, 'handle_right') + delete_key(CV, 'handle_right') # for spline in data.splines: if spline.type == 'BEZIER': @@ -467,7 +469,9 @@ class ANIM_OT_delete_keyframe_animall(Operator): if animall_properties.key_points: delete_key(CV, 'co') delete_key(CV, 'handle_left') + delete_key(CV, 'handle_left_type') delete_key(CV, 'handle_right') + delete_key(CV, 'handle_right_type') if animall_properties.key_radius: delete_key(CV, 'radius') if animall_properties.key_tilt: ``` CC @BrendonMurphy CC @pioverfour
Philipp Oeser changed title from Bezier curve handles animated correctly, but curve is not adjusted accordingly when animated via AnimAll to AnimAll does not keyframe bezier curve handle type 2022-01-12 13:07:11 +01:00
Author

Ok, thanks. I understand now that HandleType is a separate property of curve points.

As a Workaround and maybe permanent solution for my current project I switched to Grease-Pencil animation which supports animating pseudeo Bezier Curves and also gives more precise Keyframe interpolation, which was sufficient.
However real Bezier-Curve animation (maybe also via Grease-Pencil) would be a nice feature for the future.

Ok, thanks. I understand now that HandleType is a separate property of curve points. As a Workaround and maybe permanent solution for my current project I switched to Grease-Pencil animation which supports animating pseudeo Bezier Curves and also gives more precise Keyframe interpolation, which was sufficient. However real Bezier-Curve animation (maybe also via Grease-Pencil) would be a nice feature for the future.
Member

Hello @Rainer, @lichtwerk is totally right on this, the add-on can be modified to account for this property.

As you said, I reckon it would clutter the animation data if we key this by default, so in my opinion it would be better as an option, along the lines of:

diff --git a/animation_animall.py b/animation_animall.py
index 141c032a..811cb2c9 100644
--- a/animation_animall.py
+++ b/animation_animall.py
@@ -93,6 +93,11 @@ class AnimallProperties(bpy.types.PropertyGroup):
         description="Insert keyframes on point locations",
         default=False
     )
+    key_handle_type: BoolProperty(
+        name="Handle Types",
+        description="Insert keyframes on Bezier point types",
+        default=False
+    )
     key_radius: BoolProperty(
         name="Radius",
         description="Insert keyframes on point radius (Shrink/Fatten)",
@@ -181,6 +186,8 @@ class VIEW3D_PT_animall(Panel):
             row = col.row()
             row.prop(animall_properties, "key_radius")
             row.prop(animall_properties, "key_tilt")
+            row = col.row()
+            row.prop(animall_properties, "key_handle_type")
 
         elif obj.type == 'SURFACE':
             row.prop(animall_properties, "key_points")
@@ -271,6 +278,10 @@ class ANIM_OT_insert_keyframe_animall(Operator):
                                 if animall_properties.key_radius:
                                     insert_key(CV, 'radius', group="Spline %s CV %s" % (s_i, v_i))
 
+                                if animall_properties.key_handle_type:
+                                    insert_key(CV, 'handle_left_type', group="spline %s CV %s" % (s_i, v_i))
+                                    insert_key(CV, 'handle_right_type', group="spline %s CV %s" % (s_i, v_i))
+
                                 if animall_properties.key_tilt:
                                     insert_key(CV, 'tilt', group="Spline %s CV %s" % (s_i, v_i))
 
@@ -468,6 +479,9 @@ class ANIM_OT_delete_keyframe_animall(Operator):
                                     delete_key(CV, 'co')
                                     delete_key(CV, 'handle_left')
                                     delete_key(CV, 'handle_right')
+                                if animall_properties.key_handle_type:
+                                    delete_key(CV, 'handle_left_type')
+                                    delete_key(CV, 'handle_right_type')
                                 if animall_properties.key_radius:
                                     delete_key(CV, 'radius')
                                 if animall_properties.key_tilt:

image.png

I’ll commit it on the week-end if I find the time. Meanwhile, you can test the change by installing this version if you can’t apply the patch.

animation_animall.py

Hello @Rainer, @lichtwerk is totally right on this, the add-on can be modified to account for this property. As you said, I reckon it would clutter the animation data if we key this by default, so in my opinion it would be better as an option, along the lines of: ``` diff --git a/animation_animall.py b/animation_animall.py index 141c032a..811cb2c9 100644 --- a/animation_animall.py +++ b/animation_animall.py @@ -93,6 +93,11 @@ class AnimallProperties(bpy.types.PropertyGroup): description="Insert keyframes on point locations", default=False ) + key_handle_type: BoolProperty( + name="Handle Types", + description="Insert keyframes on Bezier point types", + default=False + ) key_radius: BoolProperty( name="Radius", description="Insert keyframes on point radius (Shrink/Fatten)", @@ -181,6 +186,8 @@ class VIEW3D_PT_animall(Panel): row = col.row() row.prop(animall_properties, "key_radius") row.prop(animall_properties, "key_tilt") + row = col.row() + row.prop(animall_properties, "key_handle_type") elif obj.type == 'SURFACE': row.prop(animall_properties, "key_points") @@ -271,6 +278,10 @@ class ANIM_OT_insert_keyframe_animall(Operator): if animall_properties.key_radius: insert_key(CV, 'radius', group="Spline %s CV %s" % (s_i, v_i)) + if animall_properties.key_handle_type: + insert_key(CV, 'handle_left_type', group="spline %s CV %s" % (s_i, v_i)) + insert_key(CV, 'handle_right_type', group="spline %s CV %s" % (s_i, v_i)) + if animall_properties.key_tilt: insert_key(CV, 'tilt', group="Spline %s CV %s" % (s_i, v_i)) @@ -468,6 +479,9 @@ class ANIM_OT_delete_keyframe_animall(Operator): delete_key(CV, 'co') delete_key(CV, 'handle_left') delete_key(CV, 'handle_right') + if animall_properties.key_handle_type: + delete_key(CV, 'handle_left_type') + delete_key(CV, 'handle_right_type') if animall_properties.key_radius: delete_key(CV, 'radius') if animall_properties.key_tilt: ``` ![image.png](https://archive.blender.org/developer/F12802861/image.png) I’ll commit it on the week-end if I find the time. Meanwhile, you can test the change by installing this version if you can’t apply the patch. [animation_animall.py](https://archive.blender.org/developer/F12802868/animation_animall.py)

This issue was referenced by d4fcda5935

This issue was referenced by d4fcda5935c5c561e77aadd32a32500cf280dcaa
Member

Changed status from 'Needs Developer To Reproduce' to: 'Resolved'

Changed status from 'Needs Developer To Reproduce' to: 'Resolved'
Damien Picard self-assigned this 2022-01-16 23:10:56 +01:00
Member

Added subscriber: @zanqdo

Added subscriber: @zanqdo
Member

This is actually a bug in Blender 3.0+

Reported and will probably roll back the animate handle types option since that would introduce undesired jumps when animating!

https://developer.blender.org/T98965

This is actually a bug in Blender 3.0+ Reported and will probably roll back the animate handle types option since that would introduce undesired jumps when animating! https://developer.blender.org/T98965
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#94846
No description provided.