Xbox Controller Color Tool
Python/PySide2 Maya tool for loading and saving lighting templates and rapid iteration on Xbox controller renders.
Xbox Controller Color Tool
For the new generation of Xbox Controllers, I was tasked with creating a Maya template with evergreen camera angles and approved lighting used to render all following controllers for this generation — years to come.
The template consisted of three lighting systems for light, mid and dark colors; light positions were consistent for each camera angle but intensity was adjusted for each system. The template had six camera angles keyed in frames to import as a render sequence in Nuke, with 18 different renders across all three lighting systems.
Previously these templates lived in three different Maya files (one per lighting system), but often some colors worked better on a different lighting system than initially planned. I proposed a single template where we can test all lighting systems and create new templates for new patterns or materials — the Xbox Controller Color Tool.
Xbox Color Tool Timelapse
Add a video embed in frontmatter when you have a hosted file.
Building the Template
The most challenging aspect was bringing 18 individual Maya files together, each addressing particular client feedback to lock the visual style for the controller renders. Even with light consistency across the three initial controllers that defined the lighting template (robot white, carbon black, shock blue), there were specific lighting notes for each system.
Scripting helped compare light positions across files, identify consistent and unique light positions, light links, and material details. The template ended up with 180+ lights in total for all six angles.
Technical Details
The Color Tool was developed in Python using PySide2 for the UI. It reads and writes JSON with node attributes relevant to the template, so you can load the three default templates (light, mid, dark) and save new custom templates. You can load light, color, and material attributes together or individually from existing templates or custom “Load” settings.
It is a robust tool for rapid iteration and constant implementation. It can set up any color combination in the interactive render; color attributes control color constants for each controller component, with a master color and default Xbox colors for the button letters.
Diffuse and specular multipliers control those attributes for all lights or specific light groups.
Additional features include switching geometry parts for special edition controllers and transferring light links for new geometry.
Technical challenges included linear ↔ sRGB handling for color, an environment variable for the last-used lighting template, diffuse/specular multipliers reading from JSON for consistent values, and reading/mirroring files from a server so templates and saved settings stay consistent across users.
There were ideas to extend the tool for non-3D users via an evergreen Deadline job reading RGB colors from Excel for low-res renders — not implemented for 3D team QC.