A minimal pipeline consists of files, following a naming convention, organized in a folder structure.
It should comprise Asset and Shot hierarchies, including Tasks, and Work and Publish Scene Versions.
For example:
- Asset type / Asset name / Task / Version / State (work or publish) / Scene File
- Sequence / Shot / Task / Version / State (work or publish) / Scene File
We call "Entity" the data that we handle (Assets, Shots, Tasks, Versions, Scene files).
A UI tool browses existing Entities and implements actions on them.
For example:
- list Assets, Shots, Tasks, Versions, Scenes
- open, save, increment a Scene
- publish a Version
- build the first Version of a Task
The Tool is usable from within the different DCCs.
We implement "Engine" classes, one for each DCC.
A factory function returns the appropriate Engine, depending on the context.
Each "Engine" class implements actions, that are discoverable by the UI.
We implement a file system access layer, to find the files and resolve to pipeline entities.
Resolver
A resolver is used to translate a path into a Pipeline Entity, and to format a path from an Entity.
Examples:
We use rez as the software package and environment manager.
We create rez packages:
- pipeline tool package (could be split into pipeline Core and pipeline UI)
- DCCs package (one per DCC)
- DCC Engine package (one per DCC)
Besides the File System, we create an API to connect to a Backend, and handle Entities from there.
Possible backends:
- Shotgrid - Market leading CG project manager, for medium to big sized studios
- CGwire Kitsu - Open source CG project manager, for small to medium sized studios
- Custom relational database - See Relational database with SQLite
We start with Shotgrid.
See Admin getting started
(Tip: use sg.schema_entity_read()
to get the data schema)
We create APIs to encapsulate (abstract) the backend(s) and file system, to use them as data sources for Entities.
On top of these, a common API offers a unified access to the Entities.
Depending on the type of the Entities, we connect to a different data source.