Skip to content
Roy Nieterau edited this page Jan 2, 2020 · 10 revisions

Frequently asked questions

Reference discussions:

How to get started with Colorbleed config?

Installing any custom studio config for Avalon is done by having its Python package on your PYTHONPATH so it's accessible and let Avalon know you want that particular on by setting an environment variable to its name: AVALON_CONFIG. In this case to colorbleed

Note that a studio configuration can have custom dependencies that you'll need to have to make sure it works. E.g. Colorbleed does have some, which are currently not mentioned anywhere in the README. TODO

In the case of Colorbleed. I'd recommend using the acre branch, because that's the one that we actually update lately. We will move back to master once we've dropped need for acre environment management.

Dependencies I know of out of the top of my head:

I believe that's what you might need to avoid any errors during launch. A very very long time ago someone else got stuck and created this issue. I'm not sure if any of it is still relevant... but it might help answer some of your questions.

What is your publish workflow?

How do we Ingest new files?

This is done through Pyblish plug-ins that "extract" from the DCC. These plug-ins for Colorbleed-config are here - where the Maya publish plugins are here. The plugins use a Pyblish order called CVEI (Collect, Validate, Extract and Integrate) or read the Pyblish Quickstart.

Actual ingestion into the database is done through one common plugin, see the Integrator. This creates the new version in the database and transfers the files to its version folder.

If you're looking for ingesting e.g. many footage/files given by someone and automatically batch ingesting them. Currently there's no ready tool to do so. Potentially it could be done with a Python script, but there's no toolset available to quickly let you do this. Feel free to create an Issue if you need it.

How does rendering on the farm work? Do the nodes needs same setup and environment? Do you share the same folder on clients or do you install avalon on each artist client?

At Colorbleed we have a mixed OS farm (Windows workstations, and Windows/Linux farm). Basically we have the Python environment and plug-ins exposed to the farm through a network storage. Then we use acre to build the environment variables for any slave as it initializes through Deadline, for that we use a GlobalJobPreLoad.py (out of the top of my head that's the name).

Along with the Deadline jobs we submit the current user "acre environment" which consists of a string of tools like: global;maya;yeti;ffmpeg. This is passed to the Deadline job as environment variable AVALON_TOOLS which the slave reads and initializes.

However, this could be quite different from how others using Avalon might be doing it. We're only doing it this way due to acre making it trivial to manage the mixed-OS paths for the dependencies.

As such, Avalon is basically available on the network and it is not installed locally per slave.

What is Avalon's default startup sequence?

Whenever a host is correctly launched all it should do is connect to the Avalon database and when a host integration supports it also expose an Avalon menu entry to allow easy access to its tools, like the Loader, Publish, etcetera.

Open latest work file on launch

Avalon does not by default open the latest workfiles. This however can be done in your studio configuration. For example in your config config.host.install() you can do whatever you'd like directly after initializing the host application.

# pseudocode for in your config in the "host" folder for
# the specific application, e.g. config.maya
import os
import avalon.api

def install():

    host = avalon.api.registered_host()
    workdir = host.work_root()
    extensions = host.file_extensions()
    
    # Get all files on Work Directory
    files = []
    for fname in os.listdir(workdir):
        
        # Ignore invalid extensions
        if not any(fname.endswith(ext) for ext in extensions):
            continue
            
        path = os.path.join(workdir, fname)
        
        # Ignore folders
        if not os.path.isfile(path):
            continue
        
        files.append(path)
        
    if files:
        # Sort by date modified
        files = sorted(files, key=os.path.getmtime)
        
        # Open latest modified
        latest = files[-1]
        host.open_file(latest)

Or just show the work files tool directly:

# pseudocode for in your config in the "host" folder for
# the specific application, e.g. config.maya
def install():

    from avalon.tools import workfiles
    workfiles.show()

This code is then triggered by avalon.api.install() when installing the host itself.