610 likes | 625 Views
Explore advanced methods like Fractal Terrains, Fake Terrain, Fault Lines, and Particle Deposition for creating realistic 3D landscapes. Discover how to apply Perlin Noise, terrain coloring, and fractal properties to model natural phenomena with detailed terrain mesh subdivision techniques.
E N D
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
Terrain Map • Connect samples into a mesh
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 some way
Random Terrain • Simple: • Terrain(x,y) = rand( MAX_HEIGHT ) • Results in random noise • Next step: • Smooth the terrain generated above • FIR filter:
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
+dHeight Random Fault Lines • 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
More Realistic Faults • Apply FIR filter to faulted heightmap • Smooth out abrupt fault transitions: “Erosion”
Variations • Use a smoothstep function
Variations • Use a bump: • -d at distance R away • +d at zero. • Images from lighthouse3d • Used a cosine here.
Variations • Cosine Bump
Variations • Do not need to use a half-plane. Any function that splits space into two halves will work. • Radial functions • Etc.
Particle Deposition • Drop particles in areas where you want volcanic mountains • Particles flow downhill until they come to rest • Move the drop point to create interesting peaks
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.
Perlin Noise • Using a sampling of 2D perlin Noise provides smooth hills.
Terrain Coloring • Using a 1D texture map based on the altitude can provide many useful mapping.
Terrain Coloring • Striped 1D texture map.
Terrain Coloring • Using a 2D texture map provides richer detail, but is independent of the terrain.
Terrain Coloring • More advanced coloring is based on altitude and slope.
Rolling Hills • Scaling in one dimension gives smooth rolling hills.
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
Two Fractal Properties • Self-similarity
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 • 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 with “A family of 1D Gaussians ” • Zero mean • Standard Deviation : S = k2-iH H = fractal dimension (roughness)
Fractional Brownian Motion • Fractal dimension = roughness, I.e. H
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
A B A B A B Fractal Mountains • Fournier & Fussell (1980) • 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
Triangle Subdivision • Subdivide a triangle into 4 triangles at edge midpoint
Quadrilateral Subdivision • Subdivide a quad into 4 quads at edge midpoints and a new center point.
Diamond-Square Subdivision • Alternate subdivision • Alleviates some creases on the grid.
Mesh Subdivision • Square-square Subdivision • Addresses “creasing problem” (slope discontinuities) • Subdivide parametric patches
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? • Implies that it is not a height-map. • Could use Geometry Images here though.
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 the surface upside down. • Or, reflect about a maximum value. • Provides a volcano-like effect.
Multi-Fractal • This produces a ridged multi-fractal
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 low areas.
More Controls • Multiply by a Guassian to limit the mountain range.
More Controls • To create valleys, create a lower amplitude and rather smooth terrain to use as the max operator.