Reel Timestamps
00:04 - Directional Displace Nuke Gizmo - Nuke,
Python
00:36 - Unity
Editor Attributes, Animation Modifiers, and Value Accessors - Unity,
C#
00:59 - Variable Rate Function Traversal -
Maya, pyMEL (for implementation example)
I enjoy working pretty much everywhere in both the games and animation pipelines, but no matter what I'm doing, there is one universal constant: tools. I build tools as I need them for whatever project I'm working on, which has led to the accumulation of a small collection of tools across a variety of applications. There are quality-of-life workflow enhancements like the Toon Boom Tool-Swap plugin for Harmony, pipeline tools like the Remote Smedge Submit Script for Maya, and even custom effects and transformations like the Directional Displacement gizmo for Nuke. Many of these tools were built over the course of the production of my short film Whittled Down, so make sure to check out my writeup on the film if you want to see some of these tools in action. Whatever the problem is, if there's a tool to fix it, I'll figure out how to build it.
I'm particularly proud of the Directional Displace Gizmo for Nuke and the Variable Rate Function Traversal function (which I applied as a Maya expression), so if you're looking for my best work I would recommend starting there.
These are the most complex types of tools I've built. They generally involve a fair amount of applied math and are designed to solve technical challenges relating to the fundamental look of a scene.
A small Nuke gizmo that creates a human-readable displacement system.
Nuke, Math and Algorithms
Variable Rate Function Traversal
A method for changing the rate at which a function (such as an animation curve) is traversed over time, some of its applications, and a Maya expression that implements it.
Maya, MEL, Calculus, Math and Algorithms
A Nuke script that generates noise that oscillates back and forth but only changes direction when it hits the minimum and maximum values of its range.
Nuke, Python, Math and Algorithms
These are tools that help applications work more effectively, both on their own and when used as part of a larger pipeline. While they may not be used by artists directly, these tools work behind the scenes to solve challenges that make the technical aspect of managing a large project easier.
Fixes two typos in the arnoldRenderer.xml file that break batch rendering command line flags relating to TX files.
Maya, Arnold, MtoA Plugin, Pipeline
A simple Maya script for syncing remote render directories and generating config files for the Smedge render manager.
Maya, Arnold, MtoA Plugin, Smedge, Python, PyMEL, Pipeline
These are tools that help artists work faster. Many of them are small workflow tweaks intented to increase application quality-of-life in subtle ways.
Plugins for other applications to implement "Increment and Save" feature the same way that Maya does.
Nuke, Krita, Toon Boom Harmony, JavaScript, Python, Workflow
A plugin that adds two groups of hotkeys to Toon Boom Harmony: one to easily swap between the brush and pencil tools, and one to activate the cutter and select tools without affecting the alt key's bindings.
Toon Boom Harmony, JavaScript, Workflow
Krita plugin that allows you to export a selected region of a document.
Krita, Python, Workflow
Adds a button to toggle whether new layers are created with alpha inheritance enabled.
Krita, Python, Workflow
Krita Separate Brush and Eraser
Creates Krita hotkeys that treat the brush and eraser like separate tools.
Krita, Python, Workflow
These are libraries and components intended to solve problems that I often run into as a game developer. Some, like the plane renderer, are editor tools intended to make setting up a scene easier, while others, like the value accessors, are abstract libraries that make it easier to create time-saving reusable components.
A serializable object that allows scripts to dynamically reference the fields of other objects in the scene from within the Unity editor.
Unity, C#, Unity Library, Game Engines
A collection of dynamic property drawer attributes for use in the Unity Editor.
Unity, C#, Unity Library, Game Engines
Provides components that can use equations to control any value in the Unity editor without needing to write additional scripts. It works similarly to animation modifiers in Blender or expressions in AfterEffects.
Unity, C#, Unity Editor Tools, Game Engines
Unity component that simplifies rendering image planes in 3D space.
Unity, C#, Unity Editor Tools, Game Engines
Script that lets you set Unity images to have alpha values greater than one. This is useful for fixing transparent UI elements that look faded in linear color space.
Unity, C#, Unity Editor Tools, Game Engines
A Utils class that can be used to quickly build interpolation methods and coroutines for any object.
Unity, C#, Unity Library, Game Engines
These are fun little gadgets that don't solve any problem in particular, but do bring me a lot of joy.