-
Notifications
You must be signed in to change notification settings - Fork 4
tutorial
be
helps developers help their artists.
It takes a naive approach to content creation and flips it upside down. Rather than first creating and then deciding on how and where to store things, the decision is made up-front.
A typical use of be
might looks something like this.
$ be in hulk bruce modeling
At which point you are in
the project hulk
, ready to work on modeling
for bruce
.
A follow up to this command typically involves launching the software you intend on using for this task.
$ photoshop
Artists don't like to mess about with technicalities and convention. But developers depend on it.
be
is the middle-ground. It helps developers by having artists transparently embed information about the task they are about to perform. Developers can then use this information to build tools that know of the artists intentions; i.e. tools that are sensitive to the current context.
It allows tools to ask questions typically only accessible to the artist him/herself.
- Where do I save my files?
- What is the current project?
- What is the asset I'm working on?
- For which task am I working on this asset?
For example, have a look at this simple asset browser. (todo)
The benefits, in short.
be
allows developers to:
- define a project directory structure up-front
- decide what information to make available in an environment per-project
- develop context-sensitive tools that harnesses this environment
be
allows artists to:
- not worry about where to save files
- get started quickly using pre-formatted directory layouts
- use the context-sensitive tools developed for their environment
From an artist's perspective, getting started on new projects is also made easier.
$ be new tutorial-project
"evasive_cactus" created
Following this command, be
goes out looking on the internet for project presets matching the term "tutorial-project" and creates a project using it.
Presets are tiny collections of be
configuration files that artists and developers build together and then reuse across similar projects. They can also be shared with the world via the be
hub, a central repository of available presets, which is also where tutorial-project
lives.
Once complete, it will have created a new directory evasive_cactus
within your current working directory and applied the preset for you to customise.
▾ evasive_cactus/
templates.yaml
inventory.yaml
Not given a particular name, be
makes one up. Here's how you give it a specific name.
$ be new tutorial-project --name myproject
These two files are the absolute minimum for any project. The inventory represents all items part of a project, typically assets and shots, whereas the template specifies their directory layout on disk.
Let's have a look inside inventory.yaml
.
$ cd evasive_cactus
$ cat inventory.yaml
asset:
- myasset
shot:
- shot1
- shot2
The preset comes with a few items already defined. Feel free to adjust these to your liking. The top-most keys, asset
and shot
, specify which "template" an item adheres to.
$ cat templates.yaml
asset: "{cwd}/{0}/assets/{1}/{2}"
shot: "{cwd}/{0}/shots/{1}/{2}"
Each argument passed to be in
is mapped to their corresponding position within it's template.
For example.
$ be in myproject myasset mytask
Resolves to /projects/myproject/assets/myasset/mytask
, as myasset
is an asset
, as defined in inventory.yaml
.
This connection between inventory and template is known as a "binding".
$ be in evasive_cactus shot1 animation
Following this command, be
will attempt to enter evasive_cactus
for the given task, in this case animation
for shot1
. As this is our first time entering this task, be
will ask to create a "development directory". That is, a directory for you to save your files.
No development directory found. Create? [Y/n]: y
The development directory is then created according to the corresponding template, each token replaced by an actual value relative the task.
This is what the template for shot1
looks like.
# before
shot: "{cwd}/{0}/shots/{1}/{2}"
# after
shot: "/projects/evasive_cactus/shots/shot1/animation"
Besides positional arguments, these values are also available to each template.
cwd: The directory in which you called `be`
user: The currently logged on user
To automatically change your working directory to the newly created development directory, pass --enter
.
$ exit
$ be in evasive_cactus/shot1/animation --enter
When entering a project, be
does two things. One of which is to apply a number of environment variables to the current command-line session.
$ be dump
BE_ACTIVE=true
BE_DEVELOPMENTDIR=/projects/evasive_cactus/shots/shot1/animation
BE_ITEM=shot1
BE_PROJECT=evasive_cactus
BE_PROJECTROOT=/projects/evasive_cactus
BE_PROJECTSROOT=/projects
BE_TYPE=animation