Graphics Tools for Linux
In my early days on Compuserve, GIF files were abundant and were viewed with programs like picem, which had few capabilities beyond displaying the image. The majority of tools available for Linux today do much more than view images.
A few tools are still around that do little more than view images. xwud (X Window Undump) is a program delivered with the base set of X11 clients for displaying files in the X-Windows Dump format created with a companion tool called xwd (X Window Dump). However, neither of these tools is feature-rich, and I use them only when I have no other way to do a window screen capture under X.
Most of the graphics tools available for Linux fall into the category of creation tools and allow you to draw or render images, interactively or through some form of scene description language. One of the most widely known of these is XPaint, a tool similar in style to the old MacPaint or MS Paint without as many features. Recent updates to the program have helped by providing additional options, but the rapid growth of tools like Photoshop have made the XPaint style tools less attractive. XPaint does provide some basic functions useful for creating texture maps for other tools. For example, one nice feature of XPaint is the ability to edit individual bits in an image.
A disadvantage to XPaint and similar tools is that it is not designed to deal with pixels as groups or to allow the modification of pixels by hue, saturation or intensity. Thus, XPaint gives you a canvas on which to paint, but not the ability to mix your colors before you paint or to blend colors (or shades of gray) on the canvas itself.
The first tool I discovered after seeing Toy Story was POV-Ray, the Persistence of Vision Raytracer. POV-Ray, another form of creation tool, is a 3D photorealistic renderer (not a drawing program). It works by reading in a text file that describes the scene to render. The scene describes objects made up of primitives (boxes, cones, torii, triangles and/or combinations of these and other shapes), descriptions of the textures to place on these objects, the lighting in and around the scene and the point of view of the “camera”. Programs that do raytracing use one particular method for determining how light acts on the objects, and thus, how the objects will look to the viewer. This method traces the path of light beams through the scene; how this is done is really unimportant to all but the most experienced raytracing artist. Other methods for computing the way light behaves in a scene are radiosity and the REYES algorithm, the method used in making Toy Story. Tools using these methods are discussed in the Linux Graphics mini-HOWTO.
The disadvantage to tools like POV-Ray is the lack of user interaction. POV-Ray is a sort of batch processor—it processes a file and produces output. No feature of POV-Ray allows you to create input files. Input files must be created either by hand or by the use of a modeller. Modellers, like CAD systems, use wireframe representations of the objects in their scenes. The use of wireframes helps to visualize the scene from various points of view without the overhead of adding the textures (which generally take a long time to compute, even on fairly fast systems).
There are three modellers available for Linux: SCED, Midnight Modeller, and AC3D. SCED, available as source, is portable across multiple Unix platforms and makes use of the Athena widget set. I found its interface a little difficult to use, but the ability to group objects, called CSG (Constructive Solid Geometry), was very nice. Midnight Modeller is a tool ported from the MS-Windows environment. The author does not release source code, so the program is available only in binary format. The interface is very CAD-like, but the colors tend to be harsh, making the program difficult to use. The window features, such as menus and dialog boxes, are very DOS-like, which I find a distraction on an X-Window system. Neither of these is the quality of some of the better modellers for MS-Windows.
AC3D is a new tool with a very nice 3D (Motif-like) interface that uses front and side view windows and can do some real-time rendering. I came across this tool just as I was finishing this article, so I haven't had time to give it a proper review. Of the three, it appears to be the most user-friendly with the most intuitive interface. AC3D is shareware for Linux (about $15 US) and comes in binary format only at this time.
When I first started gathering information about graphics tools, I was primarily using POV-Ray, as I had found the POV-Ray web site with its large collection of tools. However, the tools were mostly DOS/Windows binaries or written by DOS/Windows users and included the C source. Since I wasn't running DOS or Windows and there was little information on which tools would work on Unix, I started the Unix Graphics Utilities web page (this page is not exclusively for Linux). I used the information I gathered as the basis for and the incentive to write the Linux Graphics mini-HOWTO, since all my testing was done using Linux systems.
Many other tools can fit into the creation category. For example:
BMRT is a tool that conforms to the Renderman specification, put out by Pixar. PRMan, which was used to create Toy Story, is another Renderman-compliant tool (although it is not available on Linux systems).
Rayshade - another raytracing utility.
TGIF - a much more sophisticated version of XPaint that allows for the organizing of primitives into groups and layers, similar to the old MacDraw tool for the Macintosh.
HF-Lab is a tool for creating 3D landscapes.
Again, you can get more detail on these tools from the Linux Graphics mini-HOWTO, including where to obtain the tools.
Figure 3. The POV-Ray Home Page
- Readers' Choice Awards--Nominate Your Apps & Gadgets Now!
- Memory Ordering in Modern Microprocessors, Part I
- Source Code Scanners for Better Code
- diff -u: What's New in Kernel Development
- RSS Feeds
- Non-Linux FOSS: AutoHotkey
- Tech Tip: Really Simple HTTP Server with Python
- Security Hardening with Ansible
- September 2014 Issue of Linux Journal: HOW-TOs