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:

Coming in V-Ray Tuner 2.2: Exposure Round-Tripping for Fast Lighting Tweaks

Some of you have probably seen me using the per-light rendering features of V-Ray Tuner, since it gives me a lot of control over a complex light setup without having to re-render, similar to Maxwell Render’s multilight feature. But, seeing it in action, you probably also thought to yourself “that seems slow and impractical for animation.” Well, I’ve finally implemented something I’ve been meaning to do to enable you to roll your exposure settings back into Maya from Nuke tweaks so that you can do a draft per-light rendering, hone your light balance and then take those exposure settings from Nuke or Photoshop and then input them to change each light’s value in Maya. Then you render a single final image that has perfect lighting. If you work on product shot type things, this workflow will save a ton of time in the long run:

In Nuke, you set the Exposure values to Stops to emulate F-stops, then adjust your exposure to make the lighting exactly as you want it and then, once you have a balance of lighting that you like, go back to Maya, select your V-Ray light and then run the Per-Light Render Exposure Tweak script from the Utilities menu and enter each exposure value into the field with the respective light selected.

As I mentioned above, it also works in Photoshop. Pick your per-light images in the File/Scripts/Load Images Into Stack dialog and they will all load into a layered document:

Set each layer to Linear Dodge (Add) and add a clipped Exposure adjustment to each (by alt clicking between the layer and the Exposure adjustment):

And the workflow is much the same as in Nuke:

That has the exact same exposure settings as the Nuke exposure and looks just like our final flat render. The cool thing about the Photoshop method is that you can flatten your Exposure tweaks into each layer and do another round of exposure edits without having to render out more per-light passes. Obviously, you need to use 32-bit renders for this to work effectively since 8- and 16-bit ones aren’t floating point and degrade with exposure edits.

I just need to update it to work with meshes and V-Ray Light Materials. Thanks go out to Will Earl who helped explain the math of the exposure conversion to me.

3 notes | Permalink

3D Image Breakdown: Per-light Comp of 3D Illustration

I’m just putting the final touches on this 3D illustration and thought I’d show how I used the per-light rendering feature of V-Ray Tuner to render out light passes for all lights and the meshes with V-Ray Light Materials. This lets me really tweak the light contribution within Nuke (or Photoshop) for a well-honed studio lighting feel.

It also lets me add some roto tweaks to give the window reflections a more interesting reflection, instead of just white. That way I don’t spend too much time on trying to get my environment reflection to do that job.

Just have to touch up the ground and some small spots and it’s all done and ready for print. It may look lighter than it should on your screen because my monitors are set on a darker press-simulated setup (5000K white and 75cd/m^2 brightness).

I’ll be doing more talking about the other techniques used in the illustration over the next week or so.

1 note | Permalink

V-Ray Tuner 2.1 Adds Windows Compatibility to Batch Rendering with Sleep Options

Just posted V-Ray Tuner 2.1 update to Creative Crash. This version adds support for command line region rendering on both OS X and Windows:

This works with animation frame range settings to make it easy to render out a crop of your animation from the selected area in the Maya render view (not the VFB). That also has a “sleep computer after render” option, which now works with Windows (tested in a virtual machine here):

Sssh…he’s sleeping. The idea behind the command liner batch rendering is that you can jack up your anti-aliasing settings (without saving that to the file) for a late-night test render and have the machine sleep when done. When you wake up the machine in the morning, your region or complete render is done high-quality and you don’t have to set the scene back to draft quality anti-aliasing settings. It’s like a cheap job manager.

Other small changes:

  • Show Samples checkbox is now replaced with Displacements toggle, since this is more likely to be something you’d want to toggle for quick renders.
  • Added a Material script to name V-Ray Material according to the name of the File in the color slot (Filename sans extension + _Vray).

1 note | Permalink

V-Ray Tuner 2.0.9 Adds Automatic Colour ID Script for Compositing

I am working on a 3D illustration that’s going to need some separate tweaks on different elements and I do this with a colour ID pass as masks within Nuke. So I thought I’d take this opportunity to automate the process of making colour IDs for materials and added it to V-Ray Tuner. Select the objects you want to have IDs and the script divides the RGB hue spectrum into as many parts as there are selected objects (you don’t need to select objects with redundant materials) and then assigns those colours to the newly-created material colour ID:

Because the script uses the total number of selected objects to assign colour IDs, it’s best to do this operation only once. If you want to add more colour IDs to objects later, do it manually to assign a colour value you know is different from what’s been assigned already. Some scripts assign a random value on a spectrum ramp to get a similar behaviour but I prefer my method since it guarantees that the colours will be as far apart as possible. When keying out colours, you’ll have less issues that way.

