Dave Girard's 101 Autodesk® Maya® Tips is now available in Kindle, interactive iPad edition and DRM-free EPUB/PDF editions. Work faster, cry less. Read more about the ebook.

Follow cgbeige on Twitter

Topics by tag:

Recently published articles by Dave G:

Free downloads by Dave G:

Mac OS X-only downloads:

A Simple Fix for A Huge Increase in Performance with OS X and Large Maya Scenes

In my review of the 2013 Mac Pro, one of the biggest issue I had with the machine was the OpenGL performance and the showstopper was a set of videos that shows how bad the D700 GPUs perform with very large Maya scenes. Well, it turns out that this is due to a Maya bug – you’re surprised, I know – and there is a simple fix for Maya 2014. Just put this line in your Maya.env plain text file ( ~/Library/Preferences/Autodesk/maya/2014-x64/Maya.env):


That’s for the D700’s 6GB of VRAM. Obviously for your particular GPU, set it to whatever your GPU’s RAM is, or slightly lower if you want to be extra safe. Relaunch Maya and witness the result – a giant performance boost and near-parity with Windows performance:

Glad this was sorted out and this fix will be rolled into Maya 2015. Off to update the review…

3 notes | Permalink

How to Quickly Model a Scroll in Maya

I am making a quick money and bonds 3D illustration for a magazine layout and thought I’d show the fast method I used for the bond scroll. Install the Bonus Tools for your version of Maya because it relies on the spiral curve that is in there.

You don’t need to use a lattice deformer to do such a simple scale operation but it’s the first thing that I reach for when I do stuff like this because it adds a layer of procedural control if I want to add divisions and extra shaping to my sub-shape. If you want to add a bit of personality and squash to your scroll, use a squash deformer:

and here is my draft render (the scene is not finalized yet):

Total time for the scroll? Like four minutes. I will probably add some translucency to the material to get more pleasing bounces inside the scroll because it’s solid currently.

3 notes | Permalink

A Note About Setting Optimal V-Ray Settings for Distributed Rendering

It’s possible if you’re a V-Ray user that you’re wasting time when doing distributed rendering with V-Ray light caches. A while ago, I added a modification to V-Ray Tuner that prompts you if you hit the Optimize button when using distributed rendering is enabled. It will ask for the max threads of the machine with the most threads. While the final render will always use the right amount of threads for your slave, the light cache passes should be set to the max thread count for all machines. So if you have three machines in your DR list with the following configs:

machine 1: 6 cores/12threads
machine 2: 16 cores/32 threads
machine 3: 8 cores/16 threads

You should set the light cache passes to 32. Or just enter 32 in the Optimize prompt in V-Ray Tuner. This won’t cause issues for your machines with fewer cores/threads. If you aren’t using DR, it will set the LC passes and render settings to use the max threads for your host machine, without a prompt. Some people may be avoiding the Optimize button because they don’t want it screwing with your setup or scene but it just does this minimal setup. I also hate scripts that do mystical magic to your stuff to make it faster, leaving you to guess what it’s modified. Any feature in V-Ray Tuner that deals with quality will always be very clear about what it is changing so there are no surprises.

Stay tuned to read about V-Ray Tuner 4 features. I have added a bunch of things like a Distributed Render slave manager that should save people plenty of time when dealing with networked nodes.

0 notes | Permalink

A mental ray Batch Render Script to Work Around Batchrender’s OS X Mavericks Issue

I haven’t used mental ray in years and I have been doing batch renders with my V-Ray command line script that I wrote for V-Ray Tuner so I feel a little bad that I didn’t catch the incompatibility with Mavericks and Maya’s batch render application. So here is a mental ray version of my command line script that writes out a batch file that opens in the OS X Terminal and uses the Maya Render binary, not Maya batch, so it works fine with Mavericks. Just enter “commandLinerMR” in the MEL command line and it will render your current scene according to the file’s properties and animation settings length:

It also sets the thread flag to your max cores so you don’t have to configure it manually. It also works with Linux’s xterm window or Windows’ command prompt, so feel free to use it if you just want a way to view render progress in a terminal while rendering. If you want to edit the script to work with Arnold or another renderer, feel free. It’s pretty simple once you look at the code.

There’s no official word from Autodesk on when a fix is coming for the batch render and Mavericks. Hopefully there will be a service pack before 2015 is released because the new Mac Pro ships with Mavericks and that could affect a lot of Maya users.

2 notes | Permalink

Set the Default Timeline Frame Range to Something Reasonable in Maya

So, every once in a while you stumble on a tip from the Maya devs that you have to share. This one will bring great happiness to legions of Maya users: the ability to set the frame range for the time slider to something other than a max of 24, which is ludicrously low unless you are an animator of Vine videos. So, get your favourite plain text editor and open your userPrefs.mel file. On Mac, it’s in ~/Library/Preferences/Autodesk/maya/2014-x64/prefs/ so find the equivalent file in your user prefs folder in Windows and Linux. Find these lines:

and, with Maya quit, change them to:

to make the timeline end at 200. Relaunch Maya and boom:

7 notes | Permalink

Use a Gamma Correct Node to Burn and Dodge Alpha Transparency

I’m doing a scene with a bunch of simple cloud shadows cast over a valley and I’m using a plane with a repeating cloud texture mapped to the Opacity attribute of a V-Ray Mat. This will render a lot faster than doing a volumetric cloud and I also get the flexibility of using a gamma correct for the file texture node to effectively dodge and burn the cloud edges:

