Presentation is loading. Please wait.

Presentation is loading. Please wait.

Procedural and Fractal Terrains

Similar presentations


Presentation on theme: "Procedural and Fractal Terrains"— Presentation transcript:

1 Procedural and Fractal Terrains

2 Gameplay goals for a terrain engine
Large enough to travel around for hours Detailed when seen at a human scale Dynamic modification of terrain data Runs at high, stable frame rates Need fast rotation of viewpoint

3 Technical goals Level-of-detail management (static or continuous?)
A lot of polygons (231 in un-reduced terrain, 70,000+ in a given tessellation) Efficient graphics primitives Near-field detail (geometric and color)

4

5

6

7

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

9 Terrain Map Connect samples into a mesh

10 Terrain Map Natural looking Use textures to model detail?
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

11 Fake Terrain Generate the heightfield:
Coarse height map + periodic details Procedural or function-based Random process

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

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

14 Terrain Coloring Striped 1D texture map.

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

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

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

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

19 Filtering FIR (Finite Impulse Response) filter:
Pass a “window” over the data Multiply data in window by weights Result = d1*w1 + d2*w2+ … + dN*wN Window + weights is called “filter kernel” Larger window grabs more data

20 Random Fault Lines Repeatedly:
+dHeight Repeatedly: Create a line that crosses terrain Add dHeight offset on one side of line dHeighti = dHeight0 + (i/n)(dHeightn -dHeight0) Select random endpoints to generate line Compute “side of line” by plugging X,Y into line equation

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

22 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

23 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 3x3 pixel window or 5x5 to check neighbors.

24 Particle Deposition

25 Procedural Modeling With Fractals
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

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

27 Two Fractal Properties
Self-similarity

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

29 Midpoint Subdivision Midpoint (recursive) subdivision

30 Midpoint Subdivision Brownian Motion Fractional 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

31 Fractional Brownian Motion
Equations are compute intensive Approximate with “A family of 1D Gaussians ” Zero mean Standard Deviation : S = k2-iH H = fractal dimension (roughness)

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

33 Fractal Mountains Recursively subdivide geometry by random number d:
–dHeight/2 < d < dHeight/2 At each recursion: dHeight *= 2-r r=1 : self-similar r>1 : large features early r<1 : large features late A B A B A B

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

35 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

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

37 Diamond-Square Subdivision
Alternate subdivision

38 Fractal Terrain

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

40 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?

41 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

42 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.

43 Caldera

44 Multi-Fractal This produces a ridged multi-fractal

45 Add a 1D Texture

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

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

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

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

50 max (Fractal, Smooth Noise)

51 max (Fractal, Smooth Noise)

52 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 height

53 Ridges

54 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.

55 Cracked Terrains Crawfis, 2002

56 Fractal Terrains Multifractals

57 Fractal Terrains Color, texture

58 Fractal Terrains

59 Ground Clutter Grass Rocks Trees Bushes

60 Placement issues

61

62 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.”

63 Erosion

64 Erosion by water

65 Erosion by wind and water


Download ppt "Procedural and Fractal Terrains"

Similar presentations


Ads by Google