Blender development todo list -- Animation System #55365

Closed
opened 2018-06-07 12:53:08 +02:00 by Philipp Oeser · 4 comments
Member

NOTE: this is a direct dump of https://wiki.blender.org/index.php/Dev:Source/Development/Todo/Animation (without cherrypicking the [still] valid items)

Armature

  • Separate and Join tools should move animdata around too (using BKE_animdata_separate_by_basepath), see report: #31966
  • B-bones (beziers) still use old code that keeps Z axis up, which causes twisting in cases. the solution as used for curve-deform could be copied here as well. #26090
  • B-bones handling of rotations sometimes is wrong (hard to fix, maybe same/related issue as the one above, see #39491, #41678).
  • Armature editmode undo/redo issue: since armature edits sync with Pose all the time, a delete/undo command will still not retrieve all bone group, constraint and driver infos in pose-bones. #28350
  • Skeleton Sketching does not correctly compute bone envelope sizes, resulting in near/effectively zero but non-zero size values. #34541
  • Flip Names removes Bone numbers #34282
  • Better handle of Pose transforms when applying Object-level transforms to data (#41699)?
  • The Dual Quaternions algorithm behind the "Preserve Volume" function (Armature Modifier) needs an update (#43188) - [http://rodolphe-vaillant.fr/?e=59 Paper]

Rigging

  • Copy Menu - the future of tools like this is currently unclear. Certainly for rigging though, they are often the only useful way to do mass changes.
  • Proxy Objects (armature, group): the system works, but has limits. It can only proxy once (not duplicates), motion paths don't draw for it either (#26256). The feature was added in 2007 but never further upgraded or improved.
  • Proxy Bones: there's no or incorrect syncing of bone transform limits. #32116
  • IK solver does not handle situations where you want only stretch when needed, would need to be implemented explicitly (report #32174)
  • Warning: if you use "Automatic weighting" (Laplacian "bone heat") you need to ensure the normals are correct, so don't use negative scaled models.
  • X-mirror for Armature editmode changes roll values on Transform, but with ESC it doesn't restore these rolls.
  • Setups with "Maintain Volume" modifier fail for some Bone rotations (work around included) #31975
  • Can't undo hiding the bone #38911
  • Bone '''Inherit Scale''' could be made to work with negative values #40506
  • Automatic Weights are slow on high-density meshes #53494

Constraints

  • Constraints involving rotations - in particular, childof, transform, copy rotation - with influence < 1 are known to behave weirdly due to limitations with the underlying math. In particular, matrix decomposition issues mean that rotations are only guaranteed to be clamped to lie with +/- 180 degrees (causing issues with gears and other setups where the magnitude+direction of rotation matters), and negative scale factors cannot actually be individually identified with any accuracy. These are well known limitations of the current system, which are non-trivial and currently intractable problems. (e.g. #40671, #37623, #40873, and many many others before them)

  • PyConstraints - these are quite high on the priority list to restore, but are still waiting on a few technical issues to be resolved still

  • Transform Constraint functions quite limited. Postponed to fix. #27286

  • Note: the "Child of" constraint functions best if the bone itself is not parented.

  • Bug report about "Child of" and "transform" constraints failing #29100

  • "Apply visual transform" fails with IK constraint. #27743

  • Mirror tool (Object mode) doesn't work for Child-of constraints always #32248

  • Pivot Constraint is broken currently, doesn't function at all. e.g. #32963

  • Copy Transforms constraint jumps when changing influence (especially when shear is involved) #34532

  • Maintain volume constraint behaves wrong ({{GitCommit|48079)

  • Parenting object with constraint causes tansform ({{GitCommit|45531)

Dependency Graph

The 2.5 spec "animate everything" works, but what's missing is a clean dependency solver to ensure anything you relate gets displayed in real time on changing properties or while posing/animating. Here we collect known issues to solve later.

  • Driver example #26734 #35863
  • B-Bone ease driver doesn't update well #28312
  • Constraint with vertex group target on subsurf mesh not working #29059
  • New dependency graph for all datablocks (Specially for all kind of material and texture datablocks, ie: Stucci parameters). #20956, #23426, blender/blender-addons#23639, #22698, #24562, #91015, custom props 3 #32495, custom props 4 blender/blender-addons#28286
  • Bones and the object dependency graph?
  • Drivers using object data (e.g. lamp distance) do not update on changes immediately (#27424)
  • Image Sequence Not Updating in 3D Viewport when it's properties are driven with a driver (#30514)
  • Wonderful complex dependency of Cloth with Duplication and NLA #29838
  • Dependency graph and layer switching error (#27032, #27032)
  • Group duplicators + deform, error related to drawing modes and layers. #24774
  • Object has modifier dependency on an object inside a linked group. #26724
  • Cloth sim inside a linked group updates badly (pointcache issue too). #27287
  • Object uses a constraint dependency to an object inside a linked group. #27694
  • Updates with custom properties very slow: #31647
  • Proxy: needs to be created with group-instance on location where it starts - to make pointcaches work. #32944
  • Multiple duplications of group, 1 proxy error: #31891
  • Two scenes, in two windows, with partial shared data - bad updating. #33560
  • Viewport dupligroup evaluated in original location, render dupligroup in dupli transformed location gives difference between viewport and render (#33591, #33595)
  • Instances linking to group that link to group with animated characters doesn't work. #34025
  • Dupligroup with Array modifier but control object not in group. Undefined result. #35562
  • Dupliframes on armature - armature cannot be posed once keyframes exist.#35929
  • Lack of refresh on layer visiblity change #37262
  • Changing texture doesn't refresh deform modifier #39717
  • Drivers using own transform channels are not reliable #50066

Animation System

Notes:

  • When constructing data paths, only use the "" form for strings. Even though Python supports both interchangably, we only use the "" form for strings used for names. Using the ' ' form instead may lead to unexpected evaluation results.
  • Properties for GLSL shaders are not animated during anim playback, they are compiled for speed.
  • Driver test cases (should be in regression): #24012
  • Opening 2.4x files with objects with shared Actions results in missing animations.
  • Unable to bake actions for multiple selected objects #38308

Todo:

  • Frame-mapping (map to, old) is still half implemented. Candidate to be removed?
  • Remove animation data from objects, when all their animation is deleted.
  • Non-relative vertex keys aren't really usable currently, see #22431
  • Animation 'overrides', or some kind of functionality to keep recently changed (but already keyframed) values from changing on scene updates would be nice to have, see #26019.
  • Support for passing string/pointer values into scripted expressions using Driver Variables as containers for this blender/blender-addons#26306
  • Animation playback: the way how the timer manages 'current frame' is not well implemented. Error for example happens when using redo-operator on playback. Needs revision.
  • Animating collections (like object layers): per-element curves might apply incorrect because of restrictions for overall collection, #29883
  • An easy way to clear Custom and rig UI Proprieties from the selected PoseBone, setting up the default values - like Alt+R for Rotation. Alt+C looks to be a good hotkey to clear Custom Proprieties from PoseBones
  • Mirroring Bone Pose working for Bone Custom Proprieties and Custom UI Proprieties
  • Duplicate objects could check all RNA paths, and fix ID names in it for new names. #31161 #36626
  • Changes such as selecting/renaming groups in anim editors don't affect bones. This was never meant to work, since "Group channels != Bone channels" (even though when dealing with bones, the default behavior is to group together bone fcurves to make them easier to find). Anyways, for usability, it would be nice to eventually get this sync working again. But, "Not-A-Bug-For-The-Tracker (TM)"!. Examples: #35798
  • NLA Strips need "cycle offset" for the case where a strip gets split in the middle of a repeat. However, cannot implement this without a thorough unit test set for this code #27503
  • NLA influence animation has to be done without EditMode on strips. Inside EditMode doesn't work yet (was meant for animating time).
  • Drivers duplication won't preserve targeted objects #39079
  • FCurve easing could use normal of handles #39916
  • Undo re-orders dope sheet items which have cyclic dependencies #38491.
  • Editing keyframes in Graph Editor currently does not force motion paths to get recalculated. #42181
  • "Separate" shouldn't result in two curves that share one action #36999
  • Existing FCurve interpolation methods are not really good for quaternions #45473
NOTE: this is a direct dump of https://wiki.blender.org/index.php/Dev:Source/Development/Todo/Animation (without cherrypicking the [still] valid items) ### Armature - [ ] Separate <s>and Join</s> tools should move animdata around too (using BKE_animdata_separate_by_basepath), see report: #31966 - [ ] B-bones (beziers) still use old code that keeps Z axis up, which causes twisting in cases. the solution as used for curve-deform could be copied here as well. #26090 - [ ] B-bones handling of rotations sometimes is wrong (hard to fix, maybe same/related issue as the one above, see #39491, #41678). - [ ] Armature editmode undo/redo issue: since armature edits sync with Pose all the time, a delete/undo command will still not retrieve all bone group, constraint and driver infos in pose-bones. #28350 - [ ] Skeleton Sketching does not correctly compute bone envelope sizes, resulting in near/effectively zero but non-zero size values. #34541 - [ ] Flip Names removes Bone numbers #34282 - [ ] Better handle of Pose transforms when applying Object-level transforms to data (#41699)? - [ ] The Dual Quaternions algorithm behind the "Preserve Volume" function (Armature Modifier) needs an update (#43188) - [http://rodolphe-vaillant.fr/?e=59 Paper] ### Rigging - [ ] Copy Menu - the future of tools like this is currently unclear. Certainly for rigging though, they are often the only useful way to do mass changes. - [ ] Proxy Objects (armature, group): the system works, but has limits. It can only proxy once (not duplicates), motion paths don't draw for it either (#26256). The feature was added in 2007 but never further upgraded or improved. - [ ] Proxy Bones: there's no or incorrect syncing of bone transform limits. #32116 - [ ] IK solver does not handle situations where you want only stretch when needed, would need to be implemented explicitly (report #32174) - [ ] Warning: if you use "Automatic weighting" (Laplacian "bone heat") you need to ensure the normals are correct, so don't use negative scaled models. - [ ] X-mirror for Armature editmode changes roll values on Transform, but with ESC it doesn't restore these rolls. - [ ] Setups with "Maintain Volume" modifier fail for some Bone rotations (work around included) #31975 - [ ] Can't undo hiding the bone #38911 - [ ] Bone '''Inherit Scale''' could be made to work with negative values #40506 - [ ] Automatic Weights are slow on high-density meshes #53494 ### Constraints - [ ] Constraints involving rotations - in particular, childof, transform, copy rotation - with influence < 1 are known to behave weirdly due to limitations with the underlying math. In particular, matrix decomposition issues mean that rotations are only guaranteed to be clamped to lie with +/- 180 degrees (causing issues with gears and other setups where the magnitude+direction of rotation matters), and negative scale factors cannot actually be individually identified with any accuracy. These are well known limitations of the current system, which are non-trivial and currently intractable problems. (e.g. #40671, #37623, #40873, and many many others before them) - [ ] PyConstraints - these are quite high on the priority list to restore, but are still waiting on a few technical issues to be resolved still - [ ] Transform Constraint functions quite limited. Postponed to fix. #27286 - [ ] Note: the "Child of" constraint functions best if the bone itself is not parented. - [ ] Bug report about "Child of" and "transform" constraints failing #29100 - [ ] "Apply visual transform" fails with IK constraint. #27743 - [ ] Mirror tool (Object mode) doesn't work for Child-of constraints always #32248 - [ ] Pivot Constraint is broken currently, doesn't function at all. e.g. #32963 - [ ] Copy Transforms constraint jumps when changing influence (especially when shear is involved) #34532 - [ ] Maintain volume constraint behaves wrong ({{GitCommit|48079) - [ ] Parenting object with constraint causes tansform ({{GitCommit|45531) ### Dependency Graph The 2.5 spec "animate everything" works, but what's missing is a clean dependency solver to ensure anything you relate gets displayed in real time on changing properties or while posing/animating. Here we collect known issues to solve later. - [ ] Driver example #26734 #35863 - [ ] B-Bone ease driver doesn't update well #28312 - [ ] Constraint with vertex group target on subsurf mesh not working #29059 - [ ] New dependency graph for all datablocks (Specially for all kind of material and texture datablocks, ie: Stucci parameters). #20956, #23426, blender/blender-addons#23639, #22698, #24562, #91015, custom props 3 #32495, custom props 4 blender/blender-addons#28286 - [ ] Bones and the object dependency graph? - [ ] Drivers using object data (e.g. lamp distance) do not update on changes immediately (#27424) - [ ] Image Sequence Not Updating in 3D Viewport when it's properties are driven with a driver (#30514) - [ ] Wonderful complex dependency of Cloth with Duplication and NLA #29838 - [ ] Dependency graph and layer switching error (#27032, #27032) - [ ] Group duplicators + deform, error related to drawing modes and layers. #24774 - [ ] Object has modifier dependency on an object inside a linked group. #26724 - [ ] Cloth sim inside a linked group updates badly (pointcache issue too). #27287 - [ ] Object uses a constraint dependency to an object inside a linked group. #27694 - [ ] Updates with custom properties very slow: #31647 - [ ] Proxy: needs to be created with group-instance on location where it starts - to make pointcaches work. #32944 - [ ] Multiple duplications of group, 1 proxy error: #31891 - [ ] Two scenes, in two windows, with partial shared data - bad updating. #33560 - [ ] Viewport dupligroup evaluated in original location, render dupligroup in dupli transformed location gives difference between viewport and render (#33591, #33595) - [ ] Instances linking to group that link to group with animated characters doesn't work. #34025 - [ ] Dupligroup with Array modifier but control object not in group. Undefined result. #35562 - [ ] Dupliframes on armature - armature cannot be posed once keyframes exist.#35929 - [ ] Lack of refresh on layer visiblity change #37262 - [ ] Changing texture doesn't refresh deform modifier #39717 - [ ] Drivers using own transform channels are not reliable #50066 ### Animation System Notes: - [ ] When constructing data paths, only use the "" form for strings. Even though Python supports both interchangably, we only use the <code>""</code> form for strings used for names. Using the <code>' '</code> form instead may lead to unexpected evaluation results. - [ ] Properties for GLSL shaders are not animated during anim playback, they are compiled for speed. - [ ] Driver test cases (should be in regression): #24012 - [ ] Opening 2.4x files with objects with shared Actions results in missing animations. - [ ] Unable to bake actions for multiple selected objects #38308 Todo: - [ ] Frame-mapping (map to, old) is still half implemented. Candidate to be removed? - [ ] <s>Remove animation data from objects, when all their animation is deleted.</s> - [ ] Non-relative vertex keys aren't really usable currently, see #22431 - [ ] Animation 'overrides', or some kind of functionality to keep recently changed (but already keyframed) values from changing on scene updates would be nice to have, see #26019. - [ ] Support for passing string/pointer values into scripted expressions using Driver Variables as containers for this blender/blender-addons#26306 - [ ] Animation playback: the way how the timer manages 'current frame' is not well implemented. Error for example happens when using redo-operator on playback. Needs revision. - [ ] Animating collections (like object layers): per-element curves might apply incorrect because of restrictions for overall collection, #29883 - [ ] An easy way to clear Custom and rig UI Proprieties from the selected PoseBone, setting up the default values - like Alt+R for Rotation. Alt+C looks to be a good hotkey to clear Custom Proprieties from PoseBones - [ ] Mirroring Bone Pose working for Bone Custom Proprieties and Custom UI Proprieties - [ ] Duplicate objects could check all RNA paths, and fix ID names in it for new names. #31161 #36626 - [ ] Changes such as selecting/renaming groups in anim editors don't affect bones. This was never meant to work, since "Group channels != Bone channels" (even though when dealing with bones, the default behavior is to group together bone fcurves to make them easier to find). Anyways, for usability, it would be nice to eventually get this sync working again. But, "Not-A-Bug-For-The-Tracker (TM)"!. Examples: #35798 - [ ] NLA Strips need "cycle offset" for the case where a strip gets split in the middle of a repeat. However, cannot implement this without a thorough unit test set for this code #27503 - [ ] NLA influence animation has to be done without EditMode on strips. Inside EditMode doesn't work yet (was meant for animating time). - [ ] Drivers duplication won't preserve targeted objects #39079 - [ ] FCurve easing could use normal of handles #39916 - [ ] Undo re-orders dope sheet items which have cyclic dependencies #38491. - [ ] Editing keyframes in Graph Editor currently does not force motion paths to get recalculated. #42181 - [ ] "Separate" shouldn't result in two curves that share one action #36999 - [ ] Existing FCurve interpolation methods are not really good for quaternions #45473
Author
Member

Added subscribers: @lichtwerk, @ideasman42

Added subscribers: @lichtwerk, @ideasman42

Added subscriber: @christian-clavet

Added subscriber: @christian-clavet
Member

Added subscriber: @BClark

Added subscriber: @BClark
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:36:43 +01:00
Sybren A. Stüvel added this to the Animation & Rigging project 2023-02-14 15:33:06 +01:00

Closing this task, as it is out of date (almost all linked issues are closed, but weren't checked off on this list) and the tasks that don't have an issue linked to them are very vague. It's a mixture of 'notes' and 'things to remember' without being clear about who has to do the remembering.

Closing this task, as it is out of date (almost all linked issues are closed, but weren't checked off on this list) and the tasks that don't have an issue linked to them are very vague. It's a mixture of 'notes' and 'things to remember' without being clear about who has to do the remembering.
Blender Bot added
Status
Archived
and removed
Status
Confirmed
labels 2023-03-30 15:42:32 +02:00
Sybren A. Stüvel removed this from the Animation & Rigging project 2023-03-30 15:42:37 +02:00
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
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#55365
No description provided.