I also made some small changes to other parts of V-Ray Tuner:

  • In ShellacMe script, linked value of coat bump to the value of the base material bump. Saves time jumping back and forth.
  • ShellacMe now names BlendMaterial with base material name + _FresnelBlendMat instead of mesh name.
  • Command liner works with spaces in names of paths (still Mac-only)

V-Ray Tuner now has over 2000 downloads and a rating of 4.5/5 stars. Looks like people are enjoying it. It will stay free since there are plenty of scripts out there that do a lot more for free. It’s my way of giving back to the Maya scene – my scripts folder has over 300 files in it and only about 10 of those are mine and only a few are for-pay scripts. Maya may not be perfect but it has a huge library of awesome and free tools that just can’t be matched.

2 notes | Permalink

V-Ray Tuner 2.0.8 Posted for Download

Updated V-Ray Tuner (click for download) with some little touches:

Added Shellac Me script to Materials to wrap currently selected meshes in a BlendMat / Fresnel shader for clearcoat wood/ceramic glaze type setup.

Added Send to Command Line Render/Send to Command Line Render and Sleep script to Utilities.

This is like a pseudo job manager since it sends the disk file to render with currently active values of dmcThreshold, dmcs_adaptiveAmount, dmcs_adaptiveThreshold, dmcMaxSubdivs, dmcMinSubdivs, and current resolution. Only supported on OS X currently. This is just my personal tool being shared and it will be ported to Windows eventually.

Added unlock camera script to utilities. This removes the lock for selected cameras, so they can be deleted.

Updated all menu items to accurately reflect checkbox states, where applicable.

0 notes | Permalink

Linearize Selected Nodes and File Node Rename added to V-Ray Tuner

You can grab the updated V-Ray Tuner from it’s download page on Creative Crash.

1 note | Permalink

Rename Selected Maya File Nodes With Disk File Name MEL Script

I’m going to be adding to the next version of V-Ray Tuner but I thought I’d post this script for people who might want it for other renderers. It’s a script to rename selected File nodes according to their name on the disk, sans file extension:

Here’s the script - install into your Maya scripts folder and run “renameWithFilename” with any and all Files nodes selected. The script ignores other node types if you want to select everything in the Hypershade Textures panel.

1 note | Permalink

Script to Use V-Ray RT as Maya Multi-frame Renderer

Someone asked whether it was possible to use V-Ray RT as a playblast renderer in Maya so I looked into it. The always-helpful guys at Chaos Group got back to me instantly with a script to call in the “RT Image Ready” MEL callback in the Render Globals. I updated it to append the frame number with padding, made it write to a VRayRT_Playblast” folder and it’s been rolled into V-Ray Tuner. Check it out:

You have to set the first frame in the timeline, set your max frame render time in the RT Engine Settings. You’ll have to use a program like QuickTime Pro to make a movie file out of the frames, or jus load the sequence into Nuke or After Effects. Also, make sure to clear the RT Image Ready MEL after using or IPR renders will run the script (the bottom field should be blank):

I’ll work on clearing that automatically on cancel or completion.

1 note | Permalink

OBJ Render Problem Warning - You Need This

Even after years of knowing to keep this in mind, I invariably find myself forgetting to enable reflections and refractions for OBJ meshes that have been imported into Maya. There is a longstanding bug (or at least an annoying default behaviour) where imported OBJ meshes have their reflection and refraction flags turned off. You have to turn these on for every object or else you won’t get reflections and refractions. Considering how prevalent OBJ files are as a go-between for apps like Headus UV Layout, Mudbox, ZBrush, etc., that’s a pretty bad problem. So, to save myself wasted time, I added this MEL script to my Render button in V-Ray Tuner. Grab the code here. Put it in your scripts folder and run it with “source render_with_warn.mel;”

It won’t prevent any rendering, but it will give me a warning that it found a mesh with the .visibleInReflections set to 0 and select the meshes. See it in action with a demo of the problem:

So, either grab the latest V-Ray Tuner from here or add that code bit to a shelf item for use with your renderer (this is also a problem with Maya Software, mental ray, etc.)

Update: someone was asking for a version of the script that would automatically turn those back on for all meshes, instead of just issue a warning. Here is a version of that script above that turns the flags on automatically before rendering. Run it with “source auto_fix_render;” If you know you don’t need those off for any mesh, it’s fine to use – otherwise, I’d recommend just run this script on the selected objects if you’re confident they should be visible.Drop it in scripts and run it with “objRenderFixer;

0 notes | Permalink

V-Ray Tuner 2 released – Updated for V-Ray for Maya 2.0

