The blog born of 3D humping its 2-dimensional cousin. Dave Girard teaches you how to make Maya, Photoshop, ZBrush, typography and photography make sweet, sweet love. With some Mac and Unix stuff thrown in for good measure.
Check out my portfolio site at www.can-con.ca or email me.
Topics by tag:
Recently published articles by Dave G:
This post has been on the back burner – my desktop – for a while, so it is with great pride I hit publish on this bad boy. The trick to overcoming procrastination: pretend someone’s telling you to slack off and suddenly work becomes that much more appealing! Anyway, on to the post. When doing 3D, in any renderer, I use very traditional studio photography techniques to create appealing lighting and most of this centres around reflector cards (things that bounce light) and gobos (things that block light). 3D renderings are often dull due to uncreative lighting, not poor modelling and novice to intermediate level 3D artists struggle with this the most since it involves thinking like a photographer.
The basic reasoning behind using a reflector card is that it gives more interesting reflections and bounces light back on objects without creating additional lights, which some people like to use but I find unneeded and just adds to render times. I’ve art directed a lot of product photo shoots and 60% of the time at a shoot is just watching the photographer move white cards and gobos to create the most interesting reflections and refractions. Some examples:


Getting that balance of stark light falloff and subtle gradations is done with a masterful handling of reflectors and gobos. In my still renders, these are key to making the objects look interesting and appealing. This can scene is a pretty simple anisotropic reflection with lots of controlled reflections and lights:

The lighting and reflectors (click for high res):
Even for scenes that don’t need that kind of dramatic product delineation, mixed-colour reflectors create the illusion of environment and add needed variation to surfaces. The renders below shows the roof without any reflectors and the bottom with some hidden reflectors:

That’s using the same lighting – only the reflectors have changed. It’s a huge difference and it’s very easy to do. Make a plane with a diffuse Ward Lambert material (almost pure white, black or coloured) place it so that light is bouncing how you want it relative to the camera (incident rays) and turn off primary visibility and Casts/Receives Shadows in the Render flags of the shape node for the plane:

That way, the reflectors don’t create shadows and they don’t appear in the renders. They will still affects ambient occlusion (V-Ray Dirt ExtraTex passes) though, so you’ll need to turn that off for AO passes with exclusion sets. After that, you’re good. Experiment with coloured reflectors – often these will add interesting elements to your reflections, like the red touches on the conveyor belt with the woman’s shoe here:

