3D computer graphics
From Wikipedia, the free encyclopedia.
The rewrite of this article is being devised at Talk:3D computer graphics/Temp. Please comment or help out as necessary. Thanks
3D computer graphics are works of graphic art that were created with the aid of digital computers and specialized 3D software. In general, the term may also refer to the process of creating such graphics, or the field of study of 3D computer graphic techniques and its related technology.
3D computer graphics are distinct from 2D computer graphics in that a three-dimensional virtual representation of objects is stored in the computer for the purposes of performing calculations and rendering images. In general, the art of 3D graphics is akin to sculpting or photography, while the art of 2D graphics is analogous to painting. In computer graphics software, this distinction is occasionally blurred; some 2D applications use 3D techniques to achieve certain effects such as lighting, while some primarily 3D applications make use of 2D visual techniques.
Contents [hide] |
Technology
OpenGL and Direct3D are two popular APIs for the generation of 3D imagery on the fly. Many modern graphics cards provide some degree of hardware acceleration based on these APIs, frequently enabling the display of complex 3D graphics in real-time. However, it's not necessary to employ any one of these to actually create 3D imagery.
Creation of 3D computer graphics
The process of creating 3D computer graphics can be sequentially divided into three basic phases:
- Modelling
- Scene layout setup
- Rendering
Modeling
The modelling stage could be described as shaping individual objects that are later used in the scene. There exist a number of modelling techniques:
- constructive solid geometry
- NURBS modelling
- polygonal modelling
- subdivision surfaces
- implicit surfaces
Modelling processes may also include editing object surface or material properties (e.g., color, luminosity, diffuse and specular shading components—more commonly called roughness and shininess, reflection characteristics, transparency or opacity, or index of refraction), adding textures, bump-maps and other features.
Modelling may also include various activities related to preparing a 3D model for animation. Objects may be fitted with a skeleton, a central framework of an object with the capability of affecting the shape or movements of that object. This aids in the process of animation, in that the movement of the skeleton will automatically affect the corresponding portions of the model. See also Forward kinematic animation and Inverse kinematic animation.
Modelling can be performed by means of a dedicated program (e.g., Lightwave Modeler, Rhinoceros 3D, Moray), an application component (Shaper, Lofter in 3D Studio) or some scene description language (as in POV-Ray). In some cases, there is no strict distinction between these phases; in such cases modelling is just part of the scene creation process (this is the case, for example, with Caligari trueSpace).
Process
Scene layout setup
Scene setup involves arranging virtual objects, lights, cameras and other entities on a scene which will later be used to produce a still image or an animation. If used for animation, this phase usually makes use of a technique called "keyframing", which facilitates creation of complicated movement in the scene. With the aid of keyframing, instead of having to fix an object's position, rotation, or scaling for each frame in an animation, one needs only to set up some key frames between which states in every frame are interpolated.
Lighting is an important aspect of scene setup. As is the case in real-world scene arrangement, lighting is a significant contributing factor to the resulting aesthetic and visual quality of the finished work. As such, it can be a difficult art to master. Lighting effects can contribute greatly to the mood and emotional response effected by a scene, a fact which is well-known to photographers and theatrical lighting technicians.
Tessellation and meshes
The process of transforming representations of objects, such as the middle point coordinate of a sphere and a point on its circumference into a polygon representation of a sphere, is called tessellation. This step is used in polygon-based rendering, where objects are broken down from abstract representations ("primitives") such as spheres, cones etc, to so-called meshes, which are nets of interconnected triangles.
Meshes of triangles (instead of e.g. squares) are popular as they have proven to be easy to render using scanline rendering.
Polygon representations are not used in all rendering techniques, and in these cases the tessellation step is not included in the transition from abstract representation to rendered scene.
Rendering
Rendering is the final process of creating the actual 2D image or animation from the prepared scene. This can be compared to taking a photo or filming the scene after the setup is finished in real life. Photo-realistic image quality is often the desired outcome, and to this end several different, and often specialized, rendering methods have been developed. These range from the distinctly non-realistic wireframe rendering through polygon-based rendering, to more modern techniques such as: scanline rendering, raytracing or radiosity.
Rendering software may simulate such cinematographic effects as lens flares, depth of field or motion blur. These artifacts are, in reality, a by-product of the mechanical imperfections of physical photography, but as the human eye is accustomed to their presence, the simulation of such artifacts can lend an element of realism to a scene. Techniques have been developed for the purpose of simulating other naturally-occurring effects, such as the interaction of light with atmosphere, smoke, or particulate matter. Examples of such techniques include particle systems (which can simulate rain, smoke, or fire), volumetric sampling (to simulate fog, dust and other spatial atmospheric effects), and caustics (to simulate light focusing by uneven light-refracting surfaces, such as the light ripples seen on the bottom of a swimming pool).
The rendering process is known to be computationally expensive, given the complex variety of physical processes being simulated. Computer processing power has increased rapidly over the years, allowing for a progressively higher degree of realistic rendering. Film studios that produce computer-generated animations typically make use of a render farm to generate images in a timely manner.
Often renderers are included in 3D software packages, but there are some rendering systems that are used as plugins to popular 3D applications. These rendering systems include Final-Render, Brazil r/s, V-Ray and Pixar Renderman.
Reflection and shading models
Modern 3D computer graphics rely heavily on a simplified reflection model called Phong reflection model, which should not be confused with Phong shading which is an entirely different subject.
In refraction of light, an important concept is the refractive index. In most 3D programming implementations, the term for this value is "index of refraction," usually abbreviated "IOR."
Popular reflection rendering techniques in 3D computer graphics include:
- Flat shading: A technique that shades each polygon of an object based on the polygon's "normal" and the position and intensity of a light source.
- Gouraud shading: Invented by H. Gouraud in 1971, a fast and resource-conscious vertex shading technique used to simulate smoothly shaded surfaces.
- Texture mapping: A technique for simulating a large amount of surface detail by mapping images (textures) onto polygons.
- Phong shading: Invented by Wu Tong Phong, used to simulate specular highlights and smooth shaded surfaces.
- Bump mapping: Invented by Jim Blinn, a normal-perturbation technique used to simulate wrinkled surfaces.
- Cel shading: A technique used to imitate the look of hand-drawn animation.
3D graphics APIs
3D graphics have become so popular, particularly in computer games, that specialized APIs (application programmer interfaces) have been created to ease the processes in all stages of computer graphics generation. These APIs have also proved vital to computer graphics hardware manufacturers, as they provide a way for programmers to access the hardware in an abstract way, while still taking advantage of the special hardware of this-or-that graphics card.
These APIs for 3D computer graphics are particularly popular:
- OpenGL
- Direct3D (a subset of DirectX)
- RenderMan
- RenderWare
There are also higher-level 3D scene-graph APIs which provide additional functionality on top of the lower-level rendering API. Such libraries under active development include:
3D graphics software
While there are many 3D modelling and animation packages, The seven that have gained most popularity are:
- Alias Wavefront's Maya - Perhaps the most popular 3D software in the industry as of 2003. Used by many of the leading visual effects studios in combination with Pixar's Photorealistic Renderman. Well regarded due to the flexible plugin API and MEL scripting interface.
- Discreet's 3D Studio Max - Originally written by Kinetix (a division of Autodesk) as a successor to 3D Studio. Kinetix was later merged with Autodesk's latest acquisition, Discreet Logic. Current version as of Oct 2004 is 7.0. Widely used in the games industry and by home users.
- Hash's Animation:Master - Originally written for Amigas in 1987, this is still the most affordable of the professional packages. A:M weighs in a very well thought-out animation workflow, compatibility with Windows, Mac OS and soon Mac OS X plus a vast array of built in features. A big bonus for this package is completeness and one of the best online communities, the internet has to offer. Current version as of Jan 2004 is 10.5o.
- Newtek's Lightwave 3D - originally developed for Amiga computers in early 1990s, it later evolved into an advanced and widely used 3D graphics and animation package, now available for Windows, Mac OS and Mac OS X. Current version is 8.0 (June 2004). It consists of two components: Modeler and Layout (scene editor). It is the favorite among hobbyists, and is used in many major visual effects facilities such as Digital Domain.
- Avid's Softimage XSI - Biggest contender to Maya's dominance. In 1987, Softimage Inc, a Montreal-based company wrote Softimage|3D which quickly became the most popular 3D program of that period. In 1994, Microsoft purchased Softimage Inc. They started rewriting SI|3D for Windows NT. That effort was called Softimage|XSI. Microsoft sold Softimage to Avid in 1998. Till version 1.5, XSI was playing catchup in terms of features to its predecessor SI|3D. But since version 2.0, it is a complete package and is likely to win the top spot that its predecessor enjoyed. Current version as of October 2004 is 4.0, released in summer of 2004.
- SideFX's Houdini - A very high-end 3D animation package that is often preferred over Maya or XSI in pure visual effects, as opposed to character animation. Like Maya, Houdini offers an open environment for C software developers and script writers. It uses the popular TCL/TK scripting language and toolkit (as opposed to the proprietary MEL used in Maya). Houdini differs, however, in that it is purely a procedural environment, allowing complicated geometric or organic-looking objects to be created in comparatively very few steps by building a network of procedural nodes, or OPs. Unique in its very rich set of tools, Houdini does tend to require a higher learning curve than other comparable 3D software. Of particular note is Houdini's ability to directly work with or even synthesize 3D spatial audio within the environment. Heavily used in production of The Matrix.
- Curious Labs' Poser - a lower-end package for assembling, rendering, and animating 3D content supplied in the Alias Wavefront OBJect file format, Poser also has a large online community supporting its use in the hobby market. While Poser does not provide for the creation of original mesh objects, it does allow content to be imported and, due to 'hackable' configuration files, has drawn one of the largest user-bases on the market.
Besides these major packages, there are others which haven't quite gained mass acceptance but aren't toys either. Among them are:
- Amapi 3D by Eovia - A cheap 3D modelling package with a large file support. This program can be used by both beginners and experienced 3D modellers, due to it's simple interface. It supports both NURBS and polygon-based modelling, and has basic rendering features.
- Anim8or by Steve Glanville - A freeware package that can perform basic modeling and animation. It also has rudimentary rendering capability, but its real strength is in developing and using bone structures for animated figures.
- AutoCAD by AutoDesk - A higher-end modeller and renderer designed for 2D and 3D technical and architectural drawing.
- Blender - A free modelling, animation, game development and rendering application with such features as scripting using the Python programming language and a considerable variety of modelling methods and animation tools. Blender is continuously upgraded and maintained by the Blender Foundation.
- Corel Bryce 5 - A 3D landscape generating and rendering application. Features a graphical user interface, basic boolean modeling, mesh model import capability, and rudimentary animation capability. Although not as powerful as most of the other rendering programs, it can still produce stunning results in capable hands.
- Caligari trueSpace - An integrated 3D graphics application with an intuitive interface. A distinctive feature of this application is that all phases of 3D graphics creation are performed within a single program. Not as advanced as leading packages in this domain but provides such features as physical phenomena simulation (e.g., wind, gravity, body collisions) out-of-the-box.
- Cinema4d - A modular 3D animation platform that features a fast rendering engine, radiosity rendering, soft and rigidbody dynamics, 3D painting/texturing, advanced character animation tools and NPR rendering. While the base package contains mostly mid-range features, the addition of optional modules with advanced rendering, dynamics, character animation and other functionality yields a high-end animation platform with good workflow and ease of use.
- formZ - Offers topological manipulation of geometry.
- POV-Ray - Advanced raytracing software. Uses its own Turing-complete scene description language with features like macros, loops and conditional statements. It's completely free, although some do not consider it open source. Does not include a built-in modeller.
- Moray - A modeller for POV-Ray.
- RealSoft3D - Linux and Windows 3D modeller and renderer
- Rhinoceros 3D - A powerful NURBS modeller.
- Universe by Electric Image - Modeling and Animation suite with one of the fastest 3D renderers that exists.
- Wings 3D by Bjorn Gustavsson - Open source modeling program that is platform and OS independent and runs under the Erlang operating environment. This program is capable of exporting models in a variety of commonly used formats and was meant to emulate Nendo's single-skin modeling paradigm.
- ZBrush by Pixologic - A powerful polygon modeller, among many other things. Unlike most modellers, editing of the model is generally done by painting depth onto the model with an interactive brush. ZBrush features real-time editing of texture maps, bump maps, displacement maps, and multi-million polygon meshes. Materials, lights, and rendering are also supported.
For other software, see also entries on CAD and rendering.
See also
External links
- Anim8or (http://www.anim8or.com/)
- Animation:Master (http://www.hash.com/)
- ArtOfIllusion Modeller (http://www.artofillusion.org) (Java-based Open Source modelling package with tutorials)
- Blender (http://www.blender.org/)
- Caligari Software (http://www.caligari.com/)
- Discreet (http://www.discreet.com/)
- Electric Image (http://www.electricimage.com/)
- NewTek (http://www.newtek.com/)
- Moray (http://www.stmuc.com/moray/)
- 3dsky (http://www.3d-sky.com/)
- POV-Ray (http://www.povray.org/)
- Pixologic (http://www.pixologic.com/)
- Realsoft (http://www.realsoft.fi/)
- Rhinoceros (http://www.rhino3d.com/)
- Wings 3D (http://www.wings3d.com/)
- 3D Graphics Research and Java API (http://www.dlt-online.com/)