The high-end graphics application used by animators in recent films has a new Linux offering.
Universal Pictures' Captain Corelli's Mandolin and Paramount Pictures' Enemy at the Gates both feature combat scenes with Stuka dive bombers, despite there being no flying Stukas in the world today. The Stukas flying in both of these summer movies are the creations of 3-D animators using Linux and Alias|Wavefront Maya at Double Negative, a division of Universal in London. Maya is a professional 3-D software package for creating digital content for movies, television and computer games. In the film industry, Maya is used for everything from photorealistic effects including Columbia Pictures' Final Fantasy: The Spirits Within to classic cel animation including DreamWorks SKG's The Road to Eldorado and The Prince of Egypt. Linus Torvalds described Maya 3 as “the most complex and powerful 3-D graphics application ever to run on Linux.” In this article, I review installing and using Linux Maya 4, point out resources on the Web of interest to Maya animators and interview the team who ported Maya to Linux.
Maya 1 was first released in 1998 on SGI IRIX, where it is considered a killer application. In fact, Alias|Wavefront is a division of SGI. Maya for Windows NT2000 first appeared in 1999, and the first Linux version was Maya 3, released in March with support for Red Hat Linux. My installation won't be on the typical Red Hat but rather on Debian Woody with kernel 2.4.7. My hardware configuration is a homebrew Athlon 1.2GHZ, ASUS A7A266 motherboard, 256MB DDR, with 100GB of 7,200RPM IDE disk drives. For graphics we're running XFree86 4.1.0 with its accelerated open-source DRI driver on an ATI ALL-IN-WONDER RADEON. Building and installing 4.1.0 with the accelerated RADEON driver is a story of its own—to be covered next month.
Improvements in Maya 4 include enhancements, optimizations and bugfixes. It has a new 3-D paint system. Changes were made to rendering, character animation, brush-and-paint tools, and games-related functionality. Enhancements to the Maya nonlinear, motion-editing technology include time warping, character merging, drag-and-drop, and character set editing. New character animation features include switching between forward kinematics and inversion kinematics, quaternion-based IK, motion trails, ghosting and a jiggle deformer to wobble character muscles. What that means in English is that it has every feature you can think of for an animation package and then some.
As commercial software for professional animators, Maya is priced accordingly. Maya Builder is $2,995 US, Maya Complete is $7,580 and Maya Unlimited is $16,000. A free 30-day evaluation period is available, and students are offered a half-price discount. Builder is configured primarily for game developers. It contains full-polygonal modeling, UV toolset (for working with textures) and basic animation features including path, scaling, keyframing, plus some of the deformation tools, some of the IK solvers (for realistic motion) and the full API. Builder provides no renderer because games have their own engine. By the way, most film animators use Pixar's RenderMan software for rendering their final output. Complete is Builder plus NURBS tools, all animation and IK tools, plus unlimited rendering. Unlimited is Complete plus Fur, Cloth and Live (camera extraction for match-moving mattes with live action). Before starting Maya you need to enter a separately provided serial number based on your machine's unique Ethernet MAC address into the license manager.
Linux Maya Unlimited is provided as a set of RPM files, about 143MB in the Maya 4 prerelease package I received. For Debian, we of course need deb files and not RPM. This provided an opportunity for me to try the package-converter Alien. Author Joey Hess says, “Alien converts between the rpm, deb, Stampede slp and Slackware tgz file formats. If you want to use a package from another distribution than the one you have installed on your system, you can use alien to convert it to your preferred package format and install it.” Alien is GPL and a package included with Debian.
I used the syntax alien -k package_name.rpm for Alien. When I ran Alien against Maya it created a deb but also generated a bunch of warnings of the form:
dpkg-shlibdeps: warning: format of maya_lib_name.so is not recognized
where maya_lib_name.so was each of the shared libraries included with Maya. When I tried launching Maya it terminated, unable to find its shared libraries. Hess quickly set it right, “It's possible that the libraries are installed, but the necessary symlinks to let ldconfig find them are not installed.” He suggested manually running ldconfig, which did the trick. Besides running ldconfig -v /usr/aw/maya4.0/lib, I also added that directory name to my /etc/ld.so.conf file.
Maya is a large application and needs some time to load its plugins. Like the popular Linux image editor, the GIMP, it takes a while to load, but once it's up, it's fast. After Maya is loaded, you are presented with a grid plane in 3-D space. The functionality of Maya can be categorized roughly as modeling, animation, dynamics, shaders, rendering and plugins. Models are created from polygons, but the shapes may be faceted or smooth and organic. Working in a 3-D animation package is more like sculpting than drawing. You do need to be an artist.
The user interface for Maya centers on the Hotbox, a spider web of pop-up menus. Hotbox enables quick menu access by pressing the spacebar. You then drag from the center position to the menu desired. Although pull-down menus are provided, many animators turn them off because using Hotbox is faster and more intuitive.
The Maya hotkeys are a refinement of the vi theory of key navigation: location, location, location. Hotkeys are placed according to speed of operation, like the QWERTY keyboard. The QWERTY key functions are Q for select, W for translate, E for rotate, R for scale, T for show manipulator and Y for last tool used. This system is very fast for trained operators but confusing at first. Note that everything in Maya is customizable. Using the built-in MEL scripting language you can change anything you don't like, even Maya's entire GUI. Maya's creators sometimes have to ask what application a Maya animator has up on his or her screen. It may not look anything like Maya.
Let's make a simple figure. The icons across the top create basic shapes. Shapes may be polygons, subdivisions (SubD) or NURBS. Polygons are faceted shapes, while SubDs and NURBS are smooth. When shapes are created they pop to the origin at 0,0,0. Viewing the shape may require moving the view perspective to face the object. An easy way to do that is to use View® Frame Selection. The left row of icons contains the scale, move and rotate tools. Grabbing an object by one of its x-y-z handles manipulates it.
Looking from just one perspective tends to be misleading and causes mistakes. What happens is the side of an object you can see looks fine as you work on it, but the sides and back turn out to be way off. Quickly clicking the spacebar switches to four-view mode. In this mode, you can see what you are doing from multiple perspectives, simultaneously.
An object created as a polygon can be converted into another type, such as SubD or NURBS. The advantage of a SubD surface is you can build a perfectly smooth complex object from a single primitive. When you animate a SubD it can't fall apart due to seams. NURBS may require stitching together separate pieces. Working with SubD surfaces is more like polygons in that areas may be extruded, for instance, to create fingers on a hand. You may also add levels of detail to a SubD to create complex features to local regions, such as the knuckles of a hand.
In working with Maya the initial reaction tends to be frustration. Although simple tasks are easy and intuitive, the sheer complexity of the tool defeats novices. The learning curve is steep. The software comes with excellent tutorials, but the books suffer from an assumption that you have seen Maya before. Following the tutorials (which are otherwise excellent) is a struggle in figuring out where an option box or menu referred to by the manual is located in the software. There are many menus and they drill many levels deep. There is even a search box to find a particular menu, a thoughtful but sobering feature.
For a detailed overview of the features of Maya and 3-D graphics in general see the book The Art of Maya published by Alias|Wavefront (2000). That may be your best bet if you decide to get just one book (besides the manuals), and it looks good on your coffee table besides. Third-party books include Mastering Maya 3 (2001), Digital Effects Animation Using Maya (1999) and Maya Illuminated: Games (2001). There aren't drastic changes in Maya 4, so books on version 3 are still usable.
The Web provides tons of information about Maya, starting with Alias|Wavefront's own site. Besides descriptions of Maya being used in movie productions, it lists events, job postings, industry links, listservs, user groups and HOWTO guides. You can download shaders, source images, props, MEL scripts, paint effects, sample projects, plugins, screensavers and desktop pictures there. Another site with a lot of content is HIGHEND3D. And, 3D CAFE says they are the world's largest web site for computer graphic artists. Both sites have large sections devoted to Maya. Magazines devoted to 3-D graphics include Computer Graphics World, CGI, 3D World and Computer Arts, all of which have web sites.
There's an attractive gallery of projects done in Maya at users.pandora.be/gds/maya/gallery.htm. If you are interested in realism you may want to visit Steven Stahlberg's gallery and check out the tutorials on creating human faces at optidigit.com/stevens/howto.html.
General manager of Maya engineering Kevin Tureski says the reason for Maya on Linux is quite simple: “Demand for Linux became a dull roar. The Visual Effects Society, which represents our strategic customers, had a meeting with us about a year ago expressing a strong desire for Linux.” VES members are from the major motion picture companies.
According to Tureski, Maya is about 20 million lines of code, 15 thousand source files and 15 thousand classes. Linux Maya lead developer Wayne Arnold says they compiled using Red Hat 6.2 and gcc 2.91.66, although Red Hat 7.1 is supported. Linux tools used with Maya include vi, Emacs, gdb and ddd.
Support for accelerated graphics was a sore point with porting to Linux. “Only in March of this year has Linux become viable to fully support our configuration”, says Tureski. “Maya is a very large application. The OS and OpenGL are pushed to the limit.” Arnold says that drivers for HP fx10, ATI FireGL2 and NVIDIA are supported. The RADEON and NVIDIA open-source drivers are not. “We spent a lot of time with graphics card driver manufacturers getting Maya fully supported”, says Arnold. “The biggest problem was getting the correct visual 24-bit. There were a lot of memory leaks and other bugs to fix in drivers because they were so new. Some areas of pixel-type operations and triangles hadn't been hardware accelerated.” New code was added to Maya to remove the requirement for hardware overlay in order to provide compatibility even with (unsupported) nonaccelerated drivers.
Red Hat on HP was the initial configuration for Linux Maya, and other PC machines are described as being in various states of almost there. “Audio was a challenge and continues to be”, says Tureski. They are writing to the OSS sound API. Maya is almost equivalent on Linux to the Maya on Windows and IRIX. One thing missing is the ability to read AVI, QuickTime and MPEG files. On the subject of QuickTime players, ILM Director of Research Andy Hendrickson says that their Linux QuickTime code library may become open source.
DreamWorks SKG is using Maya on Linux for production of their next feature animation motion picture, Spirit: Stallion of the Cimarron, as described in this column last month. Many other studios are switching to Linux for their animation and special effects desktops. Thanks in part to Maya, Linux is becoming the technical desktop of choice for the film industry.