David Gould is currently a Technical Director at Weta Digital in New Zealand working on The Lord of the Rings. With over a decade of experience in the computer graphics industry, David Gould has pursued the dual paths of programmer and artist. He is the author of the book "Complete Maya Programming" and is also the developer behind the Illustrate! cel-shader plugin for 3ds max, which has been used in numerous productions including Ghost in the Shell: Stand Alone Complex.
Dmitry Shklyar: First of all, I would like to thank you for generously providing your insights to the CG community.
Could you please start off by introducing yourself and giving us a little background information pertaining to how you got to where you are today?
David Gould: I've been working in the CG industry for over a decade now. I'm one of those strange people that delve into both the artistic and technical sides of the work. While most people have a strong preference for one "side" or the other I really enjoy working in both. In fact I try to spend an equal amount of time using the tools as an artist and developing them as a programmer. Having experience as an artist is incredibly important for my programming work. Too often a programmer doesn't really know how an artist works and this is reflected by the disparity between the tool and its usefulness to the artist. What seems logical to the programmer is often illogical to the artist and vice versa. I've seen software that is very clean and elegant from a purely programming point of view but is almost unusable since it doesn't cater to the artists needs.
When developing Maya scripts and plugins
it is particularly important to understand the Maya workflow. A Maya user
can be sure that the standard tools work in a consistent way. Often when
a programmer who has no Maya experience writes plugins, they design it
based on what approach they feel is best. The end user will be working
along steadily then when they use this new plugin they often have to mentally
change gears to use it. It slows everyone up and makes things unnecessarily
complicated. For this reason it is important for programmers to learn
how to use Maya. They should work on a shot and see how things are done.
Only then will they understand where their new technology will best benefit
Dmitry Shklyar: Did you start writing
this book before or after beginning work for Weta Digital? If it is the
Instead I have included a complete list of good introductory programming books in the appendix. With just some basic C++ experience the reader can then delve into the C++ API chapters. They start with very basic examples and then extend those examples into a complete plugin. The later chapters cover some of the different types of nodes (deformers, locators, etc) you can develop.
I consider the book more as a guide rather than a reference, though it
also serves that purpose. I keep a copy on my desk and often use it to
look up the name and syntax of a function. The subject index was meticulously
written to make finding particular commands and topics as easy as possible.
Dmitry Shklyar: Are you planning a supplement/sequel
to your book which will offer readers advanced lessons pertaining to scripting
As for technical pitfalls, it is important to remember
that although MEL resembles the C language it is different enough to cause
some confusion. It is for this reason that I wrote an appendix explaining
the differences between the two languages. This will save a lot of headaches
when MEL doesn't quite work as you may have expected. MEL scripts are,
for the most part, operating system independent. This means that your
script should run without problem on all the Maya supported operating
systems, currently Irix, Linux, Windows, and Mac OS X. It is important
however to understand that there are sometimes subtle differences. The
Linux version of Maya doesn't support all the image formats that the Windows
version does. The format of directory paths are often different between
operating systems. If you are having problems running your scripts on
different operating systems be sure to look at the command reference documents
Dmitry Shklyar: It is my understanding that you
have done extensive work with 3dsMax. Is there a reason you chose to focus
on writing a book about Maya instead of Max?
This can catch you out if you aren't aware of this. MEL
also lacks a lot of the more advanced string processing and file management
features. Unfortunately Alias | Wavefront haven't addressed a lot of these
issues. It would seem that Alias | Wavefront aren't considering extending
and improving the language beyond its current form.
Dmitry Shklyar: How has your work at Weta affected
your development as a programmer and digital artist?
Always be prepared to learn new ways and approaches. It
is discouraging to see experienced programmers/TDs who get stuck in their
ways. There are always different ways of a tackling a problem and while
you may think you have the best solution chances are you don't. The more
diverse your knowledge the better equipped you'll be to tackle the problems
as they arise. If there is any guarantee in production it is that you
will always be faced with problems and situations you've never dealt with
before. Having a good foundation in mathematics and programming will get
you most of the way. Did I mention you'll also need a lot of elbow grease
and stubborn persistence?