That’s a concept/shoot/rendering that I art directed and planned for enRoute magazine. The photography is by Jaime Leblanc.
If you’re interested in learning more studio photography techniques that will help improve your lighting and rendering, the book Light: Science & Magic is excellent.
5 notes | Permalink
Back from vacation. Had a great time in Berlin and Amsterdam (where this shot is from).
0 notes | Permalink
So here are the downloads for the multithreaded Python image converters and multithreaded rar/unrar scripts I made yesterday. You’ll need Python 3.2 to run them, since they rely on the concurrent.futures module from 3.2. Grab the installer here: http://www.python.org/getit/releases/3.2/. The Mac installer doesn’t overwrite your existing 2.7.1 Python install so you invoke the new python by typing “python3” in the Terminal.
The .py scripts:sips_PNG This uses sips in OS X for conversion, so if you’re looking to use it in Linux, you’ll probably want to rewrite the last line of def sipper to use Imagemagick’s convert or something built-in.
unrar_threaded This should work in Linux without modification.
rar_threaded This should work in Linux without modification.
How to run the scripts: these take a batch of paths to items from standard input and then process them, so the easiest way to run them is to type “find /path/to/images/ | python3 path/to/sips_threaded.py” or “find /path/to/whattocompress | python3 path/to/rar_threaded.py”
For OS X only – Automator workflows
First, the sips conversion workflow files (PNG, TIF, TGA, PSD, JPG). If you just want something to make image conversion fast and easy in OS X, I made Automator services for OS X 10.7 (might work in 10.6) that don’t depend on the terminal or the scripts:
Grab them here: Download here. The only catch is that these Automator workflows require that you make Python 3.2 the default version run when typing “python” in the terminal. That’s done by writing this in the terminal:
sudo cp /usr/local/bin/python3 /usr/bin/python
The good news is that this isn’t destructive since /usr/bin/python was just a duplicate of /usr/bin/python2.7. /usr/bin/ still has Python 2.7, 2.6, and 2.5 from the default OS X install, so I can still use older versions of those by typing “python2.7”.
rar/unrar multithreaded:
20 notes | Permalink
I’m just starting to learn Python – like it’s been a week now – and my first script was a port of my bash shell script that takes an image list from standard input and sends to to sips (fast QuickTime image conversion built into OS X) for conversion. It was easy enough and I am liking the language for sure. When I started my second Python script, I thought I was setting the bar too high – I wanted to multithread this conversion operation so that it uses all CPU cores by spawning a sips instance for each core. sips isn’t multithreaded so this is the only way to get it to use all the hyper-threaded cores in my 12-core Westmere Mac Pro. After getting pointed in the right direction by Python pipeline TD Luke Olson, I was told that Python 3.2 makes it much easier to do this type of thing, and he was right. If you’ve heard of Grand Central Dispatch, Mac OS X 10.6 and above’s thread pooling technology, Python 3.2 ProcessPoolExecutor works much the same way, at least as far as ease of implementation is concerned. I’m a guy who knows ridiculously little about programming but I am now up running after a day of tinkering with a multithreaded script:
You can tell from the video that there is some weirdness to the concurrency - it seems to complete the batch of 24 before starting the next batch, but I don’t know enough about how it’s working to know if that’s just a limitation of process pooling in Python 3.2 or my mistake. Anyway, it’s an exciting start and I’ll be rolling these scripts into Automator actions and free Python scripts to post after I sort out the name filtering.
2 notes | Permalink
Since publishing and Photoshop was my love before 3D, I have a lot of workflows that I miss in Maya that I have in a lot of Adobe apps, and one of those is the Save a Copy feature. While working, you’ll often have something that’s not finalized but maybe you like how it’s looking or it’s a milestone that’s important to save and Save a Copy lets you save a named version while still working on the main file (if you hit save again later, it saves with the original name, not the Save a Copy name).
In Maya, you might be about to clean up your weights so it’s possible you’ll screw stuff up, or a pose or composition may look cool, so you want the option of rolling back to that exact moment. Autosave and nameless versioning doesn’t do anything to tell you what’s in that file so the SaveACopy script prompts you to make a version of your file and appends the info you enter in the prompt to the name of the file:
The file was called versionMe in the video but it’s now called saveACopy and is loaded by entering “saveACopy;” in the MEL command line or Script Editor. I put it in a command-alt-S hotkey so it acts just like Photoshop or Illustrator’s Save a Copy feature. The script doesn’t do anything dangerous and is completely cross-platform since it only uses MEL/Maya commands to toggle a new name, save a file with that name, then set the name back to the original. It’s actually really basic and the only limitation is that it assumes you don’t have any dots (.) in your folder or file names since it takes “name” from “name.ma” or “name.mb”, assuming that the dot separates the extension from the name. It’s a bad habit to name files or folders with periods, so if you’re used to doing that, you should use underscores (_) instead of those periods. The script works fine with spaces in directories or names. Grab it here and tell Autosave that you met someone new, but you can still be friends.
0 notes | Permalink
I just got through a rather crazy few weeks of magazine production and I’ve got some time now, as I babysit the PDF uploads, to talk about some techniques for making your work easier in a similar case of do-or-die. I was brought in to take over art direction for a magazine that was dangerously close to the deadline and I had to use some efficient techniques and tools, some that I scripted, to keep from missing a barrage of tight deadlines. I know most of my readers are 3D artists so I’ll make this relevant to you guys thinking this is just about print design stuff. Aside from the workflow tips, which are Mac and Unix user-oriented, the CMYK and colour gamut info is relevant to everyone, and important to know since it will affect the quality of the work you submit to publications if you’re a 3D artist.
Dropbox, upgraded
To speed up the approval process, I mad an Automator workflow to move files to my Public Dropbox folder and then send all the links to the clipboard for emailing. The built-in Dropbox plug-in only copies one document link at a time so this killed two birds with a big giant rock – web-res PDF files moved and all links copied for my email:
Grab the Automator workflow here and replace the part before “/Public” with your account number and you’re good to go. If you’d rather have it copy instead of move, just replace “mv” in the script with “cp”.
Finder labels for change tracking
If you’re a long-time Mac user, you’ll know the value of Finder labels. If you’re new to Macs, start using them and you’ll wonder how you managed without them before. They are a simple and effective way of tracking to-dos:

