CS 354 Procedural Methods

51
CS 354 Procedural Methods Mark Kilgard University of Texas April 3, 2012

description

CS 354 Procedural Methods; April 3, 2012; University of Texas at Austin

Transcript of CS 354 Procedural Methods

Page 1: CS 354 Procedural Methods

CS 354Procedural Methods

Mark KilgardUniversity of TexasApril 3, 2012

Page 2: CS 354 Procedural Methods

CS 354 2

Today’s material

In-class quiz On interaction lecture

Lecture topic Project 2 Procedural methods

Page 3: CS 354 Procedural Methods

CS 354 3

My Office Hours Tuesday, before class

Painter (PAI) 5.35 8:45 a.m. to 9:15

Thursday, after class ACE 6.302 11:00 a.m. to 12

Randy’s office hours Monday & Wednesday 11 a.m. to 12:00 Painter (PAI) 5.33

Page 4: CS 354 Procedural Methods

CS 354 4

Last time, this time Last lecture, we discussed

Project 2 on Programmable Shaders Interaction

Event models Buffering frames

This lecture Project 2 discussion Procedural methods for texturing and modeling

Intermediate milestone for Project 2 due Had to first 2 shader tasks done Deadline was yesterday All shaders due Friday, April 6th

Page 5: CS 354 Procedural Methods

CS 354 5

Daily Quiz1. Multiple choice: Which one of

these is not an interactive event processing model?

a) Batching

b) Polling

c) Event-driven

2. True or False: GLUT programs receive events through callback functions.

3. True or False: Tearing is a display artifact that results from unsynchronized buffer swap or blit operations.

4. Multiple choice: Triple buffering can improve display update latency but suffers from:

a) Requiring additional buffer memory

b) May render frames that are never actually displayed

c) Both a) and b)

d) Neither a) nor b)

On a sheet of paper• Write your EID, name, and date• Write #1, #2, #3, #4 followed by its answer

Page 6: CS 354 Procedural Methods

CS 354 6

Project 2 Project is NOW available

PDF + code to use Requirements

Mostly writing GLSL shaders Small amount of C/C++ code

Convert height map to normal map Implement NormalMap::computeNormal method

Intermediate milestone Yesterday: Monday, April 2nd

Submit snapshots and GLSL code for first two shaders Complete project

Due Friday, April 6th All 10 shaders Embellish for additional credit

Page 7: CS 354 Procedural Methods

CS 354 7

Your Mission So Far

You should now have these first two shaders tasks implemented

Task 0: roll torus

Task 1: apply decal

Page 8: CS 354 Procedural Methods

CS 354 8

Procedurally Generating aTorus from a 2D Grid

2D grid over (s,t)[0,1]

Tessellated torus

Page 9: CS 354 Procedural Methods

CS 354 9

GLSL Standard Library Routines You’ll Need for Project 2

texture2D—accesses a 2D texture through a sampler2D and a 2-component texture coordinate set (s,t)

textureCube—access a cube map with a samplerCube and a 3-component texture coordinate set (s,t,r)

normalize—normalizes a vector cross—computes a cross product of 2 vectors dot—computes a dot (inner) product of 2 vectors max—compute the maximum of two values reflect—compute a reflection vector given an incident vector and a normal

vector vec3—constructor for 3-component vector from scalars mat3—constructor for 3x3 matrix from column vectors *—matrix-by-vector or vector-by-matrix multiplication sin—sine trigonometric function cos—cosine trigonometric function pow—raise a number to a power, exponentiation (hint: specular)

Page 10: CS 354 Procedural Methods

CS 354 10

Coordinate Spaces for Project 2 Parametric space

2D space [0..1]x[0..1] for 2D patch Object space

Transform the patch’s parametric space into a 3D space containing a torus

Has modeling transformation from object- to world-space World space

Environment map is oriented in this space gluLookAt’s coordinates are in this space

Surface space (0,0,1) is always surface normal direction Mapping from object space to surface space varies along torus Perturbed normal from normal map overrides (0,0,1) geometric

normal Eye space

gluLookAt transforms world space to eye space

Page 11: CS 354 Procedural Methods

CS 354 11

Artist-drivenContent Generation

Advantages Human artistic expression! Human-to-human user interface Polish

Disadvantages Human-intensive Takes time to make lots of it Involved to change Data intensive

Page 12: CS 354 Procedural Methods

CS 354 12

Image-drivenContent Generation

Advantages As easy as taking pictures

Disadvantages Very data-intensive Calibrating cameras & correlating images

Quite involved Involved to edit image panorama

Page 13: CS 354 Procedural Methods

CS 354 13

ProceduralTexturing and Modeling

Let programs generate content! Advantages

Small programs → lots of content Compact storage requirements Easy to generate more content

Disadvantages Hard to control exactly

Page 14: CS 354 Procedural Methods

CS 354 14

Iterated Functions

Provides infinite detail

Example:Fractal Mandelbrot set

Page 15: CS 354 Procedural Methods

CS 354 15

Generating Lots of ContentProcedurally

Page 16: CS 354 Procedural Methods

CS 354 16

L-Systems Developed by Aristid Lindenmayer

Theoretical biologist Hence the L in L-System

Concept Use a rewriting system to model growth and

morphology of biological organisms Components

Axiom – initial state Generator – applied recursively

Useful in non-biology contexts too Geology, man-made objects, etc.

Page 17: CS 354 Procedural Methods

CS 354 17

Sierpinski Gasket

Rule based:

Repeat n times. As n →∞ Area→0

Perimeter →∞Not a normal geometric object

Page 18: CS 354 Procedural Methods

CS 354 18

Apply Sierpinski Gasket Rules Recursively

