TUTORIALS/SLIDES/PUBLICATIONS:

Crysis Management: Maxscript Tools Development at Crytek [3dsMax/Maxscript]
Slides from a talk I gave with my friend/coworker Mathias. The first part of this lecture is an introductory course on maxscript, showing many tips and tricks for beginners, the rest serves as an overview of maxscript tools development at Crytek, focusing on the Animation tools.
[1.3MB PowerPoint] [360MB of videos (rar)]
Updated: 05/13/08

Technical Art Techniques: State of the Industry [Real-Time Graphics]
Slides from a 2 hour panel that my friends Judd Simantov, Paul Thuriot, Jason Parks and I presented at the 2008 Game Developers Conference. Media to come as our respective studios ok items for release.
[200KB PowerPoint]
Updated: 04/25/08

Creating Interactive MotionBuilder User Interface Tools [MotionBuilder/Python]
A tutorial explaining how to create interactive user interface tools in MotionBuilder. We do this by piping Python commands in via telnet console from an external app which piggybacks on MBuilder as a child window.
Updated: 04/20/08

Evolve: Character Pipeline Advances for Next-Gen Titles [Real-Time Graphics]
This was the 2 hour character session Hanno Hagedorn and I presented at the 2007 Game Developers Conference.
[32MB PowerPoint] [98MB 480p DivX Video] [58MB 360p DivX Video]
Updated: 09/13/07

Musculo-Skeletal Rigging in Maya [Maya]
This is the paper handout from the SIGGRAPH 2005 session I gave. The document was originally in English, but now has been translated into Japanese.
Updated: 06/08/06

Simulating Musculature in Maya [Maya]
Emulating complex musculo-skeletal movement and deformation with standard Maya deformation tools.
Updated: 08/23/04

Adding Detail To Subdivision Surface Models [Modeling]
Utilizing pole polygons to increase/decrease mesh resolution where needed in subdivision surface meshes.
Updated: 08/15/04

An Intro to Modeling with SubPatch Weight [Lightwave]
The name says it all.
Updated: 10/29/02

Thick Lines for Real-Time Cel Shading [General]
A tiny but apparently insightful tutorial I wrote for a friend.
Updated: 07/03/03

Backing Up Your Files: A Comprehensive Guide for CG Artists and Users Alike [General]
Backup automation with winRAR using parity and other command line options.
Updated: 10/16/04


SCRIPTS AND GOODIES:

cryTools [3dsMax]
CryTools is a suite of artist/animator tools used at Crytek. We decided long ago to go the way of Blur and others and make our scripts available to the public. These are the raw scripts, for a version with an installer and resource compiler (to generate assets for CryEngine2) you should install the freely available [CryEngine2 SDK]. Check [here] for more information about what the tools add to 3dsMax.
Updated: 05/16/08

mbui.py [MotionBuilder]
This is an example script from my tutorial explaining how to create interactive user interface in MotionBuilder. It uses telnetlib to communicate with MotionBuilder's Python Remote Server. The sample tool shows you how to do things like populate a listbox with items currently selected, delete items, and read position/rotation data. This was also my first python script. Required Modules: [wxPython]
Updated: 04/20/08

mbui_subframe.py [MotionBuilder]
This is the same as the script above, however, it uses pyWin32 to make your tools window a child of the MotionBuilder app itself. (no more alt+tabbing) This uses hacked up parts from a 3DSMax/Python implementation in Adam Pletcher’s GDC talk: Python for Technical Artists, and a Maya/Python example here. Required Modules: [wxPython] [pyWin32]
Updated: 04/25/08

geoBake.mel [Maya] beta
This script bakes out any polygonal deformation (syFlex cloth, sideBulge muscles, etc..) to a user defined set of morphs, driven by a single slider. I will be adding more to this in hopes of automatically baking all extra-skeletal deformation to joint-driven morphs or pose space deformation later. Here [2MB divx] is a simple video, and here [2.6MB divx] is something more complex.
Updated: 11/27/04

