NLA: Animated Influence/Time Property Sliders Unresponsive #82226

Open
opened 2020-10-29 18:44:13 +01:00 by Wayde Moss · 8 comments
Member

Task: #76549 (NLA Strip influence slider doesn't respond to autokey correctly.)

Source of Problem: (anim_sys.c) nlastrip_evaluate_controls() -> animsys_evaluate_fcurves(): I believe the issue is due to NLA evaluation, where the animated strip properties are evaluated and flushed at the same time the action strip channels are evaluated. Since autokeying doesn't insert a keyframe as the value changes, that's probably why the slider is unresponsive.

Solution: Perhaps we should separate (despgraph-wise) NLA strip animated property evaluation from when we evaluate the NLA system for general animation? Animated strip properties would only be evaluated and flushed on frame change or when the whole frame needs refreshed. Then normal non-NLA animation evaluation will just read the strip properties as is. This would allow the slider be responsive. It also allows the user to change these properties and view their changes without having to keyframe, just like any other Blender animated property.

Potential Problems with Solution: What do we do when strip influence is animated and the user changes it (without keying) then inserts keys on character bones. When we remap the keyframes, should we re-evaluate and use the strip's animated influence? Or should the new keys be remapped using the unkeyed strip time?

Task: #76549 (NLA Strip influence slider doesn't respond to autokey correctly.) **Source of Problem**: (anim_sys.c) *nlastrip_evaluate_controls() -> animsys_evaluate_fcurves()*: I believe the issue is due to NLA evaluation, where the animated strip properties are evaluated and flushed at the same time the action strip channels are evaluated. Since autokeying doesn't insert a keyframe as the value changes, that's probably why the slider is unresponsive. **Solution**: Perhaps we should separate (despgraph-wise) NLA strip animated property evaluation from when we evaluate the NLA system for general animation? Animated strip properties would only be evaluated and flushed on frame change or when the whole frame needs refreshed. Then normal non-NLA animation evaluation will just read the strip properties as is. This would allow the slider be responsive. It also allows the user to change these properties and view their changes without having to keyframe, just like any other Blender animated property. **Potential Problems with Solution:** What do we do when strip influence is animated and the user changes it (without keying) then inserts keys on character bones. When we remap the keyframes, should we re-evaluate and use the strip's animated influence? Or should the new keys be remapped using the unkeyed strip time?
Author
Member

Added subscriber: @wbmoss_dev

Added subscriber: @wbmoss_dev
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Member

Added subscriber: @BClark

Added subscriber: @BClark
Member

" What do we do when strip influence is animated and the user changes it (without keying) then inserts keys on character bones. When we remap the keyframes, should we re-evaluate and use the strip's animated influence? Or should the new keys be remapped using the unkeyed strip time?"

Right now if you have a new action and adjust the influence value it just blends... the influence is just the "action layer" weight, blend.. IF once the action is in a clip form, the influence/"weight" mixing values of that clip no longer evaluate the same as when the action isn't yet in a clip is that accurate, are they handled differently?

Second, if they are different, is it an issue with the NLA evaluation or is the current "animated influence" a workaround for that instead of a design/best user interaction choice?

This is the first time using layered systems I have experienced this limitation/behavior.

To answer your question about the keys..short answer, remap with current value..NOT animated.

Long answer if a user on an animated influence, were to adjust the slider to a different value but NOT change frames causing that value to update back to it's keyed value, and still has a new unkeyed value, then the key frames created should be showing the true value of the slider at that moment in time, not what was animated.

influence animated value = 10, current value is 5, no frame change/time change has happened, I create a key frame, visual the result of those keys should be SHOWN with the Current value, not the animated value... I might see that new result and decide after seeing the result that I want to key frame the influence there but only when I have decided I do want a key there.

