From db8943480347ded42227793a70c8fcc4cc2d60e9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 21 Oct 2014 19:33:45 +0200 Subject: [PATCH] initial planning document (mostly) done --- docs/source/design/planning.rst | 181 +++++++++++++++++++++++++++++--- 1 file changed, 168 insertions(+), 13 deletions(-) diff --git a/docs/source/design/planning.rst b/docs/source/design/planning.rst index 94cb939..58ed918 100644 --- a/docs/source/design/planning.rst +++ b/docs/source/design/planning.rst @@ -1,18 +1,35 @@ -########### +%%%%%%%%%%% Pipeline -########### +%%%%%%%%%%% **The Story Tool** *This is the over arching goal of the project.* -- Asset Management -- Project Management -- Automated Tasks +- Asset Management *Manage Files & Content* +- Project Management *Manage People & Tasks* +- Automated Tasks *Manage Geneated Content* -Asset Managment -=============== + +.. note:: + + Design Goals + + ...this is a tool, not a framework, + for anyone making animation(s) with Blender. + + +- Handle multiple projects. +- Foresee use of other tools (as well as Blender), in the work-flow. +- Support multi-site/distributed work-flow. +- Support **some** of the functionality in the Blender-Cloud. +- Design to **allow** for swappable modular components, even if we end up sticking with single technologies. + + +################## + Asset Managment +################## - Assets <-> Users - Revisions @@ -20,17 +37,17 @@ Asset Managment Architecture Overview ---------------------- +===================== Server -^^^^^^ +------ - File asset - Tools (blend file packer, evaluate sequencer, visualize deps, automated tasks ...) - Public API (web service), *communicates with client.* Client -^^^^^^ +------ - Interface GUI/CLI (Blender/Web-UI also) - Tools (manage files on the client, cache.) @@ -174,9 +191,147 @@ Client Server ------ - ------ - - Write blend file extractor / packager. - Write online SVN browser. - ... TODO + + +##################### + Project Management +##################### + +Use phabricator! DONE :D + + +################## + Automated Tasks +################## + + +Components +========== + +There are 2 types of tasks to be automated. + +* User submitted tasks. +* Tasks generated by events such as commit hooks, finished rendering... etc. + +Automated tasks are broken into 3 steps. + +* Creation (API/CLI/GUI) +* Scheduling/queueing (Managed by the server) +* Execution/job management (Controlled via the server, though API's & UI's) + + +User Stories +============ + +Heres a list of tasks we would expect the system to support + +- Generating Renderfarm Preview +- Low resolution textures for animation +- High Resolution Simulation (hair, smoke) +- Final Render a Scene +- OpenGL Preview Every Shot +- Bundle a Blend file into a ZIP +- Synchronizing Data (SVN/Database... repositories... backups) +- Consistency checks (automated tasks to validate the state of the project) +- Blend file hygiene/lint (unused datablocks, images not used anywhere) +- Building Blender + + +Implementation +============== + +We plan to develop a very simple system leveraging existing technologies. + + +Dashboard +--------- + +UI (web based), allows manual creation of tasks. + + +Server +------ + +Backend connected to database and scheduler, managing & assigning jobs to workers. + + +Worker +------ + +Simple client, exposes control of the machine via an API. + + + +%%%%%%%%%%%%% + Milestones +%%%%%%%%%%%%% + + +###################### +Minimum Viable Product +###################### + +Get existing project migrated to asset manager as soon as possible. + +- No Client-side-SVN. +- Checkout/Commit assets. +- Basic UI. +- ZIP file access (as an example, users wouldn't have to notice) +- Testing (basic testing framework) + + +########### +Performance +########### + +- Parallel downloads +- Cache (avoid re-downloading files) + + +######### +Interface +######### + +- BAM project definition. +- Blender Addon (UI for performing basic actions) +- *Maybe* extend GUI client. +- Web UI +- Download Zipfiles + + +############### +Scaling/Project +############### + +- Consistency checks (correct library linking) + + +##################### +Basic Automated Tasks +##################### + +- Generated Previews (basic automated tasks hooked up to asset manager) +- Baking (physics) +- Web UI (create/view/manage jobs) + + +########## +Story Tool +########## + +- Establish connection between sequencer and 'shot' assets *(abstract concept)* +- Integrate into Addon +- Connect automated tasks on edit updates, (sync sequence with short assets) +- Expose the edit outside of Blender *(web based UI, reviews, comment, feedback, tasks...)* + + +################## +Project Management +################## + +- Web UI +- Connect basic communication tools to assets, commits. +