A Better Maya to Unity Workflow

In the past, I’ve implemented tools and fixes to Unity’s import pipeline of native Maya files by manually modifying the FBXMayaExport.mel script. Unfortunately, these types of modifications are difficult to maintain. For one, they need to be redone every time the Unity installation is upgraded. Second, the files are buried in obscure places that require administrative privileges to modify them. It would be ideal if changes could be made in one place, one time, in a way that supported more modular design. So, I finally decided to take the time to sit down and tackle this problem.
Continue reading A Better Maya to Unity Workflow

Reenabling Spotlight Menu Search in Maya 2014

If you are primarily an OS X user, you may rely on the keyboard shortcut for accessing the Help menu’s search field (Cmd-Shift-?). As someone who is accustomed to doing lots of (lazy, IDE-assisted) typing, it is by far the fastest way for me to get to menu items in all Mac apps, without setting up all sorts of exotic keyboard shortcuts that put my hands through gymnastic routines. It also has the benefit that I never need to learn menu structures or navigate to deep items.

As a testament to how much time I’ve been spending in Maya lately, I unfortunately only noticed today that this feature no longer exists in Maya 2014! Sean Donnelly at Autodesk helpfully explained the problem. In short, because the operating system automatically takes control of menus called “Help”, they were unable to get some of the new UI features to work with it (e.g., the super helpful “What’s New” highlighting scheme they’ve added). Consequently, the help menu label in Maya is now “Help “. If you want to get the spotlight search back, there are a number of ways you can approach the problem, but I found it easiest to add a dummy menu with the following simple snippet in my userSetup.py:

import sys
import maya.cmds as cmds
import maya.mel as mel
import maya.utils as utils
if mel.eval('getApplicationVersionAsFloat') >= 2014 and sys.platform == 'darwin':
    deferred_command = \
    """
cmds.menu(
    'SpotlightHelpMenu',
    parent=mel.eval('$gMainWindow = $gMainWindow;'),
    tearOff=False,
    label='Help',
    familyImage='menuIconHelp.png'
)
    """
utils.executeDeferred(deferred_command)

An Automated Pipeline for Generating Run-Time Rigs

On account of getting the flu at GDC, and then having to catch up on all of my work that wasn’t getting done, I’ve been a little behind, but I wanted to make sure I got up a write-up for my main conference presentation from GDC this year.
Continue reading An Automated Pipeline for Generating Run-Time Rigs