Joseph
Henry

Silex

GitHub logo

Silex is the name given to the pipeline we built at ArtFX Montpellier in 2022.

Four of us worked on various projects, including databases, interfaces, DCC integration, deployment, render farm and more.

The goal was to streamline the production process of 12 short movies created by teams from 4 up to 8 artists.

Here is our making of, we had a lot of fun doing it!

Architecture

At ArtFX the challenge is being able to handle various projects from full 3D animation to VFX and a bit of 2D animation.

It means different softwares (Maya, Houdini, Nuke...), render engines (V-Ray, Arnold, Redshift) and project configurations.

This was our needs:

- Don't rely on classical Qt interface in the DCC and use web technologies instead

- Being able to override configurations down to the task and project level

- Flexible action system with configurable parameters. Actions describe things you can do in the pipeline (Publish, Save, Submit...)

- Store data and user information in a database for better production tracking

This is the architecture we came up with:

The challenge here was to decouple the interface from the Python part running in the 3d software.

For that we used a WebSocket server using Socket.IO to exchange data between Python and the React front-end application.

The silex-socket-service part is a bridge between the Python runtime doing actions in the DCC and the front-end React application.

For the backend we used the CGWire stack which includes Zou (database storing the production data) and Kitsu which is their interface.

Their amazing software is available freely on GitHub so it's easy to integrate into a production and modifying how it works!

> The source code is freely available on GitHub if you want to check it out

Interface

I was mainly responsible for the interface of Silex.

The goal was to have a user friendly and modern interface so that using it would be fun.

We first prototyped the interface using Adobe XD:

The final application was made using React, TypeScript and Material UI and was viewed in an Electron application installed on every artist computer.

The user can easily explore all the shots and assets in his project:

The file system is abstracted away in the interface so you only see necessary files:

Actions are interactive and asynchronous meaning that the user can change parameter values and the action will update.

We exchange diffs between the interface and the Python runtime to minimize overhead.

Actions can also display errors and warning and it includes a log view for debugging purposes:

Opening Maya from the interface is simple as that:

Artists can validate their rendered frames:

And we can display the project progression for production tracking:

Using a web interface allows us to integrate Tractor (Pixar's render farm), Zammad (ticket system) and Harvest (Tractor statistics) so Silex becomes an application hub.

Additional screenshots