Procedural Noise/Introduction

Introduction

Background and Motivation

Hello, my name is Hyatt Moore IV, and this is my final project for the course CS448X: Math and Computer Science behind Special Effects, which was taught by Professor Ron Fedkiw in the Spring 2010 quarter at Stanford University in Stanford, CA. My background is in Electrical Engineering primarily, and I was interested in how signal processing techniques were used in the special effects industry. Professor Fedkiw pointed me in the direction of Perlin noise as well as Gabor and Philips spectrums. Initially, my intent for this project was to focus on texture synthesis using Perlin noise (as seen in my project proposal here), but then become more interested in procedural noise in general as I began further research. The project changed accordingly, now beginning with a broad view of various procedural techniques and then honing into Ken Perlin's contribution with his noise function along with a Matlab implementation and application in synthesizing marble textures.

Organization

The organization of this project can be seen from the table of contents on the parent Procedural Noise page. Aside from the introduction and references, each page has been designed to stand alone as its own reference on a particular topic. A basic review and discussion of noise and procedural noise is covered first. Then a wide range of noises are discussed in the Categories section providing breadth to the topic. Depth of the project is found in the discussion of Perlin Noise itself with an implementation and analysis done in Matlab. A short biography of Ken Perlin is provided as well.

All of the plots and figures in this project were generated in Matlab. This certainly had its drawbacks in terms of computational speed (e.g. the final marble movie took approximately nine hours to render), but there were definite advantages in terms of tools provided to analyze, compare, and tweak things

Code

At various points scattered throughout the project are code samples implemented in Matlab. I have done my best to focus on providing examples that focus more on the algorithms being discussed than how the plots and images were generated using Matlab. The Mathworks web page is an excellent resource for anyone interested in learning more about Matlab.

The Marble examples and Perlin Noise implementations are based on Ken Perlin's initial work done in 1985.


2011-03-29 17:44