Originally Published: Sunday, 9 April 2000 Author: Jim Kutter
Published to: enhance_articles_multimedia/Images Articles Page: 1/1 - [Printable]

Professional Computer Graphics on Linux? You Bet.

A few years ago, producing impressive computer generated images required expensive hardware and even more expensive software. Now, with inexpensive hardware, free software, and a little talent, anybody can venture down the path towards professional-looking computer graphics.

   Page 1 of 1  

A few years ago, producing impressive computer generated images required expensive hardware and even more expensive software. Now, with inexpensive hardware, free software, and a little talent, anybody can venture down the path towards professional-looking computer graphics.

A free software package (for commercial use, a $100 registration fee is asked) called Blue Moon Rendering Tools (BMRT) is now available for Linux. It is a software package that provides the same quality professionals look for in their work. BMRT implements the RenderMan interface standard, which is a specification for a photorealistic rendering system. The details of the RenderMan interface are beyond the scope of this article, but for more information check the links listed below.

BMRT is remarkably simple to install. Once the tarball is unpacked you are free to setup the package however you wish. At the very least, it is a good idea to have the main rendering binary (rendrib) in your path (I prefer /usr/local/bin). You then may want to specify a SHADERS environment variable. It contains the paths to your shaders (more on shaders later). You may want this to be someplace global to the system due to the simple fact that other users would then be able to access the same shaders you use. I set mine to a NFS share so that my network can access the same shaders from any machine. All that remains is to copy the shaders from the shaders/ directory in the distribution. That accomplished, we are now ready to start rendering.

Let's quickly render one image to make sure everything is working and so that we can get a feel for what we should expect. From the examples directory in the distribution (i.e. /usr/local/BMRT2.4/examples) type "rendrib -d examples/teapots.rib". If you get any errors about not finding shaders, make sure the SHADERS environment variable is set. What you should see is a new open window with some text describing what BMRT is doing on the console. When the rendering is complete you should see 3 teapots with different surfaces.

To really do amazing things, we need to go into some basics on how BMRT works. Rendering is accomplished by reading a scene description, either from stdin or a file. The scene description defines everything necessary to produce a set of images through a series of commands. These commands are a part of the RenderMan standard, referred to as the RenderMan Interface Bytestream (RIB). Another part of the RenderMan standard outlines C-bindings, so an application can use RenderMan directly (BMRT also supports this). Files containing these commands are called RIBs and carry the .rib extension. The RIB commands define the layout of geometry in the scene, the layout of lights, the position and layout of the camera, and the properties of the materials on the geometry. A shader is an algorithmic description of the material for a given surface.

After the renderer recieves a complete description of the scene, it begins rendering through whatever technique it implements (BMRT implements ray-tracing and radiosity). As the color of a point on a surface needs to be evaluated, the surface's shader is called. The shader computes the color at that point, and the camera records that color. This is what makes BMRT so powerful. These shaders are implemented in a C-like language and compiled so that the renderer can use them efficiently. In production graphics it is not uncommon for many shaders to be written so that artists can obtain precisely the look they want.

For a few really good references on RenderMan in general, I recommend "The RenderMan Companion" by Steve Upstill. This is considered the definitive RenderMan reference; however, it is a bit old, and primarily a resource for programmers. BMRT's author, Larry Gritz, co-authored a more recent book "Advanced RenderMan: Creating CGI for Motion Pictures." While I have not had the opportunity to read this one yet, it looks like an excellent book for anyone seriously interested in graphics. Of course the web is still unbeatable for breadth of information, so a few useful web sites are listed below.
Blue Moon Rendering Tools site RenderMan Repository RenderMan Information from Pixar RenderMan is a registered trademark of Pixar.





   Page 1 of 1