From 9a4666160c4ba01947aee8939cd53f29ded6a450 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 21 Oct 2014 12:04:55 +0200 Subject: [PATCH] add planning doc --- docs/source/design/planning.rst | 182 ++++++++++++++++++++++++++++++++ docs/source/index.rst | 1 + 2 files changed, 183 insertions(+) create mode 100644 docs/source/design/planning.rst diff --git a/docs/source/design/planning.rst b/docs/source/design/planning.rst new file mode 100644 index 0000000..94cb939 --- /dev/null +++ b/docs/source/design/planning.rst @@ -0,0 +1,182 @@ + +########### + Pipeline +########### + +**The Story Tool** + +*This is the over arching goal of the project.* + +- Asset Management +- Project Management +- Automated Tasks + +Asset Managment +=============== + +- Assets <-> Users + - Revisions + - Variations + + +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.) +- Local files (models, images) + + + +User Stories +============ + + +Layout Artist +------------- + +Mathieu has to update the camera motion in an existing shot in layout stage. + +Since he's in the middle of the project, he loads Blender and accesses the 'Recent Projects Menu' +Which shows an interface to open the file he's looking for. +In this case someone modified a prop, giving the message "Shader changed, by Pablo". +Which he updates because it only takes a few seconds. + +Now he's able to edit the camera and save his work (exit Blender, reopen...etc) +When he's happy with the changes he opens the file menu **File -> BAM -> Commit Changes** + +This prompts him with a dialog showing a list of the changed files. +He enters a commit message explaining the change and presses **Commit**. + +a progress bar appears while the data is being uploaded. + +He finally receives confirmation that the commit uploaded correctly. + + +Animator +-------- + +Hjalti opens the project management web site and finds he's been assigned a new shot to animate. + +He opens Blender and selects **File -> BAM -> Load**, +this prompts him with a browser which he uses to locate the shot, +which he can easily identify by the name: ``shot_012_anim.blend`` + +He confirms the action, which shows a download progress bar which immediately loads the file in Blender. + +He is presented with a low poly scene containing rigs with the characters in the shot and the props they interact with. +as well as a low resolution version of the environment. + +He can work on the animation, and modify the file, and commit... *as Mathieu did* + + +Editor +------ + +Mathieu is going through his daily review of the edit in Blender, + +He opens the edit blend **File -> BAM -> Recent Files -> Edit**, + +This shows the sequencer view with each shot as a strip, + +He can add a new shot into the edit **Sequencer Header -> Add -> BAM Shot** + +.. note:: + + exactly how this is done is yet to be decieded, + + however the shots will be created and managed on the server (likely via a web-ui) + +A popup will appear with a list of shots which can be selected to add. + +At this point the sequencer can be used as usual, + +**However** the clip in the sequencer is now **the** reference for length/timing of the shot, +its values are propagated to the server (*once committed*). + + +Implementation Details +====================== + +This document describes the layout for Blender pipeline. + + +Overview +-------- + +- Use SVN for internal storage. +- SVN repository is for internal storage (but keep usable as *last resort*) +- Support extracting single ``.blend`` file, and committing it back (without a full checkout), + useful for remote artists. + + +SVN Commit Abstraction +---------------------- + +Motivation: + +Artists need to be able to work on jobs without downloading entire repository. + +---- + +Workflow: + +- Select an asset to *checkout* (Likely via a web-ui/blender-ui). +- Download the asset and its dependencies (web/cli/blender-ui). +- Modify data locally (images, 3d... text... etc). +- Submit task back with commit log (blender-ui/cli/web?). + (Server handles commit). + +---- + +Technical details: + +- Server handles SVN integration which is hidden from the client. +- The job submission and editing workflow is handled by client/server, + Server creates binary blobs for the bundles, + client handles download and create a usable directory for editing. +- Path remapping of ``.blend`` files must be handled + (in both directions, likely using ``blendfile.py``). +- Use cache on client to avoid re-downloading the same resources. + + +Components +========== + +Client +------ + +- UI (list + checkout (remote assets), edit + commit (local assets)) + - CLI (command line tool for low level access, scripts TD can use... etc) + - Blender/Integrated UI + - Web-UI (browse assets, limited access). + +- Tools + - browse remote repo + - downloader (simple zip) + - checkout/commit workflow (check what to download, commit whats changed, manage cache internally avoid re-download) + +- Data + - Files/Assets (blend files, textures) + - Cache (physics assets which can be regenerated on the server) + + +Server +------ + + +----- + +- Write blend file extractor / packager. +- Write online SVN browser. +- ... TODO diff --git a/docs/source/index.rst b/docs/source/index.rst index a9c755d..f5039d7 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -7,6 +7,7 @@ Contents: :maxdepth: 2 install/index.rst + design/planning.rst