Technical Art Manager
Scripting
The most recent tools I have built all have source code under NDA. I have descriptions of a few of them, and downloadable samples after that of tools that I have built in my own time as well. A few examples of things I have built:
Unreal Plugin - Asset Checking
I built a plugin for Unreal to gather data on a variety of asset types in the game project. For example, retrieving data on the triangle count for each LOD on skeletal meshes, getting the dimensions of texture files, or listing the parents and variables of blueprints, among many other data points. This was built in C++ and involved digging into the engine code to find how the various data types are stored and passing them through the plugin into a database that can sort, analyze and flag data points that need to be addressed. This was also set up to be automated, updating the database based on SVN check-ins and changes to current files rather than needing to be run by hand, though it can also be run on just selected assets as well.
Maya tool - Reporting a problem with automatic task creation in JIRA
I rebuilt and expanded on a tool that allowed artists to report a problem in the scene they were currently working on. It would allow them to write up the details of their problem and send it directly to the technical art team. This would also package up their current file and all dependencies by finding them in Perforce or by zipping up local files, and would recreate the artist's exact state on the technical artist's machine. When sent, it would also tie into the JIRA API to create a task with the details of the problem.
Bootstrapping - Machine setup and project switching
This tool would set up the machine environment for artists so that they could switch between project settings and would have the correct environment variables set, programs like Maya ready to go with project specific settings, and would clean up and sync a few particularly vital areas of Perforce (such as ones that could regularly generate bugs).

-
A tool for managing saving and loading weights. Allows a user to save the weights from selected objects, or from all meshes with weights in the scene. The user can then select the weight file and meshes in the scene to load the weights onto. It can also load weights to all objects in the current scene by name. All weight data is saved in .json files in a user selected directory.
-
This tool also has quick save/load functions with no UI for use on a single selected object
AlignTool
-
This tool allows the user to align, rotate, and scale all selected objects to match. The built in align tool was not as intuitive and flexible to use as I would have liked, so I wrote this to give users more options and save time. It incorporates scale and rotation aligning to save time there too by handling all of this through one tool. Objects can be aligned to the min, max or mid value of the first selected object, a given value, or the max/min/average of all the selected objects on the chosen axes. Rotation will match all objects rotation to either the first object or the average of all objects for the chosen axes. Scaling will match the height, width or depth of each object to the first selected object or to the average of all selected objects. Each object is scaled uniformly so it's dimensions are not distorted.
ModifyAllLightsIntensity
-
This script allows the user to multiply the intensity of all lights in the scene by a user-input number. This saves time in allowing a user to alter all lights uniformly through one tool rather than changing all lights individually. This script can also be easily altered to add intensity uniformly instead of multiply if that is a better fit.
random_instances
-
This tool creates a user-input number of instances from the selected object. The instances are moved, rotated, and scaled randomly within the ranges input by the user. Creating and placing many objects in a random-appearing way is repetative and takes time, this tool makes that much easier and can be used to quickly generate random placements.
Photoshop Scripts
Tiling Images
-
This tool allows the user to easily create a chart or image grid by selecting a folder of images to open and tile into a new image. The user defines the number of rows and columns, as well as the dimensions of the cells. The aspect ratios of the original images are maintained when resized to fit the grid cells. This saves significant time in building charts or any grid-based image.
Change all Text Layers
-
Allows the user to change all of the text in a multi-layered document at once. The user can select to change the font, font size, and/or font color on all text layers. This is much faster and much more convenient than the user having to change the fonts one layer at a time by hand.
Process Folder: Template
-
This is a template for processing all the images in a user selected folder and saving them as jpgs to a user selected output folder. There is a space to add functions for making changes to the image, such as the example code next on this list. Having a template allows for quick iterations and customizations to automize repetative batch processes.
Process Folder: Increase Contrast
-
Uses the process folder template to increase the contrast and apply a sharpen filter to all images within a user selected folder before saving them to a user selected output folder.
New Document from Layer
-
This script creates a new open document in photoshop from the current selected layer. This makes it easy to take a single layer from the current project and quickly start either building something new off of that, or easily separate the layer to work on it individually before returning the final result to the original layer.
New Document from Merged Layers
-
This script merges all existing layers and creates a new document of the merged visible layers. This is faster than doing a copy all layers and creating a new image to paste them in, and leaves the original image intact if alterations are needed later.
Maya Tools
Downloads of all tools/scripts available to the right (not available on mobile) -->
Save and Load Weights