If you’re working off of a server with multiple people on a project, put a screenshot of your label guide in the folder and suddenly everyone knows the status of all folders and files. Great for bringing in last-minute help when there’s a crunch.
You’re not doing anyone any favours by sending them CMYK images
Keep everything in RGB mode. For our magazine workflow, we send everything to press as high-res CMYK PDFs but I leave everything in RGB in the layouts and it’s actually much better to do this to get the best quality. Images should never be adjusted in CMYK mode, unless it’s an illustration where you need specific values looked up in a book or chart. We almost always have to tweak the balance, contrast and curves for images destined for press because what others see on their screens is very different from what press-calibrated settings look like. My calibrated NEC Spectraviews are set up for a very low luminance and 5000K white point for press (yes, it looks like ass), on top of being hardware calibrated. CMYK is a destination, not a good working colour space and the gamut is very small compared to AdobeRGB (or even sRGB). Here is a Colorsync Utility plot of a US sheet-feed coated CMYK profile inside AdobeRGB:

That’s a lot of colour info missing in that white area.
When I have to adjust an image, I might convert it back to RGB for drastic changes because adjusting image balance is not like adjusting CMYK values, that should always be left at your conversion settings for optimum ink density. So, if a photographer sends me an image in CMYK mode, they’ve effectively tossed away a lot of colour information needlessly, then had a lossy adjustment (curves, contrast, etc) on a smaller-gamut image, which further degrades the image and then had it converted back to CMYK. Leaving it in RGB mode for every stage, right up until they are made into CMYK PDFs for press by Indesign, means I can adjust after I get my proofs and always have the best quality possible. It also means I don’t have to manually change images to CMYK mode, saving time. So, if you’re sending your 3D illustration to a magazine for a portfolio submission, always send them an RGB image (8-bit, usually) and embed the colour profile. If you want to be extra anal about how it looks, send a colour proof they can try to match, because sRGB or AdobeRGB profiles don’t tell them anything about white point (Kelvin) or luminance. A colour profile alone is not enough to guarantee your work will be seen the same on someone else’s end – it’s just a colour look-up-table (a palette) and a gamma value.
Symlinks to the rescue
When it came time to leave my home office and head to the publishing company for proofreading and corrections, I had to put everything on my laptop. The problem is that this breaks the image links in Indesign, because they are absolute (not relative) paths. You can work around this by putting all the images in the folder with the layout but that’s a mess, so I used a symlink to fake a link to the original volume. The layout files were looking for images in /Volumes/HOME_RAID/WORK/Tourism_Toronto/ but all the layouts are in /Users/beige/WORK/Tourism_Toronto/ so I opened the terminal on my MacBook Pro and did the following commands:
sudo mkdir /Volumes/HOME_RAID
sudo mkdir /Volumes/HOME_RAID/WORK/
sudo ln -s /Users/beige/WORK/Tourism_Toronto/ /Volumes/HOME_RAID/WORK/Tourism_Toronto
The first command makes a folder in the Volumes folder. The second makes the WORK folder in there and the last command is the creation of a symlink in the WORK folder that links to the copied Tourism_Toronto folder. Once I open the layout in Indesign, all the image links work since it is simply redirected at the OS level to look in the copied folder and the absolute paths work fine. The I’ve used this in the past with V-Ray network renderings that were looking for similar absolute paths to textures and it works perfectly and there’s no risk to doing it. If you mount the actual real volume later, it just does what OS X used to do when you accidentally disconnected/reconnected a volume – it appends a -1 on the volume name so nothing is overwritten:

