From BlenderWiki

Jump to: navigation, search

Blender Animation system refresh project

Updated with latest info, as of july 25.

Armature editing

Armature primitives

Done:

Dropped the bad sticky-modal armature drawing mode. Armature extrusions can be as easy as clicking points in other editmodes, by using ctrl+click.


Todo:

In some applications it is called "auto rigging" but seems just to be preset armatures to quickly setup characters. Being able to not only add default "rigs" but also to link that to a selection (like add spine, add arm, hand etc) is very useful.

Edit Mode / Pose Mode

Done:

  • selection of bones in EditMode
  • made drawing of EditMode compliant with rest of Blender (re-using theme colors)
  • Pose Mode now is non-modal, meaning it is now a state any Object can be in. Selecting Bones or other Objects is accessible without mode switches
  • Editing in 3d window instead of buttons: like make parent, clear parent, set IK, clear IK, clear constraint


Todo:

We already have naming conventions for mirroring (left/right) this should also be a 'mirror mode' for any transform action.

Smarter Bones

Done:

Bones can incorporate much more information than it does now.

  • Pose Mode draws more clear info on constraints/action/IK
  • B-bones allow subdivision, with interpolated 'swivel' or 'twist' from one Bone to another
  • B-bones also allow to make curved Bones, for spines or tentacles


IK and FK

Done:

  • disconnected (in code, not UI) IK solving from constraint solving.


Todo (Partially done in the google summer code tree, worked on by Brecht):

  • Bones allow to set degrees of freedom for a joint with its parent bone.
  • IK allows tree structures
  • Incorporate default deformation volumes (ellipsiod?) to mimize manual vertex group editing (which can still work on top of this). We could use 2 volumes, with an inner volume defining 100% deforming, and outer volume the falloff.
  • Bone attachments (actually joints, currently called mistakingly "IK") should allow any offset from the actual bone tip or base, also for IK

We should open sufficient hooks in the API here for dynamic based IK as well. Including full-armature level IK (propagating onto entire body).

Drawing modes

Done:

  • Drawing mode 'sticks' for xray
  • Drawing modes support wire solid drawing
  • Drawing mode 'b-bones' for display of segmented bones and allowing to create a rig resembling the actual character
  • Clear indication in bones whether actions work on it, constraints or IK


Todo:

  • Action and NLA editing also should be visual & possible in the 3d window. Ideas are using "ghost keys" (as current Ipo Keys) and drawing path trajectories.
  • Switching active Actions in 3d window should be possible too.

Action and NLA windows

Todo:

These need a full cleanup of code, to allow much easier access for new development and integrate better with general Blender workflow standards. The list of missing features here is just too long!

Current idea is to allow Actions to include any Ipo curve, also for vertex keys, lamp ipos, and so on. Actions could be selected in NLA, and become editable/active that way. NLA has to become more flexible, with grouping/collapsing, etc.

Data structures

Done!

Check http://www.blender.org/cms/How_Armatures_work.634.0.html

Design of Armature/Bones, Vertex groups, Actions and NLA data in Blender has quite some shortcomings which prevent both proper integration in Blender, as future expansion. One of biggest issues is that current design (hierarchical bones data) also involved that evaluating any armature part (like bone) requires a recursive traversal of the entire hierarchy. That makes armatures editing and playback incredible slow... Part of the recode will be design of new structures... which might mean it cannot be solved with automatic SDNA conversion alone, but will require a 'version patch' to convert, dropping upward compatibility.

Forum links with cool proposals

Harkyman's notes

Additional UI and useability notes by Harkyman

Vertex Keys

To do (evaluate):

Editing vertex keys can become much simpler by allowing display (and definition) of keys with individual Objects, much like how Maya does this.

Much wanted also is having "driven keys", where the actual key position is linked to a certain other value, for example the angles between 2 bones. (Actually any value should become "driven", but that's another issue?)

Transform Handlers

Done!

On selection (or click drag) visual handlers (translate/rotate/scale widgets) help a lot in exact posing and evaluating parts of a character. This would be one of the benefits of the current transform() re-factoring project.

Dependency graph

Done!

We will need an advanced dependency solver on all levels of armature editing. If we can clearly sort this out, editing can become a lot faster.

Display Lists

Mostly done: (DerivedMesh project)

One of the antique cumbersome parts in Blender. Recalculating such lists on animating also creates far too much cpu overhead. Armatures don't allow to deform multiple linked Meshes even. Methods used in Display Lists (including features such as 'hidden line' display), as do rules for how they depend on Objects have to be reviewed completely.

Deformation Modifier Stacks

Done!

Also with the new Soft-Body feature added, we need much better control over what the exact order (and again dependency) is of all deformation features.