select_connected.mel [Maya]
Select a face, it will expand selection to all faces in the continuous "shell" or "part". (Like Lightwave "select connected" command. ("]")
Updated: 08/27/03

detach_connected.mel [Maya]
Select a face, it grows selection to all faces in current "shell". Then prompts the user to name the new object and creates it with that geometry. The user is then prompted to delete or leave the old shell in the original object. This works without seperating the mesh, so it's great for taking selected parts off imported OBJs!
Updated: 08/28/03

copy-paste_faces.mel [Maya]
Copies selected faces to a new object. This is similiar to the duplicate faces command, but works without seperating the mesh. It is a lot more "general use" than detach_connected.mel, as it works on any faces selected on the object.
Updated: 08/30/03

edge-cutter.mel [Maya]
Select the edges that border the area you want to remove, or select the edge you would like to propigate out to a contiguous loop to divide an object into two parts. The script breaks off the selection and names the resulting objects.
Updated: 09/13/03

turn_tabler.ls [Lightwave] beta
This is a script to create an object turntable in modeler. Many people have grunted and moaned that Layout cannot display subpatches. Modelers rejoice, this script will rotate your object on any axis, 360 degrees, for any number of 'frames' or iterations. Just use TechSmith Camtasia or the like to record it. Here [300K divx] is a demo avi of the output.
Updated: 06/11/04

rotYaxis.ahk [AutoHotKey]
I wrote this because of the overwhelming response to TurnTabler.ls. This is an AutoHotKey script that will emulate horizontal mouse movement. Map it to a key and launch it while your mouse is hovering over in the perspective viewport and it will rotate the object around the Y axis. It may do it too fast or too slow based on your resolution, so you might need to mess with the settings; '+= 37' is how many units it is to move on the X axis. (play with that)
Updated: 06/13/04

ip_config.bat [Windows OS]
A batch script to automate repetitive network tasks. From the menu you can ipconfig /all or /renew, and netstat -a -n.
Updated: 01/08/03

reboot.bat [Windows OS]
A batch script to reboot a remote machine [Through XP Remote Desktop or VNC]. From the menu you can shutdown or restart said machine.
Updated: 01/10/03

sync-mirror-mount.bat [Windows OS]
A script I have been working on for some time now. It is a menu where you can mount and unmount multiple network drives, substitute local mirrors for those network drives, and sync files back and forth between the local mirrors and network drives/folders. It is ideal for a laptop that loads scenes/renders to/off a network drive. You will have to adjust the paths to reflect your local and network paths.
Updated: 09/10/03


GAMES AND INTERACTIVE ART:

Download and play!

The original MEL Paddle Ball game [Maya]
[video demo - 1.4MB]
This is a MEL script that I wrote that showcases the ability to interact with an animation while the timeline is playing. I have also been told that it was the first MEL game.
Updated: 05/03/01

Download and play!

BubbleGun Houdini Game [Houdini]
This is a cross between Asteroids and Missile Command. Originally made for an old version of Houdini, I had the chance to recently open it in 6.0 and make it playable. It has not been updated however.
Updated: 03/14/01


Plug-Ins and Files Long Since Dead to the Internet:

Here I have amassed some plug-ins and files that once freely roamed the interweb. That have long since become extinct.

Pbo.p - Plane Belt Optimizer [Lightwave]
This will collapse bands or strips of polygons. It was later added to lightwave and called 'Band Glue'.

FIsWrinkle.p - FI's Wrinkle [Lightwave]
This is one of the greatest tools ever created for locally increasing the resolution of subdivision surface meshes. It splits a line of points into a new band of polys capped with two pole polygons.

DAZPointNormalMove.p - DAZ's Point Normal Move [Lightwave]
One of the greatest point tweaking tools for Lightwave. It moves points along an averaged normal of their surrounding polygons.

Updated: 04/26/05