07.01.2013 Views

3D graphics eBook - Course Materials Repository

3D graphics eBook - Course Materials Repository

3D graphics eBook - Course Materials Repository

SHOW MORE
SHOW LESS

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 115<br />

Procedural generation<br />

Procedural generation is a widely used term in the production of media; it refers to content generated<br />

algorithmically rather than manually. Often, this means creating content on the fly rather than prior to distribution.<br />

This is often related to computer <strong>graphics</strong> applications and video game level design.<br />

Overview<br />

The term procedural refers to the process that computes a particular function. Fractals, an example of procedural<br />

generation [1]<br />

, dramatically express this concept, around which a whole body of mathematics—fractal<br />

geometry—has evolved. Commonplace procedural content includes textures and meshes. Sound is often<br />

procedurally generated as well and has applications in both speech synthesis as well as music. It has been used to<br />

create compositions in various genres of electronic music by artists such as Brian Eno who popularized the term<br />

"generative music". [2]<br />

While software developers have applied procedural generation techniques for years, few products have employed<br />

this approach extensively. Procedurally generated elements have appeared in earlier video games: The Elder Scrolls<br />

II: Daggerfall randomly generates terrain and NPCs, creating a world roughly twice the actual size of the British<br />

Isles. Soldier of Fortune from Raven Software uses simple routines to detail enemy models. Avalanche Studios<br />

employed procedural generation to create a large and varied group of tropical islands in great detail for Just Cause.<br />

The modern demoscene uses procedural generation to package a great deal of audiovisual content into relatively<br />

small programs. Farbrausch is a team famous for such achievements, although many similar techniques were already<br />

implemented by The Black Lotus in the 1990s.<br />

Contemporary application<br />

Procedurally generated content such as textures and landscapes may exhibit variation, but the generation of a<br />

particular item or landscape must be identical from frame to frame. Accordingly, the functions used must be<br />

referentially transparent, always returning the same result for the same point, so that they may be called in any order<br />

and their results freely cached as necessary. This is similar to lazy evaluation in functional programming languages.<br />

Video games<br />

The earliest computer games were severely limited by memory constraints. This forced content, such as maps, to be<br />

generated algorithmically on the fly: there simply wasn't enough space to store a large amount of pre-made levels<br />

and artwork. Pseudorandom number generators were often used with predefined seed values in order to create very<br />

large game worlds that appeared premade. For example, The Sentinel supposedly had 10,000 different levels stored<br />

in only 48 or 64 kilobytes. An extreme case was Elite, which was originally planned to contain a total of 2 48<br />

(approximately 282 trillion) galaxies with 256 solar systems each. The publisher, however, was afraid that such a<br />

gigantic universe would cause disbelief in players, and eight of these galaxies were chosen for the final version. [3]<br />

Other notable early examples include the 1985 game Rescue on Fractalus that used fractals to procedurally create in<br />

real time the craggy mountains of an alien planet and River Raid, the 1982 Activision game that used a<br />

pseudorandom number sequence generated by a linear feedback shift register in order to generate a scrolling maze of<br />

obstacles.<br />

Today, most games include thousands of times as much data in terms of memory as algorithmic mechanics. For<br />

example, all of the buildings in the large game worlds of the Grand Theft Auto games have been individually<br />

designed and placed by artists. In a typical modern video game, game content such as textures and character and<br />

environment models are created by artists beforehand, then rendered in the game engine. As the technical<br />

capabilities of computers and video game consoles increases, the amount of work required by artists also greatly

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!