Pose In-Betweening doesn't work correctly with animation layers #61099

Closed
opened 2019-02-01 16:24:35 +01:00 by Ovionis · 15 comments

Windows 7 64bit

Blender 2.80 #552b2287db86
(2019-02-01 01:46)

When using any of the pose Tween operators (Shift/Ctrl/Alt + E) / (Pose > In-Betweens)
The operator only considers the final absolute keyframe, and not what type of action it is or the layered result.

_Combine_Animation_Tweening.blend
If you open this file and try to run any of the in-between operators, you will see the bone jump far from where it is, to the center, based on it's curves' exact keyframe values.


(Also, would it be difficult to also add object In-Betweening? Unlike bones, if you animate with objects, your only option ever is/was to manually insert keys in the graph editor)

Windows 7 64bit Blender 2.80 #552b2287db86 (2019-02-01 01:46) When using any of the pose Tween operators (Shift/Ctrl/Alt + E) / (Pose > In-Betweens) The operator only considers the final absolute keyframe, and not what type of action it is or the layered result. [_Combine_Animation_Tweening.blend](https://archive.blender.org/developer/F6476437/_Combine_Animation_Tweening.blend) If you open this file and try to run any of the in-between operators, you will see the bone jump far from where it is, to the center, based on it's curves' exact keyframe values.  (Also, would it be difficult to also add object In-Betweening? Unlike bones, if you animate with objects, your only option ever is/was to manually insert keys in the graph editor)
Author

Added subscriber: @Phigon

Added subscriber: @Phigon

Added subscribers: @JoshuaLeung, @ZedDB

Added subscribers: @JoshuaLeung, @ZedDB
Joshua Leung was assigned by Sebastian Parborg 2019-02-01 17:33:08 +01:00

@JoshuaLeung unsure if this counts an actual bug or not. So I'll leave it up to you to decide.

@JoshuaLeung unsure if this counts an actual bug or not. So I'll leave it up to you to decide.
Member

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
Member

Closing as "TODO" - a known limitation that the tools were not intended to support, but could in future when we have the time to do so.

These tools were not intended to take the NLA stack into account. Furthermore, layering/additive behaviour in the NLA has only been properly supported recently, is beyond the scope of the current intended uses of this tool.

Closing as "TODO" - a known limitation that the tools were not intended to support, but could in future when we have the time to do so. These tools were not intended to take the NLA stack into account. Furthermore, layering/additive behaviour in the NLA has only been properly supported recently, is beyond the scope of the current intended uses of this tool.
Author

Added subscriber: @angavrilov

Added subscriber: @angavrilov
Author

This comment was removed by @Phigon

*This comment was removed by @Phigon*
Member

Added subscriber: @BClark

Added subscriber: @BClark
Member

With the ability to evaluate the entire stack in tweak mode now, we need to retest this and see if it now works or can be made to work as it would be great to have the ability to use it with animation layer work.

With the ability to evaluate the entire stack in tweak mode now, we need to retest this and see if it now works or can be made to work as it would be great to have the ability to use it with animation layer work.
Member

Yeah it would be nice if some of the tools could work or be updated to deal with the "visual location or blend to the final result pose and not just the key values but I am guessing it is much harder to do.

Yeah it would be nice if some of the tools could work or be updated to deal with the "visual location or blend to the final result pose and not just the key values but I am guessing it is much harder to do.
Author

In #61099#1393465, @BClark wrote:
Yeah it would be nice if some of the tools could work or be updated to deal with the "visual location or blend to the final result pose and not just the key values but I am guessing it is much harder to do.

No, it is not.
I wanted to work with layers, so I went into the code and mimicked it in Python to create a breakdowner that does both and work with objects.
Took me around one or three days, and most of the time/effort was spent backtracking through the code functions, with me not knowing much of anything about C++. And also me trying to understand certain code that I actually didn't need and before I just started copying it verbatim. Like the code I was trying to copy was the specific math that the Combine layer uses with quaternions, and then I realized I mostly only needed the code from the tween operator(s).

Rather than keep trying to understand and mimic the layer math, I just go to the frames, resulting in my version being technically slower (not noticeably). Getting the layered value is functionally the same as getting the keyframe value. The only difference is there isn't any code available to do so in the Python API whereas there is such code internally (AFAIK). After getting the layer value, plugging it into the existing operator is simple.

Or another explanation:
The operators take 2-3 frame values (left, middle, right) and perform a generic slide between them.
All you have to do to make this work with layers is add their values in, instead of just using the current action.

Note: I believe my version was in sync with the internal one before the visual slider was added. I don't know if I could do that in Python as well and I haven't bothered to check, as it already does what I need it to do.....also I didn't release it. My point is that getting it done wouldn't be very difficult for someone that knew the language and wanted to get it done.