Just delete the HOME_RAID folder from the Volumes folder and it will mount normally:

That saved a lot of time.
Indesign tools for maximum awesome
If you’re an Indesign user and need to do very specifically named, single-page PDFs for press, Zevrix Batch Output (now Output Factory) is great and their Link Optimizer helped me swap out giant JPEGs for perfectly-scaled TIFFs. It saved a ton of time that otherwise would have been spent doing manual conversions/resizing/placement.
Anyway, you can tell that I’m a bit of a workflow nut but, if you are efficient at what you do, and become known as someone who will get your clients out of a ridiculous deadline unscathed, you can charge more and they won’t balk at the price tag because they know it will be done right – you’re Mr. Wolf from Pulp Fiction. For a freelancer, having a reputation as a reliable and efficient professional, in any field, is critical. Word travels fast when you have a bad reputation, so don’t let that happen, no matter how crappy the gig. Anyway, hope these tips prove helpful to others on brutal deadlines.
1 note | Permalink
Maya doesn’t have a “Revert to Saved” menu item but most people know to just pick the file name in the recent docs and it will open the recent document again from the disk. The problem with that is there’s always the danger you can save over the document when it prompts you to close the current scene. So I wrote a simple script to Revert to Saved and there’s no danger of overwriting the original:
Grab the script here and run it by entering “revertToSaved;” in the MEL command line. Save that command to a shelf item for quick access.
0 notes | Permalink

Last night I downloaded what looked like a great muscle reference for the iPad/iPhone but I’m pretty disappointed by what I got. Here’s the review lifted from my iTunes review (2/5 stars):
I’m a CG artist who has done plenty of life drawing and anatomy studies and I thought this would be a lot more help than it is. There are three poses that are basically the same: standing, barely-different poses that don’t show how most muscles change in drastic poses. The lower abdomen and pubis area are a mushy plate of something that’s not realistic. I know why the author did so few poses though - because he would have to do exactly what I’m doing now: deal with a complex deformations beyond what’s capable with just diffuse/normal texture maps and a solid shell mesh. Basically he’s selling a decent portfolio model and a cool tech demo with interactive lighting, not a great reference for professionals. I’m building a male nude rig with muscle deformations in Maya now and if I wanted to have a decent reference for how the the deltoids and the obliques look when the arms are posed straight up, this wouldn’t be much help and I’d still be using Google images and 3D.sk images for reference. It also crashes a lot - like 7 times in two days. Won’t be buying the female one and I doubt I’ll be using the app much either.
It’s a shame - I wanted to like this and wouldn’t have any problem paying $4 for a good tool. As it is, I’d rather have spent $10 on a series of high-res photographs of real muscles in different poses. This offers much less reference material than my beat up copy of Bridgman’s Life Drawing.
2 notes | Permalink
One of new constraints added in Maya 2011 was the Point on Poly constraint. This was added to make it easier to do things like pin buttons to a character’s clothing while avoiding things like expressions that can really slow a scene down when you add a bunch. It’s also a very handy way of forcing landscape objects to constrain to the Y-axis position of a vertex while shaping ground:
If you’re finding that the mesh isn’t sticking to the ground well, just change the pivot of the pinned mesh and it will slide around while still retaining the constraint. If you use ZBrush or Mudbox for landscaping, just import the edited base mesh and add it as a blend shape to keep the constraint and the sculpted form.
3 notes | Permalink
Just a note that my review of Blow Up 3, custom upscaling software for OS X and Windows, is on Macworld. Good software for sure, but I still prefer Photozoom Pro 4, which I use a lot for my canvas prints.
9 notes | Permalink