
James M. Vilela-Slater
3D Technical Rigging Artist


Tools development
Tools I've written for rigging and animation, automating tasks and workflows, designed with Python, C++, PyQT, SQLite, MVC framework and CSS. All are aimed at maintaining and enhancing the capabilities of 3D artists for scalability and maintainability.
Modular rigging project; PyQt handles the interface, a custom-written database with Python SQLite3 addresses the back-end. Following the MVC framework, the elements of the programme are scalable and maintainable. This tool handles character setup, from skeletal placement, orientation, and control creation, as the data is loaded, edited, and retrieved dynamically to meet project demands. The data stored will be passed to the system & deformation tools to finalise the rigging process.
Character Layout Tool: Python
I’ve been researching and developing an object-oriented approach to build my modules for rigging. I aim to write clean, maintainable code through inheritance and reusability. Isolated data management and rigging logic. Scalability of my workflow to produce simple props to complete character & creature builds. Keeping in mind Collaboration: consistent patterns that are predictable and debuggable with clean documentation for project sharing.
Building Modules Workflow
Core Data Flow:
Raw data for each module is retrieved by my 'Char Layout Tool' and passed to this workflow. Data processing occurs once per module with the ModuleDataManager instance to prevent data leaks.

OOP Class Inheritance Structure:
Each module combines reusable methods (ModuleBlueprint class) with module-specific operations and rigging methods (System[ModuleName] class), creating consistent yet customisable rig components through inheritance, thus I can easily edit what the rig modules do and/or accommodate specific character requirements.


<- Consistent rigging functions.
<- Module-Specific operation functions


Registry System:
An automated approach to managing the building of complex multi-module rig assemblies. This only manages when and in what order to call my existing build methods, without interfering with the data management itself.


This tool provides functionality for managing the skinning relationships between joints and geometry in Maya. Users can create custom databases and select where these databases are saved. It is developed using the SQLite schema in conjunction with Python and stores UUIDs (Universally Unique Identifier) for the recorded joints and geometry.
Geometry Database Tool: Python
These tools enhance my ‘Geometry Database Tool’ for managing geometry exported from Maya in USD format. I use UUIDs for dynamic storage of joints and geometry during rigging, but they change upon importing into a new scene regardless of format. To solve this, I developed tools to record and preserve the original UUID data during import, preventing data loss.