CIS 781 Fractal Terrains Terrain Map Height Map

  • Slides: 56
Download presentation
CIS 781 Fractal Terrains

CIS 781 Fractal Terrains

Terrain Map • Height Map z = f(x, y) x and y are sampled

Terrain Map • Height Map z = f(x, y) x and y are sampled on a 2 D integer grid – Real data : Satellite, Elevation maps – Synthetic : Texture map, Noise functions

Terrain Map • Connect samples into a mesh

Terrain Map • Connect samples into a mesh

Terrain Map • Natural looking – Model high detail – Size • Storage (Millions

Terrain Map • Natural looking – Model high detail – Size • Storage (Millions of polygons) • Rendering speed – Zoom-in, zoom-out (does not scale well) • Use textures to model detail? • Not real geometry (bump mapping at silhouettes) • Not scale independent • Repeated textures do not work well

Fake Terrain • Generate the heightfield • Random process • Reflects “realistic” terrain in

Fake Terrain • Generate the heightfield • Random process • Reflects “realistic” terrain in some way

Random Terrain • Simple: – Terrain(x, y) = rand( MAX_HEIGHT ) – Results in

Random Terrain • Simple: – Terrain(x, y) = rand( MAX_HEIGHT ) – Results in random noise • Next step: – Smooth the terrain generated above – FIR filter: 1 1 1 1 1 R

Filtering • FIR (Finite Impulse Response) filter: – Pass a “window” over the data

Filtering • FIR (Finite Impulse Response) filter: – Pass a “window” over the data – Multiply data in window by weights • Result = d 1*w 1 + d 2*w 2+ … + d. N*w. N – Window + weights is called “filter kernel” – Larger window grabs more data

Random Fault Lines • Repeatedly: – Create a line that crosses terrain – Add

Random Fault Lines • Repeatedly: – Create a line that crosses terrain – Add d. Height offset on one side of line – d. Heighti = d. Height 0 + (i/n)(d. Heightn -d. Height 0) – Select random endpoints to generate line • Compute “side of line” by plugging X, Y into line equation +d. Height

More Realistic Faults • Apply FIR filter to faulted heightmap • Smooth out abrupt

More Realistic Faults • Apply FIR filter to faulted heightmap • Smooth out abrupt fault transitions: “Erosion”

Particle Deposition • Drop particles in areas where you want volcanic mountains • Particles

Particle Deposition • Drop particles in areas where you want volcanic mountains • Particles flow downhill until they have cause to rest • Move the drop point to create interesting peak

Particle Deposition • Flow computation – At given point, find lowest neighbor – If

Particle Deposition • Flow computation – At given point, find lowest neighbor – If local geometry is not flat enough, move new particle on top of lowest neighbor • Roll down hill – “Flat enough” = 27 degrees or so – Check 3 x 3 pixel window or 5 x 5 to check neighbors.

Particle Deposition

Particle Deposition

Perlin Noise • Using a sampling of 2 D perlin Noise provides smooth hills.

Perlin Noise • Using a sampling of 2 D perlin Noise provides smooth hills.

Terrain Coloring • Using a 1 D texture map based on the altitude can

Terrain Coloring • Using a 1 D texture map based on the altitude can provide many useful mapping.

Terrain Coloring • Striped 1 D texture map.

Terrain Coloring • Striped 1 D texture map.

Terrain Coloring • Using a 2 D texture map provides richer detail, but is

Terrain Coloring • Using a 2 D texture map provides richer detail, but is independent of the terrain.

Terrain Coloring • More advanced coloring is based on altitude and slope.

Terrain Coloring • More advanced coloring is based on altitude and slope.

Rolling Hills • Scaling in one dimension gives smooth rolling hills.

Rolling Hills • Scaling in one dimension gives smooth rolling hills.

Procedural Modeling With Fractals • Procedural Modeling – Compute geometry “on-the-fly” • Fractals –

Procedural Modeling With Fractals • Procedural Modeling – Compute geometry “on-the-fly” • Fractals – Model Natural Phenomena - Self Similarity • Mountains, fire, clouds, etc. – Scales to infinity • Add or “make up” natural looking details with mathematical tools

Fractals “Repetition of form over a variety of scales” • Mandelbrot set, Julia set

Fractals “Repetition of form over a variety of scales” • Mandelbrot set, Julia set

Two Fractal Properties • Self-similarity

Two Fractal Properties • Self-similarity

Two Fractal Properties • Fractal Dimension – Euclidean dimensions : 1, 2, 3, 4,

Two Fractal Properties • Fractal Dimension – Euclidean dimensions : 1, 2, 3, 4, … – Fractal : 1. 2342, 2. 7656 – Measure of detail or roughness of a fractal D = (ln N)/(ln 1/s)

Midpoint Subdivision • Midpoint (recursive) subdivision

Midpoint Subdivision • Midpoint (recursive) subdivision

Midpoint Subdivision • Brownian Motion – Describes random movement of particles in a gas

Midpoint Subdivision • Brownian Motion – Describes random movement of particles in a gas or fluid • Fractional Brownian Motion – Brownian Motion + Fractal Dimension – A useful model for natural phenomena

Fractional Brownian Motion • Fractional Brownian Motion – Equations are compute intensive – Approximate

Fractional Brownian Motion • Fractional Brownian Motion – Equations are compute intensive – Approximate with “A family of 1 D Gaussians ” • Zero mean • Standard Deviation : S = k 2 -i. H H = fractal dimension (roughness)

Fractional Brownian Motion • Fractal dimension = roughness, I. e. H

Fractional Brownian Motion • Fractal dimension = roughness, I. e. H

Terrain Modeling Criteria • Input – Initial coarse mesh + stochastic parameters • Two

Terrain Modeling Criteria • Input – Initial coarse mesh + stochastic parameters • Two criteria – Internal Consistency • Reproducibility : Model is independent of position and orientation • Associate “random numbers” to point index – External Consistency • Continuity between adjacent primitives

Fractal Mountains • Fournier & Fussell (1980) • Recursively subdivide geometry by random number

Fractal Mountains • Fournier & Fussell (1980) • Recursively subdivide geometry by random number d: –d. Height/2 < d. Height/2 • At each recursion: – – 2 -r d. Height *= r=1 : self-similar r>1 : large features early r<1 : large features late A B A B

Triangle Subdivision • Subdivide a triangle into 4 triangles at edge midpoint

Triangle Subdivision • Subdivide a triangle into 4 triangles at edge midpoint

Quadrilateral Subdivision • Subdivide a quad into 4 quads at edge midpoints and a

Quadrilateral Subdivision • Subdivide a quad into 4 quads at edge midpoints and a new center point.

Diamond-Square Subdivision • Alternate subdivision

Diamond-Square Subdivision • Alternate subdivision

Fractal Terrain

Fractal Terrain

Mesh Subdivision • Square-square Subdivision – Addresses “creasing problem” (slope discontinuities) • Subdivide parametric

Mesh Subdivision • Square-square Subdivision – Addresses “creasing problem” (slope discontinuities) • Subdivide parametric patches

Mesh Subdivision • Displacement is scaled by the recursion level. – | b –

Mesh Subdivision • Displacement is scaled by the recursion level. – | b – a | -rn • When do you stop the recursion? – Pixel resolution • Displace upward, or towards the normal to the surface?

Mesh Subdivision • External Consistency – Avoid tears between neighboring polygons – How do

Mesh Subdivision • External Consistency – Avoid tears between neighboring polygons – How do we compute the normals? • Average polygon normals at each vertex. • Propagate normals down the recursion • Cheaper : use the original mesh normals only

Ridged Fractal Terrains • To create sharp peaks, add an absolute value and flip

Ridged Fractal Terrains • To create sharp peaks, add an absolute value and flip the surface upside down. • Or, reflect about a maximum value. • Provides a volcano-like effect.

Caldera

Caldera

Multi-Fractal • This produces a ridged multi-fractal

Multi-Fractal • This produces a ridged multi-fractal

Add a 1 D Texture

Add a 1 D Texture

More Controls • To create plateaus, add a min function to flatten out high

More Controls • To create plateaus, add a min function to flatten out high areas.

More Controls • To create a plain, add a max function to flatten out

More Controls • To create a plain, add a max function to flatten out low areas.

More Controls • Multiply by a Guassian to limit the mountain range.

More Controls • Multiply by a Guassian to limit the mountain range.

More Controls • To create valleys, create a lower amplitude and rather smooth terrain

More Controls • To create valleys, create a lower amplitude and rather smooth terrain to use as the max operator.

max (Fractal, Smooth Noise)

max (Fractal, Smooth Noise)

max (Fractal, Smooth Noise)

max (Fractal, Smooth Noise)

Ridges • Quantize a terrain to create ridges – Use directly or as the

Ridges • Quantize a terrain to create ridges – Use directly or as the min function. – Can also be done as a transfer function that maps f(x)->g(x). New height

Ridges

Ridges

Other techniques • Cracked terrains for dry lakes and riverbeds. • Throw random points

Other techniques • Cracked terrains for dry lakes and riverbeds. • Throw random points onto the plane. • Construct the Voronoi diagram and use the graph to etch into the terrain.

Cracked Terrains Crawfis, 2002

Cracked Terrains Crawfis, 2002

Fractal Terrains • Multifractals

Fractal Terrains • Multifractals

Fractal Terrains • Color, texture

Fractal Terrains • Color, texture

Fractal Terrains

Fractal Terrains

Erosion - Higher-level control • Musgrave, et al. “The Synthesis and Rendering of Eroded

Erosion - Higher-level control • Musgrave, et al. “The Synthesis and Rendering of Eroded Fractal Terrains”, Siggraph 1989. • Hydraulic Erosion – Water (rain) depositing to settle in height field • Thermal Weathering – “Any material that knocks material loose, which then falls down to pile up at the bottom of an incline. ”

Erosion

Erosion

Erosion by water

Erosion by water

Erosion by wind and water

Erosion by wind and water