How Does This 3D Stuff Work, Anyway?
Part 1
This is my attempt to explain, in very simple terms, how 3D graphics are created. It’s not an overly technical overview, but rather an explanation in terms easily understood by the layperson. For a slightly more technical (and better written) overview, I’d recommend a rather dated but clearly written book entitled 3D Computer Graphics, A User's Guide for Artists and Designers, by Andrew Glassner.
Introduction
So, what are 3D computer graphics? I’d have to define it as the creation and depiction of a dimensional scene in a computer program for the purpose of rendering a view of that scene.
Let's start by figuring out what a computer needs to know in order to generate a picture. First, it needs to know the shape, position, and color of any objects in the scene. Are those objects rough or smooth? Are they textured or plain? Are they moving or still? Next, it needs to know about the virtual camera it's looking at the scene with. Is the lens wide or narrow? How much of the scene will show up in the final image? What about the virtual lights in the scene? What direction are they pointing? What objects are they illuminating? What colors are they adding to the object's surface? Lastly, are there any atmospheric effects in the scene? Is it foggy, brightly lit, or dark? Are there reflections or shadows in the scene? Only after all of these questions (and more, I'm simplifying...) are answered and quantified for the (basically dumb) computer, can it determine the color of each pixel in the scene.
These questions must be answered by the artist through the software before the image can be rendered. Luckily, some clever programmers have taken that nearly insurmountable problem and written tools that deal with all of these questions. They’ve broken the problems into smaller pieces, and written different modules to deal with the specific tasks. These modules may be integrated into a cohesive whole, as a single program, or they may run as separate parts of a larger package.
These modules may be loosely defined as:
- A Modeler - Which describes the geometry of the objects.
- A Property Editor - Which describes the color and texture of and object and the color of lights.
- A Scene Describer - In which one positions the objects, lights, and camera, and describes the motion or changes occurring to those entities over time.
- A Renderer - Which takes all of the information accumulated and determines the color of every pixel in the final scene.
By interactively (hopefully) working with these programs, an artist makes the aesthetic decisions that create the final image. The success of the programmer may be judged by the relative ease by which these decisions are carried out.
Here's what each of the programs, or modules do.
Modeler
A modeler describes the shape, dimensions, and structure of every object in the scene.
There are several modeling techniques used in a modeler. Surfaces can be created by rotating a 2 dimensional shape about an axis (lathing) which can create symmetrical shapes like wine glasses, bottles, cylinders, and the like. Another way to model a shape is to extrude (push) a 2 dimensional shape through space, creating walls and a front face and back. This method is used a lot with type, making it thick, and adding bevels. Another method is lofting, which connects several closed 2 dimensional shapes, thus creating a surface. Another way to create a shape is with primitives, which are pre-defined 3 dimensional shapes. These shapes may be things like spheres, cubes, cylinders, cones, toruses (or is that torri?) and even things like hyperbolic curves. What are they? Uh... ask your mother.
Often these simple shapes can be combined (using a form of mathematics called “booleans”, which always makes me think about the bogeyman, for some reason...) into more complex forms.There are still other methods, including procedural modelers (which describe a model using a mathematical formula...), and subdivision modeling, and ...but I’m getting way over my head here.
Objects are usually displayed in 3D programs as a mesh of lines that represent the surface of the object. One visually manipulates these “wireframes” on a computer until they assume the shape of the object desired.
Sometimes “smooth-shaded” versions of the objects can be viewed and manipulated as an aid to visualizing the depth and positioning of them in 3 dimensional space.
The point of all this is, when you’re done, you end up with a precise list of points and connected surfaces described in three dimensions. These can be used to describe (or simulate) an actual 3 dimensional object, which will be used in the other modules of the program to create a semi-photorealistic image.