James L Watt
James L Watt
James L Watt

Code

'Whenever the job needs it, I'll code it.'

Using scripting languages gives another level of control to the artist.    
Over the years, I've created many programs and scripts, which allow users to interact with 3D environments, speed up repetitive tasks, and extend the functionality of software packages.

I've also spent a lot of time working with node-based programming, setting up character-based scenes and creating complex interactive objects.

 

Maxscript

The following is a breakdown of a few scripts I've written over the years for different jobs.   Click on the title to see the script user interface :

XML Batch Editor

The XML Batch Editor is designed to batch edit XML files to allow fast data manipulation for a particular effects system.

It could edit or delete properties, replace property names and add new properties to effects.   This allowed changing of all sorts of data at any point in the project.

It also extracting information from game effects, to find the most expensive effects, strip out unused or little used texture maps and for general analysis of all project effects for optimisation.

LUT Generator

Draws out different sizes of accurate volume textures for grading in games.

Batch File Generator

The batch file generation tool is used to setup quick and easy rendering for MAX files using a network rendering system.   It works by creating small executables that, when clicked, send project files to the network renderer.   This allows fast addition of files to a network renderer with standardised rendering properties and makes rendering large projects with many scenes much easier.

Material Editor Controller

This is a manager program for the material editor and for controlling materials in the scene.   It can purge the material editor slots and repopulate them with a selection.  It also can turn texture viewing on and off in the viewport.

Batch Renamer

A much faster alternative to the renamer in 3ds max, with much more functionality.   This tool allows renaming of as much objects as you want, unlike the current max renaming tool, which crashes at around 1000 objects.   You can add prefixes, suffixes, number and find and replace parts of object names.   It can also be used to edit object, materials and bitmap names.

Building Placing Tools

I created a suite of tools for modelling large-scale urban design scenes.  

The building Placer script used house plot data from GIS systems, worked out the plots area then placed a building in the relative centre of the plot.   It also rotated the building to the longest plot edge.   This allowed the placement of about 150,000 houses based off the GIS data to be accurate to real world positioning.

Another script written for this project dropped the houses onto a 3D terrain so that they aligned with the height of the surface.  

A final script attached the individual house models together into one object for performance reasons, so that the model could run in a realtime engine.

 

Photoshop Scripting

As a VFX artist you need to manipulate images with very distinctive workflows.   You need to batch process animation frames.   You also need to be able to lay out images for animation spritesheets.   That's why I've started programming scripts for Photoshop.

Spritesheet Builder

 

The main use of this script is to allow the user to quickly generate an animation spritesheet, without manually laying out each image and its respective alpha channel.   By using photoshop scripting, it fits in with standard workflows, is fast and efficient.

The script can also put the spritesheet images onto the photoshop timeline.   This creates options for viewing frame animation, paint and edit individual frames, optimising texture space and manipulate each image with reference to the animation.   The timeline allows for onion skinning so that you can see the previous frames for shape matching.

It also allows editing of the layout of a spritesheet, so that the frames can be rearranged or deleted.   This may be needed to create a more square layout or get rid of some extra frames of animation that are not needed.

 

 

Other Languages

My degree in electronics gave me a good understanding of the fundamentals of programming, which allows me to pick up langages very fast. 
Here is a list of a few other languages, I've used in the past:

  • c
  • Actionscript 1 & 2 (Flash)
  • Lingo (Director Shockwave)
  • Assembly Language
  • MATLAB
  • Javascript

I have also used html, XML and CSS for creating websites and storing vfx data.