Procedural Generation: Algorithms for Creating Content On-the-fly - Prof. Ian Parberry, Study notes of Computer Science

Procedural generation, a method for creating content such as textures, environmental effects, sound, models, animation, story, and levels 'on-the-fly'. It covers various applications, including 3d textures, procedural clouds and sky, procedural sound, and procedural animation. The document also touches upon procedural behavior (ai) and dialog.

Typology: Study notes

Pre 2010

Uploaded on 08/19/2009

koofers-user-7o6
koofers-user-7o6 🇺🇸

10 documents

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
Procedural Generation
Procedural Generation
Joshua Taylor
Joshua Taylor
What is Procedural Generation
What is Procedural Generation
Procedural Generation (or Procedural
Synthesis) describes algorithms and methods to
create content on the fly (as opposed to creating
it before distribution)
See the Wikipedia article Procedural generation
Many procedural generation algorithms use
fractals, noise fields (such as Perlin noise and
simplex noise) and (pseudo-)random number
generators
Things You Can Procedurally
Things You Can Procedurally
Generate
Generate
Textures
Environmental Effects
Sound
Models
Animation
Story
Levels
Textures
Textures
Procedural Textures give more diversity
with less memory
Can be used to avoid obvious tiling
See also: Texture synthesis, Perlin noise,
Simplex noise
http://www.blender.org/cms/Procedural_Textures.272.0.html
3D Textures
3D Textures
Textures can be 3D as well as just 2D
Surfaces take a slice through a 3D texture
Curved surfaces take a curved slice
leaving fewer seams
3D textures can be made with many 2D
slices and interpolation or with procedural
textures
Environmental Effects
Environmental Effects
Things like clouds, exterior lighting, wind,
grass, fire, smoke, etc. can be created
procedurally to enhance the environment
Most of this is special uses of either
procedural textures, shaders or particle
engines
pf3
pf4
pf5

Partial preview of the text

Download Procedural Generation: Algorithms for Creating Content On-the-fly - Prof. Ian Parberry and more Study notes Computer Science in PDF only on Docsity!

Procedural GenerationProcedural Generation

Joshua TaylorJoshua Taylor

What is Procedural GenerationWhat is Procedural Generation

  • Procedural Generation (or Procedural Synthesis) describes algorithms and methods to create content on the fly (as opposed to creating it before distribution)
  • See the Wikipedia article Procedural generation
  • Many procedural generation algorithms use fractals, noise fields (such as Perlin noise and simplex noise) and (pseudo-)random number generators

Things You Can Procedurally Things You Can Procedurally

GenerateGenerate

  • Textures
  • Environmental Effects
  • Sound
  • Models
  • Animation
  • Story
  • Levels

Textures Textures

  • Procedural Textures give more diversity with less memory
  • Can be used to avoid obvious tiling
  • See also: Texture synthesis, Perlin noise, Simplex noise

http://www.blender.org/cms/Procedural_Textures.272.0.html

3D Textures 3D Textures

  • Textures can be 3D as well as just 2D
  • Surfaces take a slice through a 3D texture
  • Curved surfaces take a curved slice leaving fewer seams
  • 3D textures can be made with many 2D slices and interpolation or with procedural textures

Environmental EffectsEnvironmental Effects

  • Things like clouds, exterior lighting, wind, grass, fire, smoke, etc. can be created procedurally to enhance the environment
  • Most of this is special uses of either procedural textures, shaders or particle engines

Clouds and SkyClouds and Sky

  • Clouds and sky can be done as a procedural texture applied to a sky dome
  • This includes a star map at night and sun position and color during the day
  • This might also include some form of light (shadow) map for the terrain

http://www.csee.umbc.edu/~ebert/cloud/

Sound Sound

  • Computer generated voice could be used to give every character a voice without a voice actor
  • Procedural music can avoid repetitive music loops
  • See also 1/f noise, generative music, algorithmic music, speech synthesis

ModelsModels

  • Mesh subdivision and mesh reduction change the number of polys
  • Meshes can be created around a data set such as the marching cubes algorithm
  • Meshes can be blended procedurally to create new meshes
  • Meshes can be built around a skeleton

Animation Animation

  • Given a mesh with a skeleton, let the computer decide how to make it walk/fight/dance
  • Short animation clips can be blended to make smoother animations
  • Filters can be applied to change animations

Animation Animation

  • Ragdoll Physics might be considered procedural animation
  • Particle systems might also be considered procedural animations
  • Often interacts with the physics system

Behavior (AI) Behavior (AI)

  • AI should be procedural by definition
  • Some AIs are just hard coded rules
  • Some AIs can learn and adapt
  • In RPGs, for example, character mood could be dealt with procedurally

My Research My Research

  • Improve procedural level generation by adding two (maybe three) things:
  • Procedural Clutter (so that a room can look like a living room, without looking like the same living room)
  • Relations between rooms (so the bathroom isn’t connected to the kitchen but the dining room is)
  • Maybe support for irregular room shapes (probably still grid-based though)

My Procedural Clutter My Procedural Clutter

  • Add attachment points to the room
  • Add attachment points to objects
  • Place objects at attachment points recursively using a probabilistic AND-OR tree
  • For example, the table goes in the middle of the room, the chair goes beside the table (90% of the time), and the plate goes in front of the chair (95% of the time)

My Procedural Clutter (in 2D)My Procedural Clutter (in 2D)^ My Procedural Clutter (in 2D)My Procedural Clutter (in 2D)

My Procedural Clutter (in 2D)My Procedural Clutter (in 2D) My Procedural Clutter (in 2D)My Procedural Clutter (in 2D)

Room RelationshipsRoom Relationships

  • Built on the ‘can be adjacent’ relation for room templates
  • For example, the kitchen can be adjacent to the dining room
  • Relations can be described as a graph (templates A and B are connected if A can be adjacent to B)
  • Levels can also be described as a graph (rooms A and B are connected if A is adjacent to B)

Room RelationshipsRoom Relationships

  • Applying templates to rooms in a way that the template relations hold is an NP- complete problem (a superset of graph coloring)
  • Making random attempts to color the level can be made fast enough though

Irregular RoomsIrregular Rooms

  • By dividing space into a series of boxes and assigning each box as either solid or empty, you can describe many interesting room shapes
  • By applying models to the intersections of the grid, you can round the edges and make the results look better
  • Morrowind and Oblivion use this approach (somewhat), but the levels aren’t created procedurally

Irregular Rooms Irregular Rooms

  • The other common approach is to use prefabs to build levels
  • This allows more detail, but is also more granular
  • This causes levels to look very similar without using many prefabs
  • Daggerfall used this method

ConclusionConclusion

  • Procedural generation is any method or algorithm that allows the computer to create content for you
  • The types of content that can be created are nearly limitless, but some things are more complicated than others and doing it well is much harder than just doing it

ReferencesReferences

  • Automatic Furniture Population of Large Architectural Models – Kari Anne Høier Kjølaas
  • Beyond the Horizon – Stefan Greuter, Nigel Stewart
  • From Artistry to Automation – Timothy Roden, Ian Parberry
  • Infinite Game Universe – Guy W. Lecky- Thompson
  • Texturing and Modeling: A Procedural Approach
    • David S. Ebert, et al.