From BlenderWiki

Jump to: navigation, search

Blender Asset Management & Static Override Planning

Those two projects have tight links, since static overrides are related to linked data-blocks, and hence will affect internal management of assets. To summarize current status :

  • Asset management core API is essentially done, demo/101 Amber asset engine is working on basic level and being actively fleshed out (to be made fully usable by user as soon as possible).
  • Static override is in primitive stage still, basics are working but advanced/complex cases are not yet tackled. Priority on this project is lower than on Amber/assets engine. Getting rid of proxies would be nice, but current code has had a lot of fixes in past years and is now working relatively OK, so we are not in hurry on that side.

Tasks

Asset management - core code

  • Polishing and fixing upcoming issues.
    • Core code (C API) is essentially done and working on basic level/tests.
  • Static override and relations between linked asset IDs (aka replacing proxies).
    • This is rather low priority, since it only becomes critical once we actually nuke proxies. It needs some thinking still anyway, not yet sure how to properly handle the problem.
  • Design UI/UX for editing linked assets variant/revision/view. [design team]
    • This is probably not that much of importance for Amber, but for a pipeline asset engine (in studio/production situation) it will be mandatory. Would love to do that in Outliner in the end, but that editor needs a very serious and deep rewrite first, working on it is nightmare-ish currently. So as a first step, I’d just add relevant controls in the ID panels of the Properties editor. Priority of this task depends on studio needs for asset management really.
  • Drag and drop for link/append (assets and regular datablocks) from the filebrowser
    • This has been added for objects in 3D view already, needs much more monkey work though to be complete.

Asset management - Amber

  • Enable Amber engine by default with Blender
    • Amber is aimed at being a simple, easy to use asset engine.
    • It features storage of assets on the local filesystem, in dedicated directories and a tagging system to sort/search them.
  • Preview feature
    • It may read them from .blend files, or generates and stores them in some kind of database alongside the assets’ .blend files.
  • Polish the editing functionality
    • So that user can easily add/remove/retag/… assets in repositories.
  • Implement 101 UI/UX
    • Amber is also part of the 101 project, some UI/UX design would be needed here.
  • Sub-level hierarchy (variant revisions and views) [future]

Asset management - Studio

  • Assess with Francesco Siddi the requirements for the studio, and the scope and design of a new engine focusing advanced users.
  • Implement another asset engine to integrate in Blender Animation studio pipeline ?
    • For Agent 327 a few ad hoc add-ons were required to help building sets and manage assets. The system was very fragile. This should be addressed as part of Blender for upcoming productions.
    • Ideally this should be tackled after Amber is reasonably finished. That said the upcoming open movie may require this tackled in parallel to Amber.
    • This will also be a demonstrator of ‘advanced’ production asset engine possibilities, and to show that the asset management is more than Amber.
    • This will be tackled at the basic level - it’s py code wrapping around existing (svn) management… so basic features should be relatively easy to add. A full support would be another topic and ideally implemented by someone working at the studio.

Static Override

  • Allow multiple instances of the same group with different animations.
    • This has being a limitation of the proxy system since its creation. It’s a good way to show the strength of the new system.
    • To support this for any datablock is a different issue than for the rest of the cases since group linking (and related proxy) is handled currently in a horribly confusing way, so this will likely be a nice can of worms to sort of correctly.
  • Support multiple instances of the same object with different datablocks
  • Finish porting all rna properties to the new static override system [monkey work]
    • This will allow local changes of linked data, where in the past people had to use auto-run scripts to override linked data settings. This is the kind of cumbersome hack the new system will prevent.
    • Overridable properties have to be set in RNA code currently. It’s not yet clear whether in the end we’ll have them enabled by default (and hence have to clear that flag when needed) or not, but either way it will need a lot of monkey work to go through whole RNA struct definitions.
  • Support advanced cases (e.g., insertion/deletion in collection properties, to be able to add or remove a modifier or constraint to/from an overridden object)
    • Basic concepts and code are done and working, including differential overrides (for locations, rotations, scales…), and ability to provide “default” set of overriden properties from “library” datablock, and a way to prevent overriding of some props as well.
  • Investigate whether to support override of animation themselves
    • While mesh data (vertex, uv, …) won’t be overridable, users may want to allow editing (overriding) of fcurves in an override of a linked animation datablock.

