3D graphics eBook - Course Materials Repository
3D graphics eBook - Course Materials Repository
3D graphics eBook - Course Materials Repository
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Procedural generation 117<br />
Another indie game that relies heavily on procedural generation is Dwarf Fortress. In the game the whole world is<br />
generated, completely with its history, notable people, and monsters.<br />
Film<br />
As in video games, procedural generation is often used in film to rapidly create visually interesting and accurate<br />
spaces. This comes in a wide variety of applications.<br />
One application is known as an "imperfect factory," where artists can rapidly generate a large number of similar<br />
objects. This accounts for the fact that, in real life, no two objects are ever exactly alike. For instance, an artist could<br />
model a product for a grocery store shelf, and then create an imperfect factory that would generate a large number of<br />
similar objects to populate the shelf.<br />
Noise is extremely important to procedural workflow in film, the most prolific of which is Perlin noise. Noise refers<br />
to an algorithm that generates a patterned sequence of pseudorandom numbers.<br />
Cellular automata methods of procedural generation<br />
Simple programs which generate complex output are a typical method of procedural generation. Typically, one starts<br />
with some simple initial conditions like an array of numbers. Then one applies simple rules to the array, which<br />
determine the next step in the evolution of the output—that is, the next array of numbers. The rules can be fixed, or<br />
they can be changing in time. One can let the program run, and given the right update rules and initial conditions,<br />
one can obtain a non-repeating evolution starting from an initial array.<br />
Cellular automata are discrete computer models of evolutionary behavior which start from an array of<br />
differently-colored cells, then apply update rules to determine the colors of the next array of cells. Typically one<br />
starts with a two-color program, and a random finite array of black and white cells. Then one defines a<br />
neighborhood—for the simplest case, just the two neighboring cells of any one cell—and creates a so-called "update<br />
rule" to determine what the next cell in the evolution will be. Typical elementary update rules are of the form, "If the<br />
current cell is black and the cells to the right and left are white, then the next cell in the evolution shall be white."<br />
Such simple rules, even in the simplest case of two colors, can produce a complex evolution (see Rule 30 and Rule<br />
110).<br />
For game developers, this means that, using with finite initial conditions and extremely simple rules, one can<br />
generate complex behavior. That is, content can be nearly spontaneously generated from virtually nothing, which is<br />
the idea behind procedural generation. Evolving cellular automata is one way of generating a large amount of<br />
content from a small amount of input.<br />
Software examples<br />
Middleware<br />
• Acropora [4] - a procedural <strong>3D</strong> modeling software utilizing voxels to create organic objects and terrain.<br />
• Art of Illusion – an open source and free <strong>3D</strong> modeler, has an internal node-based procedural texture editor.<br />
• CityEngine [5] – a procedural <strong>3D</strong> modeling software, specialized in city modeling.<br />
• CityScape - procedural generation of <strong>3D</strong> cities, including overpasses and tunnels, from GIS data.<br />
• Filter Forge – an Adobe Photoshop plugin for designing procedural textures using node-based editing.<br />
• Grome – popular terrain and outdoor scenes modeler for games and simulation software.<br />
• Houdini - a procedural <strong>3D</strong> animation package. A free version of the software is available.<br />
• Allegorithmic Substance – a middleware and authoring software designed to create and generate procedural<br />
textures in games (used in RoboBlitz).