Since a gamma curve only adjusts your mid tones, this is a good way to save a trip to Photoshop and it’s lossless so it doesn’t mess up your original cloud texture. The results are pretty convincing too:

1 note | Permalink

Mari Me 1.1 Fixes Windows Texture Paths Issue and Adds New Stuff

Aside from the texture path bug for Windows machines that’s been fixed, I’ve been steadily adding things to Mari Me (Download) that I think will be welcome additions:

From the changelog:

  • Added ability to make scalar channels for new scenes. Extisting textures sent from Maya are always sent as gamma-correct RGB though, so if you want to change those, you’ll have to do it from Mari once it’s sent
  • Added bit depth option for channels
  • Added ability to send stuff to remote Mari host. Change the IP in the MEL file to your machine – it’s set to one of my Linux machines’ local IP. This requires that the paths be the same, so if you are sharing a Mac folder to Linux Mari host, you’ll need to mount shares to /Volumes/etc/ to mimic the paths on the Mac. It’s for this reason that there is no way to send to Windows machine from Linux or Mac because they don’t have a Unix style path structure. You could send from Win to Win but your shares would similarly have to be exactly the same path, which isn’t likely given drive letters. Microsoft needs to put a bullet in the head of those things because they are a constant issue when trying to make scripts for Windows
  • Added custom name option for created channels
  • Added Rename file nodes with filename script so it’s easier to navigate File Nodes list
  • Resized buttons because they were XBone huge
  • Fixed Windows paths for textures

Also, I’ve added a Utilities menu where I’ll start to add things that you’ll want to do inside of Maya for a workflow that involves Mari. Stuff like this UV Tile GUI to move and maximize UV shell space across UDIMs:

and I have put my AutoTileMe script in the Utils menu as well:

It now graphs the File node network at the end so you can see the structure and clearly know which to connect to your shader (the top one in the hierarchy).

Lastly, the Just Save OBJs script in the Utilities menu saves out an OBJ for selected objects to a project/GoZ folder for use with Mari (or ZBrush) with nothing sent to Mari. I’ll eventually update that to work with the smoothing and displacement options.

1 note | Permalink

OS X and Linux Users: Remove the .mayaSwatches and .vrayThumbs Folders With a Shell Script

Maya and V-Ray leave material swatch previews strewn throughout your system, so I clean these out all at once every once in a while. With this single terminal line in bash, on both OS X and Linux, you can make a script that will be ready to remove the folders for you. For .mayaSwatches:

find / -name ".mayaSwatches" -print | sed 's/.*/rm -rf "&"/g' > ~/Desktop/delete_mayaswatches.sh; chmod +x ~/Desktop/delete_mayaswatches.sh

and for .vrayThumbs:

find / -name ".vrayThumbs" -print | sed 's/.*/rm -rf "&"/g' > ~/Desktop/delete_vrayThumbs.sh; chmod +x ~/Desktop/delete_vrayThumbs.sh

It will bark about not having permission to read some directories since you’re not using sudo but you don’t want to do it for all users and you don’t need to comb system folders for this anyway. The script itself doesn’t do anything until you run it in the terminal, and you can open it in a text editor to verify that nothing harmful is done by it:

Nevertheless, this post comes with heaping portions of “use at your own risk.”

After you’re confident that it’s not going to nuke anything you don’t want to nuke, drag the script into the terminal window to run it. Wait for it to finish and those folders will be gone.

4 notes | Permalink

Mari Me 1.0 – A Send to Mari Script for Maya

So, after tiring of Mari’s new project panel and its non-OS version of its open dialog, I decided to make a script (Download here) that sends the selected mesh from Maya to Mari for painting. It has some nice options that I think will be welcome:

The features are shown in the video here:

If you don’t choose to send an existing texture, it will create a 50% grey “color” channel that is set to the resolution of the slider, which snaps to Mari’s supported resolutions.

I added the ability to send a tessellated and displaced mesh even though I know that Mari does displacement previews but these don’t use your actual values from your existing Maya model so this script creates a mesh that is closer to what will render. It’s not the best solution since the geometry can be really jaggy but it’s better than nothing. Just make sure you only run this displacement script on cage-type geometry because it smooths the mesh and then tessellates so it will extremely slow if it’s a already high-ish res mesh.

As you can see from the video, I originally made this script to send Python to the clipboard since I didn’t see any documentation for the command port that is used by Nuke to talk to Mari but there was an example script that showed that it receives straight Python. So my script does all the gross code escaping and wraps the Python commands in a single line and passes it to Mari.

To get the script to speak to Mari, you need to make sure that Mari’s command port is open to the default port of 6100. This is in the Scripts portion of the Mari preferences.

The only limitations to the script right now are that it needs to have a relatively simple material applied to the selected mesh – it will simply fail if you have a V-Ray Blend Mat applied to it, for example – a fix for this will come soonish. You also have to have a mesh selected when you run it. Also, textures are currently sent only as RGB, with no scalar option. This will come later and I’d like to add an auto-detect for the applied texture res for the slider. Tiled mats are not supported – obviously that is a dealbreaker for many but hopefully I can get that working some time in the future. I haven’t tested it in Windows or Linux but it should work fine. The exported meshes are stored in a project_path/GoZ/ folder because I didn’t want to create a different folder for OBJs that I use with my ZBrush meshes.


1 note | Permalink

Getting V-Ray Rect Lights to Show up in Maya’s Viewport 2

So it turns out that V-Ray Rectangular Lights use four spotlights to achieve their display in Maya’s viewport 2, so if you have some not showing up, jack up the supported light amount in viewport 2:

0 notes | Permalink