Rough time budget estimative

Best case scenario estimations, expect them to change.

  • Polishing known issues/current technical debt (in core, C code) - 5 days
  • Polish the editing functionality - 5 days
  • Preview feature - 3 days
  • Enable Amber engine by default with Blender - 1 day
  • MERGE both branches in 2.8 - work shall continue there then.
  • Assess with Francesco Siddi the requirements for the studio, and the scope and design of a new engine focusing advanced users. - around BConf
  • Drag and drop for link/append (assets and regular datablocks) from the filebrowser - 5 days
  • Implement UI/UX (101 target mostly) - 10 days
  • Static override and relations between linked asset IDs (aka replacing proxies) - 10 days
  • Allow multiple instances of the same group with different animations. - 3 days
  • Support multiple instances of the same object with different datablocks - 3 days
  • Finish porting all rna properties to the new static override system [monkey work] - 5 days
  • Implement another asset engine to integrate in Blender Animation studio pipeline - 20 days
  • Support advanced override cases (e.g., insertion/deletion in collection properties, to be able to add or remove a modifier or constraint to/from an overridden object) - 5 days
  • Implement support override of animation themselves (if decided on it) - 5 days

Planning

The initial priority is to polish and merge the basic static ID overriding as it is. Then work in the asset manager, and the Amber engine to merge them in 2.8. By then the UI team will be asked to help wrapping the usability and interface aspects of it.

Next the focus will be to tackle the initial tasks of static overrides. Afterwards other developers can help with porting all rna properties to the new system.

The static override tasks are more unpredictable, and depending on how they go we may need to revisit planning after they are finished, before the following.

Finally the attention will go back to use the Blender Animation Studio as a use case to implement an advanced asset engine for their upcoming production. Once this is out of the way the remaining advanced tasks for Static Override are wrapped up.

October

  • Week 3
    • done
        Planning - 1day
    • done
        Start polishing the editing functionality - 1d
  • Week 4
    • done
        More polishing the editing functionality for BConf demo - 3d
    • done
        Blender Conference
  • Week 5
    • in progress Inprogress50.jpg 50%
        Define advanced engine scope and core design - 2d
    • in progress Inprogress50.jpg 50%
        Finish polishing the editing functionality - 2d

November

  • Week 1
    • in progress Inprogress50.jpg 50%
        Preview feature - 3d
    • to do
        Enable Amber engine by default with Blender - 1d
  • Week 2
    • in progress Inprogress50.jpg 50%
        Merge static overrides and asset management in 2.8 - 1d
    • to do
        Blender 2.79a
  • Week 3
    • in progress Inprogress25.jpg 15%
        Drag and drop for link/append from the filebrowser - 5d
  • Week 4
    • to do
        Implement 101 UI/UX for Amber - 1/3w

December

  • Week 1
    • to do
        Implement 101 UI/UX for Amber - 2/3w
  • Week 2
    • to do
        Implement 101 UI/UX for Amber - 3/3w
  • Week 3
    • to do
        Buffer week for polishing code / bug fixes.
  • Week 4
    • to do
        Buffer week for polishing code / bug fixes.

January

  • Week 1
    • to do
        Static override and relations between linked asset IDs - 3d
  • Week 2
    • to do
        Static override and relations between linked asset IDs - 4d
  • Week 3
    • to do
        Static override and relations between linked asset IDs - 4d
  • Week 4
    • to do
        Allow multiple instances of the same group with different animations. - 4d
  • Week 5
    • to do
        Support multiple instances of the same object with different datablocks - 4d

February

  • Week 1
    • to do
        Polishing known issues/current technical debt (in core, C code) 4d
  • Week 2
    • to do
        Buffer week for polishing code / bug fixes.
  • Week 3
    • to do
        New round of planning, focus on rna properties task force (5d), advanced asset engine (20d), advanced override cases (5d), animation override (5d) and assist wrapping up other areas of 2.8.