-
Notifications
You must be signed in to change notification settings - Fork 12
FAQ
Reference discussions:
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:
- https://github.com/BigRoy/acre
- https://github.com/Colorbleed/scriptsmenu
- https://github.com/Colorbleed/maya-look-assigner (not required, but used in production for shader assignment in maya)
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.
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.
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.
Avalon does not by default open the latest workfiles. This however can be done on a per 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
def install():
host = avalon.api.registered_host()
workdir = host.work_root()
extensions = host.file_extensions()
# List all files on Work Directory
files = [os.path.join(workdir, fname) for fname in os.listdir(workdir)]
# Filter matching file extension
files = [f for f in files if any(f.endswith(ext) for ext in extensions]
# Filter to only files
files = [f for f in files if os.path.isfile(f)]
# Sort by date modified
files = sorted(files, key=os.path.getmtime)
# Get latest modified
if files:
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.