It’s done! After many new things being added and a serious upgrade of both my knowledge of V-Ray and my MEL skills, it’s a big improvement over the last version and includes many things specifically for V-Ray for Maya 2.0, which just went into public beta testing for people who pre-ordered it. Grab it here. The major changes are:

  • Added per-light pass rendering script. More on this below.
  • Made a material converter for V-Ray for Maya to V-Ray for Max (see end of this post).
  • Added sync light size and target rect lights buttons.
  • Added a bunch of little feedback things like GI readout on load/refresh and resolution settings. Lots of hot help added so look at the Help line and Script Editor feedback for new stuff.
  • Option to load V-Ray plug-in if it’s not loaded.
  • Quick LWFMe button to set up a linear workflow in one click.
  • Launch IMap Viewer from Utilities menu.
  • Added padding to right so scroll bar doesn’t crop in by default
  • Made menus with lots of stuff to save space.
  • Added another row of checkbox controls to some common features for animators. To keep it less confusing, I organized these logically in vertical rows according to areas they affect (DMC, Linear Workflow, etc).
  • Added LightMaps menu to give quick access to disk cache modes for Irradiance Map and Light Cache for animators. You need to set up the cache file paths first and then these work as expected. Feedback about which is active is given if you hit Refresh or change one of the menu settings.
  • Various V-Ray RT specific items added.
  • Added Maya2VRay material converter. All code for this written and supported by Paul Dreisen paul@dryzen.com. Thanks again, Paul.
  • Increased Max AA DMC samples slider for those using high values with Nederhorst settings or very high DMC adaptation.
  • Option to load Console.app from Utilities for render feedback for Mac OS X. In Windows, this is the Output Window (it was created because there is no stdout for Windows). Unfortunately, since there are so many different distros for Linux, there’s no way to pick one file that I can launch on Linux, so this is OS X only.
  • Updated Attach Cam procedure for V-Ray 2. It probably won’t work with 1.5 now.

Per-Light Rendering

This was created as an imitation of Maxwell Render’s Multilight, since I also use Maxwell and love that feature. The script goes through your scene and renders out a file for each of your visible V-Ray lights (don’t use Maya lights with V-Ray if you’re new to V-Ray) and saves them according to the light name (Dome, VraySun, environments included). The naming part is the reason for the Render Globals window opening (leave that open until it’s done). If you have meshes with V-Ray Light Materials in your scene, you simply have to select those before running the PerLightRender script and it will work with those as well:

For those unfamiliar with Maxwell’s Multilight or you’re having a hard time picturing this in a workflow, here’s a quick demo of how you would use it for still images as a “render once and tweak lights without re-rendering” scenario. I often use this when I don’t care to finalize the actual scene lights to perfection just to get a nicely lit image with a lot of lights (In the beginning of the movie, I’m just changing a bunch of stuff quickly to get rendering working faster and fixing my scaled lights):

It’s also a handy way to check light contribution since it can often be unclear what light is doing what within your scene. This method also works with global illumination, unlike the V-Ray 2 Light Select Render Element. You have to render to a 32-bit format for it to store light in floating point, so keep that in mind. The script also turns render elements off before rendering the lights, so you don’t get an absolute ton of images you don’t need (it restores your current render element on/off setting when it’s done). Photoshop and After Effects users, use Linear Dodge (Add) for compositing the layers.

The only limitation to this Per Light Rendering script is that the new V-Ray Material Self Illumination parameter is not checked and it also doesn’t check if you have a V-Ray Light Material in a Blend Material so if you are using those, it will render each frame with those in it, compounding improperly when you comp them. Nothing is changed in your scene, so don’t be scared to use this or the DaveBake420 script.

Target Light and Sync Light Size

Here’s a quick video showing these two button features:

DaveBake420 Script

This was added to 1.7.3 but I thought I’d quickly show it here for people who don’t know what it does:

I’ve used this script a lot already for making ambient occlusion textures for scene objects. It was used for my building, ground and planes in this illustration. Also, works well with my GoP script since that sends objects to Photoshop with the name as well.

The MaxScript V-Ray material converter is not ready for Windows/Linux. A Python port is being worked on so I hope to have that integrated in an update soon.

If this is the first time you’re using V-Ray Tuner and you’re wondering why it doesn’t connect attributes when scenes load, hit the Refresh button. This also acts as a way to read out your current scene’s V-Ray info that is also new:

V-Ray Info: Primary Engine is Irradiance Map, Secondary Engine is Light Cache. Lightmaps: IMap: Single Frame / Light Cache: Single Frame

Also, I want to change the menus to use checkboxes but these trip the script if your scene isn’t loaded and it tries to read non-existent nodes that V-Ray hasn’t created yet. Anyway, enjoy and, if you want to thank me for this script, find the nearest pug and pat him or her on the head. Mine’s waiting to be walked while I type this.

Update: the MaxScript converter now uses MEL so all you have to do is select the material, run the converter from the Materials dropdown and the MaxScript code is output to the Script Editor for copying and pasting into Max.

4 notes | Permalink