Page 19: CS 354 Procedural Methods

CS 354 19

Snow Flake Curve

Page 20: CS 354 Procedural Methods

CS 354 20

Other Axioms & Generators

Page 21: CS 354 Procedural Methods

CS 354 21

Tree Generation

An axial tree Sample tree generated from branching patterns

Page 22: CS 354 Procedural Methods

CS 354 22

Plant Generation Rules

Page 23: CS 354 Procedural Methods

CS 354 23

Stochastic L-systems

Probabilistic

Stochastic L-systems can generate natural variations

Page 24: CS 354 Procedural Methods

CS 354 24

More Plant Generation Rules

Page 25: CS 354 Procedural Methods

CS 354 25

Fractal Mountains

[Przemyslaw Prusinkiewicz & Mark Hammel, 1993]

Page 26: CS 354 Procedural Methods

CS 354 26

Different Fractal Mountains

Page 27: CS 354 Procedural Methods

CS 354 27

Domain-specific Procedural Artistry Tools

Page 28: CS 354 Procedural Methods

CS 354 28

Trees Really Matter Commercial product SpeedTree specializes at

drawing realistic trees fast

Page 29: CS 354 Procedural Methods

CS 354 29

Biological Inspiration

Pseudo-Darwinian animation evolution

Page 30: CS 354 Procedural Methods

CS 354 30

Procedural Generation of Buildings

Buildings have rules too Doors, windows, facades Consistency of style

Instant Architecturefaçade derivation…

Page 31: CS 354 Procedural Methods

CS 354 31

Procedural Generation of Cities! Cities are very detailed and complex

CityGen But follow regular rules – roads, blocks, respecting

topography, etc.

Page 32: CS 354 Procedural Methods

CS 354 32

Particle Systems

Page 33: CS 354 Procedural Methods

CS 354 33

33

Particle Systems andTheir Equations

pi = (xi, yi zi)

vi = dpi /dt = pi‘ = (dxi /dt, dyi /dt , zi /dt)

m vi‘= fi

Hard part is defining force vector

Page 34: CS 354 Procedural Methods

CS 354 34

34

Force Vector

Independent Particles Gravity Wind forces O(n) calulation

Coupled Particles O(n) Meshes Spring-Mass Systems

Coupled Particles O(n2) Attractive and repulsive forces

Page 35: CS 354 Procedural Methods

CS 354 35

35

Solution of Particle Systems

float time, delta state[6n], force[3n];state = initial_state();for(time = t0; time<final_time, time+=delta) { force = force_function(state, time); state = ode(force, state, time, delta); render(state, time)}

Page 36: CS 354 Procedural Methods

CS 354 36

36

Simple Forces

Consider force on particle i fi = fi(pi, vi) Gravity fi = g gi = (0, -g, 0) Wind forces Drag

pi(t0), vi(t0)

Page 37: CS 354 Procedural Methods

CS 354 37

37E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012

Attraction and Repulsion

Inverse square law f = -krd/|d|3

General case requires O(n2) calculation In most problems, the drop off is such that

not many particles contribute to the forces on any given particle

Sorting problem: is it O(n log n)?

Page 38: CS 354 Procedural Methods

CS 354 38

Noise Textures

Invented by Ken Perlin Academy Award winning idea

A texturing primitive Basis for “natural” looking textures and

phenomenon No memory/bandwidth requirements

Computed on the fly; no “source image” No mapping problem

Naturally 3D so not prone to “gift wrapping” issues Useful for range of applications and effects

Page 39: CS 354 Procedural Methods

CS 354 39

What is Noise?

Band-limited repeatable pseudo-random function Domain: Rn

Approximate to Gaussian filtered random noise

Implemented as a pseudo-random spline

On regular grid

Marble vasegenerated with

Perlin noise

Page 40: CS 354 Procedural Methods

CS 354 40

Variations on Noise

Use noise within other functions

turbulence

Page 41: CS 354 Procedural Methods

CS 354 41

Combining Noise Patterns

Sum noise patterns As frequency doubles, amplitude halves

Page 42: CS 354 Procedural Methods

CS 354 42

Turbulence Simulate turbulence by generating noise at

different octaves (scales)

Average those octaves:

Page 43: CS 354 Procedural Methods

CS 354 43

Generating Marble Pattern Start with sine pattern in solid texture

Then add turbulence Looks like veins in marble

Page 44: CS 354 Procedural Methods

CS 354 44

Variations on Marble

Scale the magnitude of the turbulence displacing the sine pattern

Page 45: CS 354 Procedural Methods

CS 354 45

Wood Pattern Start with cylindrical pattern

Compute sine of distance from center of cylinder Interpolate between dark and light brown color

Page 46: CS 354 Procedural Methods

CS 354 46

Irregular Wood Rings Now use small amount of turbulence to displace

the tree rings in the wood

Much less turbulence than marble case To preserve the rings

Page 47: CS 354 Procedural Methods

CS 354 47

Irregular Wood Grain

Also want turbulence in Z direction but scale it back to preserve the grain

less turbulence in z

Page 48: CS 354 Procedural Methods

CS 354 48

Shading withMarble and Wood

Page 49: CS 354 Procedural Methods

CS 354 49

Other Procedurally Modeled Phenomenon

Smoke Difficult for an artist to model Needs to billow and flow around objects

Page 50: CS 354 Procedural Methods

CS 354 50

Entire Book onProcedural Techniques

David Ebert, Ken Musgrave, Darwyn Peachey,Ken Perlin,Steve Worley

Page 51: CS 354 Procedural Methods

CS 354 51

Next Class Next lecture

Bezier curves How do we move smoothly and simply with control?

Project 2 Shading and lighting with GLSL Due Friday, April 6th