> In #61099#1393465, @BClark wrote: > Yeah it would be nice if some of the tools could work or be updated to deal with the "visual location or blend to the final result pose and not just the key values but I am guessing it is much harder to do. No, it is not. I wanted to work with layers, so I went into the code and mimicked it in Python to create a breakdowner that does both and work with objects. Took me around one or three days, and most of the time/effort was spent backtracking through the code functions, with me not knowing much of anything about C++. And also me trying to understand certain code that I actually didn't need and before I just started copying it verbatim. Like the code I was trying to copy was the specific math that the Combine layer uses with quaternions, and then I realized I mostly only needed the code from the tween operator(s). Rather than keep trying to understand and mimic the layer math, I just go to the frames, resulting in my version being technically slower (not noticeably). Getting the layered value is functionally the same as getting the keyframe value. The only difference is there isn't any code available to do so in the Python API whereas there is such code internally (AFAIK). After getting the layer value, plugging it into the existing operator is simple. **Or another explanation:** The operators take 2-3 frame values (left, middle, right) and perform a generic slide between them. All you have to do to make this work with layers is add their values in, instead of just using the current action. Note: I believe my version was in sync with the internal one before the visual slider was added. I don't know if I could do that in Python as well and I haven't bothered to check, as it already does what I need it to do.....also I didn't release it. My point is that getting it done wouldn't be very difficult for someone that knew the language and wanted to get it done.

Added subscriber: @ab_stanton

Added subscriber: @ab_stanton

In #61099#1393742, @Phigon wrote:

In #61099#1393465, @BClark wrote:
Yeah it would be nice if some of the tools could work or be updated to deal with the "visual location or blend to the final result pose and not just the key values but I am guessing it is much harder to do.

No, it is not.
I wanted to work with layers, so I went into the code and mimicked it in Python to create a breakdowner that does both and work with objects.
Took me around one or three days, and most of the time/effort was spent backtracking through the code functions, with me not knowing much of anything about C++. And also me trying to understand certain code that I actually didn't need and before I just started copying it verbatim. Like the code I was trying to copy was the specific math that the Combine layer uses with quaternions, and then I realized I mostly only needed the code from the tween operator(s).

Rather than keep trying to understand and mimic the layer math, I just go to the frames, resulting in my version being technically slower (not noticeably). Getting the layered value is functionally the same as getting the keyframe value. The only difference is there isn't any code available to do so in the Python API whereas there is such code internally (AFAIK). After getting the layer value, plugging it into the existing operator is simple.

Or another explanation:
The operators take 2-3 frame values (left, middle, right) and perform a generic slide between them.
All you have to do to make this work with layers is add their values in, instead of just using the current action.

Note: I believe my version was in sync with the internal one before the visual slider was added. I don't know if I could do that in Python as well and I haven't bothered to check, as it already does what I need it to do.....also I didn't release it. My point is that getting it done wouldn't be very difficult for someone that knew the language and wanted to get it done.

So your operator still uses the keyframes to left and right, but adds in all the layers too? So this won't work if there are no keyframes? I wonder if it should work with no keyframes

> In #61099#1393742, @Phigon wrote: >> In #61099#1393465, @BClark wrote: >> Yeah it would be nice if some of the tools could work or be updated to deal with the "visual location or blend to the final result pose and not just the key values but I am guessing it is much harder to do. > > No, it is not. > I wanted to work with layers, so I went into the code and mimicked it in Python to create a breakdowner that does both and work with objects. > Took me around one or three days, and most of the time/effort was spent backtracking through the code functions, with me not knowing much of anything about C++. And also me trying to understand certain code that I actually didn't need and before I just started copying it verbatim. Like the code I was trying to copy was the specific math that the Combine layer uses with quaternions, and then I realized I mostly only needed the code from the tween operator(s). > > Rather than keep trying to understand and mimic the layer math, I just go to the frames, resulting in my version being technically slower (not noticeably). Getting the layered value is functionally the same as getting the keyframe value. The only difference is there isn't any code available to do so in the Python API whereas there is such code internally (AFAIK). After getting the layer value, plugging it into the existing operator is simple. > > **Or another explanation:** > The operators take 2-3 frame values (left, middle, right) and perform a generic slide between them. > All you have to do to make this work with layers is add their values in, instead of just using the current action. > > Note: I believe my version was in sync with the internal one before the visual slider was added. I don't know if I could do that in Python as well and I haven't bothered to check, as it already does what I need it to do.....also I didn't release it. My point is that getting it done wouldn't be very difficult for someone that knew the language and wanted to get it done. So your operator still uses the keyframes to left and right, but adds in all the layers too? So this won't work if there are no keyframes? I wonder if it should work with no keyframes
Author

In #61099#1394009, @ab_stanton wrote:
So your operator still uses the keyframes to left and right, but adds in all the layers too? So this won't work if there are no keyframes? I wonder if it should work with no keyframes

The only limit to what goes into the 2-3 values is whatever the developer wants to go there. Where those values come from are wherever the developer wanted them to come from.
The internal developer wanted them to come from the current action's keyframes, and I wanted it to come from the current action's keyframes and the layers below.
If I (or a C++ developer internally) wanted, we could make the poses that are blended be completely random.

> In #61099#1394009, @ab_stanton wrote: > So your operator still uses the keyframes to left and right, but adds in all the layers too? So this won't work if there are no keyframes? I wonder if it should work with no keyframes The only limit to what goes into the 2-3 values is whatever the developer wants to go there. Where those values come from are wherever the developer wanted them to come from. The internal developer wanted them to come from the current action's keyframes, and I wanted it to come from the current action's keyframes and the layers below. If I (or a C++ developer internally) wanted, we could make the poses that are blended be completely random.
Member

" My point is that getting it done wouldn't be very difficult for someone that knew the language and wanted to get it done."
Great thanks for the update, good to hear.

" My point is that getting it done wouldn't be very difficult for someone that knew the language and wanted to get it done." Great thanks for the update, good to hear.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
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#61099
No description provided.