" What do we do when strip influence is animated and the user changes it (without keying) then inserts keys on character bones. When we remap the keyframes, should we re-evaluate and use the strip's animated influence? Or should the new keys be remapped using the unkeyed strip time?" Right now if you have a new action and adjust the influence value it just blends... the influence is just the "action layer" weight, blend.. IF once the action is in a clip form, the influence/"weight" mixing values of that clip no longer evaluate the same as when the action isn't yet in a clip is that accurate, are they handled differently? Second, if they are different, is it an issue with the NLA evaluation or is the current "animated influence" a workaround for that instead of a design/best user interaction choice? This is the first time using layered systems I have experienced this limitation/behavior. To answer your question about the keys..short answer, remap with current value..NOT animated. Long answer if a user on an animated influence, were to adjust the slider to a different value but NOT change frames causing that value to update back to it's keyed value, and still has a new unkeyed value, then the key frames created should be showing the true value of the slider at that moment in time, not what was animated. influence animated value = 10, current value is 5, no frame change/time change has happened, I create a key frame, visual the result of those keys should be SHOWN with the Current value, not the animated value... I might see that new result and decide after seeing the result that I want to key frame the influence there but only when I have decided I do want a key there.
Author
Member

I agree to insert keys with the current value, not the animated one.

Right now if you have a new action and adjust the influence value it just blends... the influence is just the "action layer" weight, blend.. IF once the action is in a clip form, the influence/"weight" mixing values of that clip no >longer evaluate the same as when the action isn't yet in a clip is that accurate, are they handled differently?

NLA evaluation always handles influence the same way. The difference is where the effective influence gets it value from. The nonstrip Action always gets its influence from the "Edited Action" nla panel. For strips with "Animated Influence" checkbox ON, they always get theirs from fcurves. If the strip influence has the checkbox OFF, then its forced to a value of one (even if the UI value differs) if BlendIn/Out is zero (it usually is with the workflow where we set Zero Keys to control per-channel blending). Things appear (are?) broken because the UI value isn't always the effective influence, or atleast doesn't always affect the effective influence.

I agree to insert keys with the current value, not the animated one. >Right now if you have a new action and adjust the influence value it just blends... the influence is just the "action layer" weight, blend.. IF once the action is in a clip form, the influence/"weight" mixing values of that clip no >longer evaluate the same as when the action isn't yet in a clip is that accurate, are they handled differently? NLA evaluation always handles influence the same way. The difference is where the effective influence gets it value from. The nonstrip Action always gets its influence from the "Edited Action" nla panel. For strips with "Animated Influence" checkbox ON, they always get theirs from fcurves. If the strip influence has the checkbox OFF, then its forced to a value of one (even if the UI value differs) if BlendIn/Out is zero (it usually is with the workflow where we set Zero Keys to control per-channel blending). Things appear (are?) broken because the UI value isn't always the effective influence, or atleast doesn't always affect the effective influence.
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:36:08 +01:00

I'm sorry to bump this but it's a pretty annoying bug, and it's sad to see it's still around after 4+ years.

Controlling NLA strip time with an F-Curve would be so powerful if it wasn't unresponsive. Right now it's basically unusable.

I'm sorry to bump this but it's a pretty annoying bug, and it's sad to see it's still around after 4+ years. Controlling NLA strip time with an F-Curve would be so powerful if it wasn't unresponsive. Right now it's basically unusable.
Member

@nrupsis want to double check if this is improvable.

Henrique, I get it, it would be good, but it wasn't simple

@nrupsis want to double check if this is improvable. Henrique, I get it, it would be good, but it wasn't simple
Member

@BClark yeah this is a mess. Last time I checked on it (iirc) it's basically a chicken and egg problem when it comes to the dependency graph evaluation. If we think this is a big enough need, I can look into it again.

@BClark yeah this is a mess. Last time I checked on it (iirc) it's basically a chicken and egg problem when it comes to the dependency graph evaluation. If we think this is a big enough need, I can look into it again.
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
4 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#82226
No description provided.