Improve Maya Usability


Following my previous article regarding startup and shutdown time of Maya, I will share some tips, some are just personal preferences, but others fix some nasty old bugs, increase stability or speed and you should just plain use them.
I added a script that combine all those improvement at the end of the article to put in your userSetup.py so that your preferences are set the first time you launch Maya.

Disable the Load/Save UI layout from scene #

This is quite important and would urge you to do it. This functionality can be quite handy but it is a very bad idea to use it, it can lead to crashes, slow opening times, and scenes impossible to open… unless you deactivate it in the preferences. It can feel frustrating not to use it at first but I can assure you will enjoy it pretty soon!

A good habit is to actually create some custom layouts independently of scenes. Open a new Maya session, organise your layout and panels, and save it! Especially since Maya 2017 with the new workspace feature. For users using previous versions, the layout feature is bugged and it won’t save any floating window outside of the main Maya window. Another solution is to script your layouts and open floating windows with a click of a button. Probably best to use a bit of both solutions.

It is even better than the “retrieve UI from file” because you are able to work directly with the layout you are used to, instead of the one the last artist saved the scene with. It can also load the scenes WAY faster and it is more reliable.

Disable All Plugins Auto-load #

Pretty straightforward, I added a little script at the end of the article to do it automatically for all of them. It can speed up immensely the startup and the everyday use of Maya. Don’t forget to reactivate all the ones you really need, when you open a Maya scene it automatically loads the ones it needs.

Disable Copy/Paste of Maya objects #

Maya have a very hacky way of copy/pasting objects, instead of putting information in the clipboard, it exports them in a file on disk and imports it back when you paste it. The problem is that it can wreak havoc in your scenes… for example when you copy/paste text attributes, and you paste it in the viewport instead. It can even duplicate all nodes of your scenes if you don’t have the copy file on disk!
Disable those awful shortcuts in the Hotkey Editor and you are good to go (Windows > Settings > Hotkey Editor).

Restart Maya At Least Once A Day #

I can’t believe that I have to actually say that. It’s not meant to be used for consecutive days without being reset at a point, it can lead to a corrupt state and do crazy unreliable things.
Funny story, I once had an artist that couldn’t find its work on the network, it was always showing the one from the previous week. After some research in the asset manager nothing was wrong anywhere… the problem was that the artist didn’t restart Maya in more than a week! Maya was so messed up that it was saving to nowhere. A week worth of work for nothing.

If a scene takes a very long time to open and your studio use your computer process during the night for renders, all you could do is save your work at the end of the day and quit Maya, then let it take all night to open your scene in a new and clean Maya session… or just go to the coffee machine :D

Activate Infinite Undo #

Some animators reported to me that they ended up having bad performances with this after a while, but I doubt that’s a problem nowadays. If you feel like it’s a resource hug, just create a button to flush the undo queue: cmds.flushUndo()

Activate Incremental Save #

With that option each time you save your scene it will create a copy and version it in a subfolder. This way you will have the last X versions of your scene file. You still need to version it with another way, but it’s a good way to secure your most recent work and add a layer of security. See your main file versions as big steps in your work and incremental saves as your most recent versions.

It may be useless or even a bad thing to use depending of how your asset manager is made, check with your favourite TD beforehand. To activate it, you can find it in the options of File > Save Scene.

Increase The Number Of Last Open Files History #

This one is pretty basic, just because we usually open a lot of different files. Don’t forget you can invoke the recent files by right clicking on the open icon instead of going into the main menu.

Dock The Script Editor Window #

You can actually make every Maya window as a docking window. You can then integrate it on the side with the attribute editor or share the space with a viewport for example. Owen Burgess already made a great article about that.

This tip is not useful anymore since Maya 2018 and its fully dockable UI.

Activate Command Ports #

Command Ports let you send and receive information from other programs. One great way to develop is to get rid of the script editor altogether, to write your script and “execute” it from another software. This way you get all advantages of your favourite editor and it’s so much comfortable to use.

My Minimal UI
My Minimal UI

Script #

Put this little script in your userSetup.py to set everything automatically the first time Maya launches, or when preferences are deleted. This way you don’t have to think twice about deleting them and having to set everything again.

if not cmds.optionVar(exists="firstLaunch"):
    # Force Auto load all plugins to False
    pluginList = cmds.pluginInfo(query=True, listPlugins=True) or []
    for plugin in pluginList:
        cmds.pluginInfo(plugin, edit=True, autoload=False)

    cmds.undoInfo(state=True, infinity=True)
    cmds.optionVar(iv=("useSaveScenePanelConfig", 0))  # Disable the Save UI layout from scene
    cmds.optionVar(iv=("useScenePanelConfig", 0))  # Disable the Load UI layout from scene
    cmds.optionVar(iv=("undoIsInfinite", 1))
    cmds.optionVar(iv=("isIncrementalSaveEnabled", 1))
    cmds.optionVar(iv=("RecentBackupsMaxSize", 10 ))
    cmds.optionVar(iv=("RecentFilesMaxSize", 10))
    cmds.optionVar(iv=("RecentProjectsMaxSize", 10))
    cmds.hotkeySet('NoCopyPaste', current=True)  # Disable the copy/paste "functionnality" of Maya that wreaks havoc 
    cmds.hotkey(keyShortcut='c', ctrlModifier=True, name='')
    cmds.hotkey(keyShortcut='v', ctrlModifier=True, name='')
    cmds.optionVar(iv=("firstLaunch", 1))

try:
    cmds.commandPort(name=":7001", sourceType='mel')
    cmds.commandPort(name=":7002", sourceType='python')
except RuntimeError:
    pass