0% found this document useful (0 votes)
216 views20 pages

Realtime Procedural Terrain Generation PDF

The document summarizes methods for real-time procedural generation of eroded fractal terrain for use in computer games. It presents fast algorithms to synthesize natural-looking fractal terrain and then evaluates and optimizes commonly used erosion algorithms. A new faster erosion algorithm is proposed. Factors like playability and modifications for terrain are also discussed.

Uploaded by

Mdain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
216 views20 pages

Realtime Procedural Terrain Generation PDF

The document summarizes methods for real-time procedural generation of eroded fractal terrain for use in computer games. It presents fast algorithms to synthesize natural-looking fractal terrain and then evaluates and optimizes commonly used erosion algorithms. A new faster erosion algorithm is proposed. Factors like playability and modifications for terrain are also discussed.

Uploaded by

Mdain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

Realtime Procedural Terrain Generation

Realtime Synthesis of Eroded Fractal Terrain for Use in Computer Games

Jacob Olsen, [email protected]


Department of Mathematics And Computer Science (IMADA)
University of Southern Denmark
October 31, 2004

Abstract Definitions
The main goal of this paper is to provide an Data representation
overview of a variety of methods for synthesis
of eroded terrain for use in computer games, VR
In the algorithms described in this paper, terrain
worlds and the like. Traditionally, such software
will be represented by two-dimensional height
uses either predefined terrains or runtime gen-
maps using floating point values between 0 and 1.
erated data based on simple fractal noise tech-
Unless otherwise stated, all examples use square
niques.
maps with side length N = 29 = 512, giving a
In recent years, the advances in processing power total of N 2 = 218 = 262144 cells, each cell con-
of average home computers have made it pos- taining a height value.
sible to simulate erosion processes near-realtime
by putting emphasis on speed at the expense of The height map is denoted H and the individual
physical correctness. This paper presents a fast cells are addressed as hi ,j , where i and j are coor-
method to synthesize natural looking fractal ter- dinates ranging from 0 to 511. Some calculations
rain and then proceeds to evaluate and suggest will address cells outside this range; in this case,
optimizations for two of the most commonly used modulo is used to wrap the coordinates around so
erosion algorithms [1, 2]. With some criteria for that the right neighbour of a right-most cell will
applicability in computer games in mind, a new be the left-most cell in the same row etc.
and much faster algorithm is then proposed. Fi- All implementations were done i Java, and all cal-
nally, a few issues regarding terrain modifications culation times are from tests executed on a fairly
for maximum playability are discussed. standard 2.4 GHz Pentium 4 PC.

Defining erosion

The effects of erosion are difficult to describe


mathematically: The term erosion covers many
naturally occurring phenomena, and different ter-
rain types and climates will produce many differ-
ent kinds of changes to a landscape. For sim-
plicity, a set of desirable traits (from a computer
game development perspective) that will be used
to measure how eroded a height map is, is defined.
Overall, most types of erosion dissolve material
from steep slopes, transport it downhill and then
deposit the material at lower inclinations. This
Figure 1: A rendered view of a synthesized, tends to make steep slopes even steeper, and flat-
eroded terrain created with the techniques dis- ten out low-altitude terrain when the transported
cussed in this paper. material is deposited. To aid in the analysis of the
changes in inclination, the slope map S is defined

1
such that of the frequency, i.e.

si,j = max(|hi,j − hi−1,j |, 1


P (f ) =
|hi,j − hi+1,j |, fa
|hi,j − hi,j−1 |, where P (f ) is the power function of the frequency
|hi,j − hi,j+1 |) and a is close to 1. This kind of noise approx-
imates real-world uneroded mountainous terrain
in other words, the greatest of the height differ- well and has been used widely in computer graph-
ences between the cell and its four neighbours in ics for the past decades. Two methods for gener-
a Von Neumann neighbourhood. ating 1/f -like noise, spectral synthesis and mid-
This paper focuses on the synthesis of eroded ter- point displacement, are discussed below.
rain for use in computer games; therefore, the In generating a terrain base for the erosion al-
ideal for eroded terrain must suit this applica- gorithms to work on, it is worth noting that the
tion. Physical correctness and visual appearance closer the terrain base is to the desired result,
are secondary, what matters is applicability. In the less work is required by the (often calculation
most computer games and VR environments us- heavy) erosion algorithm itself. To help create a
ing large-scale outdoor terrain, persons or vehicles terrain base with better characteristics of eroded
move around on the terrain, and various struc- terrain, the use of Voronoi diagrams and pertur-
tures are placed on the terrain. Movement and bation filtering are introduced below.
structure placing is often restricted to low incli-
nations, which means that a low average value
of a height map’s corresponding slope map is de- Spectral synthesis
sirable. This rule alone would make a perfectly Spectral synthesis simulates 1/f noise by adding
flat height map ideal, which is why a second rule several octaves (layers) together, each octave con-
is added saying the greater the standard devia- sisting of noise with all its spectral energy concen-
tion of the slope map, the better. The ideal for trated on a single frequency. For each octave, the
eroded terrain is therefore a height map whose noise frequency is doubled and the amplitude A
corresponding slope map has a low mean value is calculated by
(reflecting the overall flattening of the terrain due A = pi
to material deposition) and a high standard devi-
ation (material is dissolved from steep areas mak- where i is the octave number starting with 0 at
ing them even steeper, and deposition flattens the the lowest frequency and p is called the persis-
flat areas further). The slope map mean value, s̄, tence. Letting p = 0.5 will approximate 1/f noise
and standard deviation, σs , are defined on the because each time the frequency is doubled in the
slope map S as follows: next octave, the amplitude will be halved.
The octaves themselves are created by filling
N −1 N −1
1 X X in evenly spaced pseudo random numbers corre-
s̄ = 2 si,j sponding to the octaves’s frequency, and then cal-
N i=0 j=0
culate the remaining values by interpolation - see
Figure 2 for a visual comparison of interpolation
methods. While cubic interpolation gives the best
v
u 1 NX
u −1 N −1
results, the slightly visible vertical and horizontal
X
σs = t (si,j − s̄)2
N 2 i=0 j=0 artifacts caused by linear interpolation are an ac-
ceptable trade-off for a computation time reduced
Using these, an overall ”erosion score”, ε, is de- to roughly one fifth.
fined as
σs
ε= Midpoint displacement

(on the assumption that s̄ 6= 0) Another approach at simulating 1/f noise is by
a midpoint displacement method, in this case the
diamond-square algorithm [3, 4, 5]. Instead of
Generation of base terrain calculating every cell in several octaves (up to 9
octaves with N = 29 ) and then adding together
A technique often used for fast terrain genera- the octaves, the value of each cell need only be
tion is simulating 1/f noise (also known as ”pink calculated once.
noise”) which is characterized by the spectral en- The midpoint displacement method works by re-
ergy density being proportional to the reciprocal cursively calculating the missing values halfway

2
eroded look by multiplying the size of the offset
range with the height average when calculating
new values. This causes low altitude areas to be-
come smoother, thereby simulating deposition of
eroded material. This method is referred to as
smoothed midpoint displacement.

Figure 2: Cubic interpolation (left) versus lin-


ear interpolation (right) for the spectral synthesis
algorithm.

between already known values and then randomly


offset the new values inside a range determined
by the current depth of the recursion. With Figure 4: Gaussian (left) versus uniform (right)
a persistence of 0.5, this range is halved with distribution of random offsets for the midpoint
each recursive step, and an approximation of displacement algorithm.
1/f noise is created. Ideally, the random offsets
should have a gaussian distribution inside the off-
set range, but for the purpose of synthesizing ter-
rain, uniformly distributed values are acceptable Voronoi diagrams
(and much faster to calculate).
The implementation done for this paper is the The problem with using 1/f noise for simulating
square-diamond algorithm, named after the or- real world terrain is that it is statistically homoge-
der in which midpoint values are determined (see neous and isotropic - properties that real terrain
Figure 3). does not share. One way to break the monotony
and control the major characteristics of the land-
s s c c c s c c c c c s c s c scape are Voronoi diagrams whose use in proce-
s s s c s c s
s s c s c c c c s c s c dural texture generation has been described by
s s s c s c s Steven Worley [6]. Voronoi diagrams can be used
s s c c c s c c c c c s c s c for a variety of effects when creating procedural
a b c d e textures - most variants resemble some sort of
cell-like structures that can be used to simulate
Figure 3: Two iterations of the diamond-square tissue, sponge, scales, pebbles, flagstones, or in
algorithm. Pseudo random number are used for this case, entire mountains.
initial values in step a. In step b (the ”diamond” The implementation used in this paper works by
step) a new value is found by offsetting the av- dividing the map into regions and then randomly
erage of the four values of step a. Step c (the place a number of ”feature points” in each re-
”square” step) fills in the rest of the midpoint gion. For each cell in the map, a set of values
values also by offsetting the average of the four dn , n = 1, 2, 3, . . . are calculated according to a
neighbours of each new point. Steps d and e show defined distance metric so that d1 is the distance
the next iteration. to the nearest feature point, d2 is the distance to
the next nearest distance point etc. Linear com-
Figure 4 shows a visual comparison of the two binations of the form
ways of distributing values inside the random off-
set ranges. Although uniform distribution pro- h = c1 d1 + c2 d2 + c3 d3 + · · · + cn dn
duces a more jagged terrain, this can be compen-
sated for by lowering the persistence. Since the with coefficients c1 . . . cn will then produce
version using gaussian distribution takes 4 times the cellular structures - see Figure 5 for ex-
longer to generate, uniform distribution is to be amples. For creating mountainous features,
preferred. the coefficients c1 = −1 and c2 = 1 (with
The midpoint displacement method also allows the rest being zeroes) are used as it can add
for individual adjustments of the random off- distinct ridge lines and connected riverbeds to
set ranges depending on coordinates or altitude, the terrain. These values also give the Voronoi
which can be used to give the terrain a more diagrams another useful property which will be

3
Combination and perturbation
Although Voronoi diagrams have some useful
properties that 1/f noise lacks, they are no sub-
stitute for the noise functions. The best results
are achieved with some combination of both; in
this case two thirds smoothed diamond-square
method noise and one third Voronoi diagram with
coefficients c1 = −1 and c2 = 1 will be used. This
combination is referred to as the combined height
map.
To crumple the straight lines of the Voronoi di-
agram, a perturbation filter as described in [6]
pages 90-91 is applied. This filter works by us-
ing a noise function (similar to the ones described
above) to calculate a displacement with random
distance and direction for each cell. The com-
bined height map before and after perturbation
can be seen in Figure 7. The magnitude of the
Figure 5: Examples of Voronoi diagrams with perturbation filtering is set to 0.25, meaning that
coefficients c1 = −1 (upper left), c2 = 1 (upper a given point in the height map cannot be dis-
right), c3 = 1 (bottom left), c1 = −1 and c2 = 1 placed more than N4 cells.
(bottom right). The perturbation filtering itself also increases the
erosion score because some areas are stretched
and some are compressed, which increases σs .
covered in the section regarding playability issues. Figure 8 shows the average relationship between
perturbation magnitude and erosion score for at
Normally, distances are determined by the Eu- large number of test runs on the combined height
clidean distance metric map generated from different random seed num-
p bers. Erosion score rises to a maximum at a per-
d = dx2 + dy 2 turbation magnitude of 0.25 and then slowly de-
clines.
which is quite slow because of the square root.
Changing the distance metric to

d = dx2 + dy 2

produces a large speedup. As Figure 6 shows, the


difference in the resulting height map is insignif-
icant. This optimization together with a reduc-
tion in search radius when finding nearest feature
points (which occasionally produces minor errors)
reduces calculation time to one third.
Figure 7: The combined height map before per-
turbation (left) and after (right).

The final base terrain is shown in Figure 9. For


visual comparison, all image examples of various
erosion algorithms in the following sections use
this terrain as a starting point. Figure 10 shows
a rendered view of this height map.

Analysis
Figure 6: Euclidean distance metric (left) ver- Average calculation times and erosion scores for
sus the faster distance metric (right) for Voronoi the methods discussed in this section can be seen
diagrams. in Table 1. As can be seen, the implementations
of spectral synthesis and midpoint displacement

4
0.675
0.650
0.625
Erosion score

0.600
0.575
0.550
0.525
0.500
0.475
0.450
0.00 0.25 0.50 0.75 1.00
Perturbation magnitude

Figure 8: The relationship between perturbation


magnitude and erosion score for the combined
height map.

all achieve nearly the same erosion score, but the Figure 9: The base terrain used in image exam-
midpoint displacement method with uniform ran- ples of the erosion algorithms.
dom offset distribution is by far the fastest. The
smoothed version is only marginally slower, but done by examining each cell and its neighbour-
manages to achieve a higher erosion score. hood in turn. Two different types of neighbour-
The Voronoi diagrams in themselves do not score hoods are used: The Moore neighbourhood which
as much as the noise functions, but the faster met- includes all 8 neighbours of a cell, and the Von
ric seems to be better suited for the coefficients Neumann neighbourhood which only includes 4
used. When combined with the modified version of the neighbouring cells (see Figure 11). With
of the midpoint displacement method, the ero- the currently examined cell having value h and
sion score almost reaches the level of the modified its neighbours being named hi , the height differ-
midpoint displacement method alone. As shown ence to each neighbour, di , is defined as
in Figure 8, the perturbation filter improves the
erosion score even further. d i = h − hi
With N = 512 the base terrain can be synthesized
in less than 1 second. Even with N = 1024, the meaning that lower neighbours produce positive
synthesis of the base terrain is done in less than height differences. For maximum correctness, the
3 seconds. Moore neighbourhood was used in both reference
implementations.

Erosion algorithms Thermal erosion


Two types of erosion algorithms are examined in Overview
this section, namely thermal erosion (sometimes
referred to as thermal weathering) and hydraulic Thermal erosion simulates material braking loose
erosion. These were first described by Ken Mus- and sliding down slopes to pile up at the bottom.
grave et al in 1989 [1], and have since established The reference implementation works as follows: A
themselves as a base from which various improve- percentage of the material at the top of a slope
ments (mostly in terms of physical correctness) whose inclination is above a threshold value - the
have been suggested [2, 7, 8, 9, 10]. talus angle T - will be moved down the slope until
A reference implementation of each type is com- the inclination reaches T :
pared to speed optimized version that will still

di > T : hi + c(di − T )
deliver comparable results. For thermal erosion, hi =
d i ≤ T : hi
the original method suggested in [1] is used, while
a version of hydraulic erosion suggested in [2] is This is illustrated in Figure 12: At the first
used because of its speed. timestep, d1 = T and d2 > T , which means that
Both methods are iterated cellular automata material will be moved from h to h2 . With c = 1,
meaning that calculations in each iteration are the amount of moved material results in d2 = T

5
Type N Calc. time Erosion score
Spectral synthesis, cubic interpolation 512 0.783 s 0.425
Spectral synthesis, linear interpolation 512 0.157 s 0.417
Midpoint displacement, Gaussian distribution 512 0.439 s 0.438
Midpoint displacement, uniform distribution 512 0.108 s 0.401
Midpoint displacement, uniform distribution, smoothed 512 0.144 s 0.478
Voronoi diagram, Euclidean metric, long search range 512 1.322 s 0.323
Voronoi diagram, fast metric, short search range 512 0.468 s 0.347
Noise and Voronoi combination 512 0.709 s 0.460
Noise and Voronoi combination, perturbed 512 0.831 s 0.657
Noise and Voronoi combination, perturbed 1024 2.738 s 0.673

Table 1: Calculation times and erosion scores for the methods discussed in the first section. Calculation
times for combinations include time to calculate the noise and Voronoi maps. All numbers are averages
from a large number of test runs.

h1 h2 h3 h1

h4 h h5 h2 h h3

h6 h7 h8 h4

Figure 11: Moore (left) and Von Neumann


(right) neighbourhoods for cellular automata.

Optimizations
To produce a speed optimized version of the ref-
erence implementation, four changes were made:
Figure 10: A rendered view of the base terrain
used in image examples of the erosion algorithms. 1. A Von Neumann neighbourhood was used in-
For easy comparison, all rendered views use the stead of the Moore neighbourhood.
same camera position and direction.
2. Material distribution was changed so that
material is only distributed to the lowest
neighbour instead of all lower neighbours.
and d1 < T . However, this is a simplified exam-
ple where material from h only needs to be moved 3. Material distribution was changed to allow
to one neighbour cell. In the case where several more material to be moved per iteration.
neighbours whose height difference is above the
4. The calculations for each cell changes the
talus angle exist, the moved material must be dis-
height map immediately instead of being
tributed after the form
written to a difference map that is applied
di after an entire iteration is completed.
hi = hi + c(dmax − T ) ×
dtotal The reference implementation maintains values
for dmax and dtotal , which means that for every
where dmax is the greatest of the di and dtotal is neighbour hi of a cell h, the following must be
the sum of the di greater than T . done:
A reasonable value for c is 0.5; higher values may
cause oscillation when the changes to the height d i = h − hi
map are applied only after completion of an en- if (di > talus) :
tire iteration, and lower values will simply cause dtotal = dtotal + di
slopes steeper than T a slower asymptotical ap- if (di > dmax ) :
proach to the talus angle. For the talus threshold, dmax = di
a value of T = N4 was chosen.

6
the height map remains unchanged until all cells
d1 = T
d2 > T have been processed. One way to solve this is to
change the height map immediately when mov-
ing material - in the above example this would
h1 h h2 mean that the hole would not receive any more
material once it was raised to a level where the
height differences to the surrounding cells were
t=0
below the talus threshold. Another advantage of
direct changes to the height map is a slight in-
crease in calculation speed.
d1 < T d2 = T
When experimenting with different kinds of
neighbourhoods, it was also noted that a ”ro-
tated” version of the Von Neumann neighbour-
h1 h h2 hood (see Figure 13) gave slightly better results
both in terms of higher erosion score and less dif-
t=1 ference between the two versions.

Figure 12: A simplified example of thermal ero- h1 h2


sion: d2 is greater than the talus angle, so ma-
terial is moved from h to h2 until d2 equals the h
talus angle.

h3 h4
Switching from the Moore neighbourhood to the
Von Neumann neighbourhood will halve the num-
ber of times these conditional checks have to be
done. Since the amount of moved material per Figure 13: The modified Von Neumann neigh-
cell is proportional to dmax , using the Von Neu- bourhood used in the speed optimized version of
mann neighbourhood will move the same amount thermal erosion.
of material 50% of the time. Even if the dmax of
the Moore neighbourhood is outside of the Von
Neumann neighbourhood, the dmax of the Von Analysis
Neumann neighbourhood still tends to be close
Calculation time averages for the first 500 itera-
to its value.
tions of the two implementations can be seen in
When the amount of material to be moved has
Figure 14. Time required per iteration remains
been calculated, each neighbour hi whose di > T
di constant for both implementations, but the ref-
receives a fraction proportional to dtotal (where
erence implementation takes 6 times longer; 500
dtotal is the sum of the di greater than T ). This iterations are calculated in 60 seconds, while the
can be simplified a lot by distributing material speed optimized version does it in 10 seconds.
to the lowest neighbour only as this renders the Figure 15 shows erosion score averages of the
calculation of dtotal and the fractions to be dis- first 500 iterations. The reference implementa-
tributed superfluous. A drawback is that less ma- tion scores 5% better after 500 iterations, but
terial can be moved per cell, which can partly be the speed optimized version seems to be more ef-
compensated for by moving as much material ∆h fective during the first 80 iterations. To explore
as possible: this further, a new graph was created, showing
dmax
∆h = the height map difference after every 10 iterations
2 (see Figure 16). The optimized version seems to
This causes h to be levelled with its lowest neigh- stabilize faster, meaning that most of the change
bour if their height difference is greater than T . is done during the first 50 iterations. The ref-
In the reference implementation, only a percent- erence implementation does more change overall
age c of the maximum amount of material to be during the 500 iterations, but does not seem to
moved was transfered. This was done to avoid be stabilizing until after 150 iterations.
oscillation, and the same problem applies here: For practical or visual applications, no more than
Four large height values surrounding a deep hole 50 iterations of any of the versions are needed to
may not only fill up the hole, but create a tall change the shape of the terrain to show the dis-
spike instead. Oscillations like this occur because tinct effects of thermal erosion, namely the con-

7
60 0.008

Change per 10 iterations


50 0.007
0.006
40 0.005
Time/s

30 0.004
20 0.003
0.002
10 0.001
0 0.000
0 100 200 300 400 500 0 100 200 300 400 500
Iterations Iterations

Reference Optimized Reference Optimized

Figure 14: Calculation times of the first 500 it- Figure 16: Change per 10 iterations of the first
erations of the reference and optimized implemen- 500 iterations of the reference and optimized im-
tation of thermal erosion. plementation of thermal erosion.

Hydraulic erosion
0.95
Overview
0.90
0.85 Hydraulic erosion simulates changes to the ter-
Erosion score

0.80 rain caused by flowing water dissolving material,


0.75 transporting it and depositing it elsewhere.
0.70 For the reference implementation of hydraulic
0.65 erosion, a slightly altered version of Beneš and
0.60 Forsbach’s method [2] has been used. The algo-
0.55 rithm is split up into four independent steps:
0 100 200 300 400 500
Iterations 1. Appearance of new water.

Reference Optimized 2. Water eroding the underlying terrain and


capturing the dissolved material.

Figure 15: Erosion scores of the first 500 itera- 3. Transportation of water and sediment.
tions of the reference and optimized implementa-
tion of thermal erosion. 4. Evaporation of water and deposition of sedi-
ment.

Apart from the height map, hydraulic erosion also


maintains a water map W and a sediment map M
stant angled slopes. Figure 17 compares height for keeping track of the flow of water and dissolved
maps produced by the two versions after 50 it- material.
erations, and Figure 18 shows rendered views of In step 1, a constant amount of water Kr is added
these height maps. to each cell every iteration to simulate rain:
The difference between the outputs of the two im- wi,j = wi,j + Kr
plementations after 50 iterations is 2% on aver-
age, where a difference of 100% corresponds to a In step 2, an amount of the height value propor-
height map with all height values at 0 versus a tional to the amount of water present in the same
height map with all height values at 1. cell is converted to sediment:

While thermal erosion manages to increase the hi,j = hi,j − Ks × wi,j


erosion score by lowering the angle of most slopes, mi,j = mi,j + Ks × wi,j
terrains produced by this kind of erosion does not
resemble the ideal defined earlier since the con- where Ks is the solubility constant of the terrain.
stant angled slopes leave very little completely flat In step 3, the water and its contents of dissolved
area. material are transported following a set of rules

8
Figure 17: Comparison between the reference implementation of thermal erosion (left) and the speed
optimized version (right). Images show the height map after 50 iterations.

similar to the material distribution in thermal cell. The amount of sediment ∆mi to be trans-
erosion. Only now, water is being distributed to ported to a neighbouring cell i is therefore
the neighbour cells instead and the distribution
seeks to level out any height differences of the to- ∆wi
∆mi = m ×
tal altitude a = h + w so that w

a = ai In step 4, a percentage of the water w deter-


mined by the evaporation coefficient Ke evapo-
for each neighbour i in the cell’s neighbourhood rates again:
whose total height is less than that of the cur-
rently examined cell. w = w × (1 − Ke )
The amount of water moved to the ith neighbour,
∆wi , is calculated by The maximum amount of sediment mmax that
can be carried by the water w is determined by
di the sediment capacity coefficient Kc such that
∆wi = min(w, ∆a) ×
dtotal
mmax = Kc × w
where ∆a = a−ā is the total height of the current
cell minus the average total height of the cells
Once part of the water has evaporated, the
involved in the distribution, di = a − ai and dtotal
amount of sediment exceeding the maximum ca-
is the sum of all positive di .
pacity (if any), ∆m, is transfered back to h:
If the total amount of water to be moved away
from the currently examined cell is less than the
∆m = max(0, m − mmax )
amount of water present in this cell, an amount
equalling the difference between the total height m = m − ∆m
a of the cell and the average total height ā af- h = h + ∆m
ter water distribution, is moved. If more water
needs to be moved away than the cell holds, what- The various constants and coefficients used in the
ever amount of water present will be distributed reference implementation are:
among the lower neighbours. These two cases are
illustrated in Figure 19. Kr = 0.01
Once the water distribution has been calculated, Ks = 0.01
sediment distribution follows quite easily. An as-
Ke = 0.5
sumption is made that all dissolved material m is
uniformly distributed within the water w of the Kc = 0.01

9
Figure 18: Renderings from the two height maps shown in Figure 17 - the left image shows the refer-
ence implementation after 50 iterations, and the right image shows the speed optimized version after 50
iterations.

a 3. Instead of maintaining a sediment map, all


a–a<w
a water is assumed to contain an equal amount
w1 w1 of dissolved material.
w w
w2 w2 4. The calculations for each cell change the
h1 h h2 h1 h h2 height and water maps immediately instead
of being written to difference maps that are
t=0 t=1 applied after an entire iteration is completed.
As with the speed optimizations of thermal
a erosion, the change in neighbourhood is done to
w a–a>w halve the number of neighbour cells for which
the following needs to be done for every cell in
a
w1 w1 each iteration:
w2
ai = hi + mi
h1 h h2 h1 h h2
di = a − ai
t=0 t=1 if (di > 0) :
dtotal = dtotal + di
atotal = atotal + ai
Figure 19: Two cases for water distribution in cells = cells + 1
hydraulic erosion. In the first case, only a frac-
tion of the water w is moved to level out the total where atotal and cells are used to calculate ā. The
heights, while in the second case all of the avail- change of neighbourhood stills results in roughly
able water is distributed to the neighbours without the same amount of water being transported;
reaching level. only the distribution differs. This is because the
amounts of water being transported are so small
compared to the height differences between the
Optimizations cells that the second case in Figure 19 where
w < a − ā by far is the most frequently occur-
To speed optimize the reference implementation,
ring.
four changes were made:
This allows for a good approximation of the water
1. A Von Neumann neighbourhood was used in- distribution by simply moving water to the low-
stead of the Moore neighbourhood. est neighbour only, thereby saving the need for
calculating the fractions received by each lower
2. Water distribution was changed so that water neighbour.
is only distributed to the lowest neighbour In the reference implementation, the choice of
instead of all lower neighbours. coefficients such that Ks = Kc means that the

10
amount of material dissolved per water equals the 10,000 iterations, the optimized version reaches a
transport capacity of the water. This causes all score of 7.8. However, at this point none of the
the water to always be at maximum sediment sat- height maps resemble the original at all; the op-
uration: Any water evaporation is immediately timized implementation reaches its high score by
followed by sedimentation of the material that ex- changing the entire height map to a few almost
ceeds the transport capacity. Since m = Kc × w completely levelled terraces divided by very steep
for every cell, there is no need to maintain a sep- slopes.
arate sediment map. Even with Kc < Ks this is a After 100 iterations, the optimized version scores
good approximation, since w drops exponentially 20% better than the reference and has a much
which means that maximum saturation is reached higher erosion score growth rate during the first
very quickly. 25 iterations where the reference implementation
To limit reads and writes to the height and wa- produces almost no increase in erosion score at
ter maps further, all changes are written directly all.
instead of using difference maps that are applied
only after the entire iteration has been completed. 2.5
2.3
Analysis 2.0

Erosion score
1.8
Calculation time averages for the first 500 itera-
1.5
tions of the two implementations can be seen in
1.3
Figure 20. Time required per iteration remains
1.0
very close to constant for both implementations,
0.8
but the reference implementation takes 5.5 times
0.5
longer; 500 iterations are calculated in 148 sec- 0 100 200 300 400 500
onds on average, while the speed optimized ver- Iterations
sion does it in 27 seconds.
Reference Optimized
150
125 Figure 21: Erosion scores of the first 500 itera-
100 tions of the reference and optimized implementa-
Time/s

tion of hydraulic erosion.


75
50
25 8.0
0 7.0
0 100 200 300 400 500 6.0
Erosion score

Iterations 5.0
4.0
Reference Optimized 3.0
2.0
Figure 20: Calculation times of the first 500 it- 1.0
erations of the reference and optimized implemen- 0.0
0 2500 5000 7500 10000
tation of hydraulic erosion.
Iterations
Figure 21 shows erosion score averages of the first Reference Optimized
500 iterations. Apart from the first 100 iterations,
both versions apparently resemble linear func-
tions with the optimized implementation climb- Figure 22: Erosion scores of the first 10,000 it-
ing twice as fast as the reference. Due to the re- erations of the reference and optimized implemen-
altime requirements, results from more than 100 tation of hydraulic erosion.
iterations are irrelevant, but to see how erosion
scores eventually develop, a graph showing scores Rate of change is shown on the chart in Figure
for the first 10,000 iterations can be seen in Figure 23 where change per 10 iterations is plotted. As
22. Here, both curves appear more like logarith- opposed to thermal erosion (see Figure 16), both
mic functions, but where the reference implemen- curves start out at very low values and quickly
tation climbs to an erosion score of 2.8 during the climb to a maximum about one fourth the rate of

11
change in thermal erosion. From here, the ref- optimized version of thermal erosion and at the
erence implementation seems to stabilize much same time emulate what causes the hydraulic ero-
faster than the optimized version: After 500 it- sion to reach a high score. This was achieved by
eration, the rate of change is 3 times higher for modifying the speed optimized version of thermal
the optimized version. erosion as described below.
The difference between the outputs of the two im-
plementations after 100 iterations is 1% on aver- Overview
age, where a difference of 100% corresponds to a
height map with all height values at 0 versus a The high erosion score of the speed optimized ver-
height map with all height values at 1. sion of hydraulic erosion is caused by two factors:

0.0020 1. Nearly flat areas tend to be levelled out when


Change per 10 iterations

the water flowing downhill is dispersed over a


0.0016 wider area and evaporates, leaving its carried
sediment to fill up any irregularities. The
0.0012
flattening lowers s̄ which in turn increases
0.0008 the erosion score.

0.0004 2. While the overall height of the terrain re-


mains largely unaffected, the levelling out
0.0000 leaves less area for the remaining slopes,
0 100 200 300 400 500
making them steeper. This increases σs
Iterations
which in turn increases the erosion score.
Reference Optimized
Thermal erosion seems to do the opposite of this:
Instead of levelling out flat areas and making
Figure 23: Change per 10 iterations of the first slopes steeper, it distributes material from steep
500 iterations of the reference and optimized im- slopes across flat areas until every si,j ≤ T . The
plementation of hydraulic erosion. new proposed algorithm is simply the same as the
speed optimized version of thermal erosion, but
For practical or visual applications, around 100 with the conditional check
iterations of both versions are needed to change
the terrain to achieve the desired shape. Figure if (dmax > T )
24 compares height maps produced by the two
versions after 100 iterations, and Figure 25 shows inverted to
rendered views of these height maps. if (dmax ≤ T )
As shown in the example in Figure 26, this causes
A new proposed algorithm slopes steeper than the talus threshold to remain
unaffected while flatter areas are levelled out.
With the overall goal of reaching an erosion score
Below is a piece of pseudocode describing the
as high as possible in as short time as possible, the
central part of the algorithm which is run on
optimization and analysis of the thermal and hy-
every cell each iteration:
draulic erosion algorithms have shown two things:

1. Because of its low erosion score, thermal ero- dmax = 0


sion is unsuited for use in computer games for every i in neighbourhood :
where flatness of the terrain is important, but d i = h − hi
the speed optimized version is fast enough to if (di > dmax ) :
be used for runtime synthesis of terrain. dmax = di
l=i
2. The effects of hydraulic erosion are much bet- if (0 < dmax ≤ T ) :
ter suited, but even the speed optimized al- ∆h = 21 dmax
gorithm is too slow to be used for runtime h = h − ∆h
synthesis of terrain. hl = hl + ∆h

To create an algorithm that combines the speed of The algorithm was found to work well with a Von
thermal erosion with the high erosion score of hy- Neumann neighbourhood and values of T between
8 16
draulic erosion, it has to be as simple as the speed N and N .

12
Figure 24: Comparison between the reference implementation of hydraulic erosion (left) and the speed
optimized version (right). Images show the height map after 100 iterations.

10
9
d2 < T 8
h1 h h2 h1 h h2 7
6
Time/s

t=0 t=1 5
4
3
2
1
d2 > T 0
0 100 200 300 400 500
h1 h h2 h1 h h2 Iterations
t=0 t=1
Figure 27: Calculation times of the first 500 it-
erations of the new proposed algorithm.
Figure 26: Two examples of the new proposed
erosion algorithm. In the first case, d2 < T so h
and h2 are levelled out, while in the second case, exist. Erosion scores rise quickly: After 50 iter-
d2 > T which leaves both h and h2 unaffected. In ations they reach between 70-80% of the level at
both cases h1 > h and is therefore ignored. 500 iterations.
With T = 16 N an erosion score of 2.15 is reached in
50 iterations, corresponding to 1 second of calcu-
Analysis lation time. For comparison, the speed optimized
version of hydraulic erosion does not reach this
Calculation time averages for the first 500 itera- score until after 450 iterations, corresponding to
tions can be seen in Figure 27. Time required per 24 seconds of calculation time.
iteration remains constant and the 500 iterations The change per 10 iterations graph shown in Fig-
are done in approximately 10 seconds, matching ure 29 confirms that most of the change happens
the speed optimized version of thermal erosion. during the first 50 iterations after which the al-
Figure 28 depicts erosion score averages for dif- gorithm seems to stabilize quickly. Not surpris-
ferent values of T during the first 500 iterations. ingly, the rate of change matches that of thermal
For the three sampled values, a proportional re- erosion whereas hydraulic erosion only changes
lationship between T and erosion score seems to at one fourth the speed during the first 50 it-

13
Figure 25: Renderings from the two height maps shown in Figure 24 - the left image shows the reference
implementation after 100 iterations, and the right image shows the speed optimized version after 100
iterations.

3.5 0.007
Change per 10 iterations

3.0 0.006
0.005
Erosion score

2.5
0.004
2.0
0.003
1.5
0.002
1.0 0.001
0.5 0.000
0 100 200 300 400 500 0 100 200 300 400 500
Iterations Iterations

T=8/N T=12/N T=16/N T=8/N T=12/N T=16/N

Figure 28: Erosion scores of the first 500 itera- Figure 29: Change per 10 iterations of the first
tions of the new proposed algorithm. 500 iterations of the new proposed algorithm.

erations. Together with the quick initial rise in up to 30 seconds are not uncommon.
erosion score, this suggests that the optimal num-
ber of iterations for producing profound erosion
effects as quickly as possible is around 50.
Playability issues
Height maps after 50 iterations with T = N8 and To explore the use of procedurally generated ter-
T = 16N as well as rendered scenes of these, can rain in computer games a bit further, a few playa-
be seen of Figure 30 and Figure 31 respectively. bility issues for games in the realtime strategy
Larger values of T creates more levelling of the genre are discussed here. This type of game makes
terrain and leaves less but steeper slopes. more demands to the terrain shape than just vi-
With 50 iterations of this algorithm, an eroded sual appearance, as player units must be able to
terrain meeting the criteria defined at the begin- move around in the terrain, and there must exist a
ning of this paper can be synthesized from scratch decent number of flat spots of a certain minimum
in less than 2 seconds for N = 512 (about one size for various structures to be placed upon.
quarter of a million height values) and in less than
7 seconds for N = 1024 (about one million height Main criteria
values). This actually makes it possible to use
these techniques for runtime terrain generation The above considerations regarding unit move-
in modern computer games, where loading times ment and building placement can be formalized

14
Figure 30: Comparison between T = N8 (left) and T = 16
N (right) for the new proposed algorithm.
Images show the height map after 50 iterations.

in two criteria: Since both units and buildings may take up more
space than one cell, the variables Nu and Nb are
• Cells with an inclination below a certain used to denote the side length of the square repre-
threshold Tu allowing unit movement should senting the space occupied by units and buildings
be connected in an area as large as possible. respectively. For example, Nu = 1 means that a
unit only occupies one cell, while Nb = 5 means
• Cells with an inclination below a certain
that a building occupies a square of 5 × 5 cells.
threshold Tb < Tu allowing building place-
Taking unit and building size into consideration
ment should cover an area as large as possible
means modifying A before calculating U and B,
(although not necessarily a connected area).
such that only the cells of value 1 that can form
Only cells included by the first criterion are
squares of sizes Nu × Nu remain 1. When cal-
considered (i.e. a spot suitable for building
culating U from A, Nu must also be taken into
placement is worthless if it is isolated from
consideration when determining whether two ar-
the rest of the map).
eas are connected, e.g. a unit taking up 3 × 3 cells
To analyse height maps according to these crite- cannot pass through a narrow connection only 1
ria, the following binary maps (maps containing cell wide. An illustrated example of how U is
either the value 0 or 1) of the same size as the calculated can be seen in Figure 32.
height map in question are defined: Likewise, B must be modified such that only the
cells of value 1 that can form squares of sizes Nb ×
• A, the accessibility map, is a binary map Nb remain 1.
representing the cells hi,j of the height map A ”unit score”, υ, and a ”building score”, β, are
whose corresponding slope values si,j < Tu then defined as the fraction of the cells of U and B
such that si,j < Tu ⇒ ai,j = 1. whose value are 1 (the same as the average value
of the maps).
• U , the unit map, is a binary map containing Because a completely flat height map (which is
the largest connected area of cells from the undesirable) would maximize υ and β, a final
A map whose value is 1. overall ”game suitability score” γ is defined as
• F , the flatness map, is a binary map repre-
senting the cells hi,j of the height map whose γ =ε×υ×β
corresponding slope values si,j < Tb such
that si,j < Tb ⇒ fi,j = 1. i.e. the product of the erosion score, unit score
and building score. The terrain must now achieve
• B, the building map, is the binary map con- high unit and building scores while retaining a
sisting of all bi,j = ui,j × fi,j . high erosion score.

15
Figure 31: Rendered views of the two height maps shown in Figure 30. A much larger part of the
terrain is levelled out when using T = 16
N.

Figure 32: The construction of the unit map U . Step 1 shows an eroded height map H and step 2 its
corresponding accessibility map A based on the threshold value Tu = N8 . In step 3, A is reduced to those
cells that can contain squares of size Nu × Nu (where Nu = 7 in this example). In step 4, the map is
finally reduced to U which is the largest unit-accessible area taking the unit size Nu into consideration.

To guarantee that every height map generated It was noted earlier that the use of the coefficients
by random seeds meet certain playability criteria c1 = −1 and c2 = 1 gave the Voronoi diagram a
(a unit score υ > 0.75 for instance) is impossi- useful property. The usefulness lies in the fact
ble without some sort of iterated feedback system that it allows for individual control of each of the
where the height map is analyzed and changed ”hills” of the Voronoi diagram by using a related
repeatedly until the desired criterion is met. This domain map.
however requires far too much work to to be done A domain map is created by assigning a value
runtime, so instead the methods for synthesizing to each of the feature points of the Voronoi di-
terrains must be adjusted until it can be shown agram. When the Voronoi diagram is rendered,
statistically that the criteria are met in, say, 99% the domain map is calculated at the same time
of the cases. by giving each cell the same value as the closest
These adjustments can be done in many ways; feature point. This creates a number of patches
one way is to introduce more flat areas during of one colour, whose borders represent the coor-
synthesis of the base terrain as described below. dinates where d1 = d2 .
The coefficients of the corresponding Voronoi dia-
gram ensure that the values located at the domain
Base terrain modifications borders are always 0, since

Terrain flatness plays an important role in the d1 = d2 ⇒ −1 × d1 + 1 × d2 = 0


evaluation of game suitability, and one very ef-
fective way to control the major features of the This means that each of the hills are exactly cov-
terrain is through the Voronoi diagram used for ered by a patch from the domain map; by multi-
the base terrain. plying the Voronoi diagram with the domain map,

16
the hills can then be scaled individually without
creating sudden jumps in the height values. Fig-
ures 33 and 34 show some examples of how this
can be done.
The fact that these Voronoi diagrams always have
a value of 0 midway between two feature points
also makes it possible to widen the passages be-
tween the hills. This can easily be done by sub-
tracting a constant from all values and clipping
negative values to 0 - see Figure 35 for an exam- Figure 35: Subtracting a small amount of the
ple. height values (and clipping negative values to 0)
Any of these modifications only add a about 10 of the original Voronoi diagram (left) widens the
milliseconds to the time required for the synthesis narrow passages between the hills (right).
of the base terrain for N = 512 and 40 millisec-
onds for N = 1024.
Examples of use section:
8
Tu =
N
2
Tb =
N
Nu = 1
Nb = 9
N
With a height scale of 16 , Tu equals an inclination
of 26.6 degrees and Tb equals an inclination of 7.1
Figure 33: Multiplying a domain map with ran- degrees. A unit takes up only one cell, while a
dom values (left) with the Voronoi diagram, pro- building covers 9 × 9 cells.
duces hills of varying height (right). Table 2 show average scores for terrains created
by different erosion methods.
Although most of the base terrain is accessible
by units, almost no flat areas of sufficient size for
building placement exist, resulting in a minimal
game suitability score.
Both versions of thermal erosion manage to flat-
ten 98% of the terrain to an inclination below Tu ,
but the problem with this method is that most of
the terrain will attain exactly the same inclination
as the algorithm’s talus threshold T = N4 , leaving
no areas with an inclination below Tb = N2 , which
again results in a minimal game suitability score.
The two versions of hydraulic erosion produce
Figure 34: Multiplying a domain map with ran- slightly better building scores, but the overall
domly assigned values of either 0 or 1 (left) with game suitability scores are still too low for them
the Voronoi diagram, produces a mixture of flats to be of any practical use, especially when taking
and hills (right). realtime generation into account. More iterations
would have given them higher scores, but the cal-
culation work would become too demanding. An
interesting observation is that while the reference
and speed optimized version have similar erosion
Analysis and unit scores, the optimized version seems to
produce more almost completely flat areas.
A large number to of test runs were made to de- The new algorithm is very sensitive to the value of
termine average game suitability scores for the T . With T = N8 , it produces so many slopes with
different kinds of erosion algorithms described an inclination above Tu that the terrains often
in this paper. The constants used were similar are broken up into several large areas inaccessible
to those found in the project described in the from each other, causing a very low unit score.

17
Terrain type ε υ β γ
Base terrain 0.665 0.713 0.002 0.001
Reference thermal erosion, 50 iterations 0.614 0.980 0.002 0.001
Optimized thermal erosion, 50 iterations 0.626 0.983 0.002 0.001
Reference hydraulic erosion, 100 iterations 0.916 0.834 0.050 0.039
Optimized hydraulic erosion, 100 iterations 1.077 0.828 0.157 0.140
New algorithm, 50 iterations, T = 8/N 1.339 0.303 0.173 0.070
New algorithm, 50 iterations, T = 12/N 1.850 0.752 0.393 0.580
New algorithm, 50 iterations, T = 16/N 2.204 0.905 0.434 0.877
New algorithm, 50 iterations, T = 20/N 2.340 0.949 0.429 0.953

Table 2: Erosion, unit, building and game suitability scores for terrains created by different erosion
methods.

Test runs with T = 12 16


N and T = N produce be fine-tuned to meet defined criteria for unit
much better results: Between 0.75 and 0.90 on movement and building placement.
unit scores and around 0.4 on building scores.
Individual scores approximate normal distribu-
tions pretty well, so with standard deviations of Examples of use
0.23 and 0.20 repsectively, it is safe to assume that
The methods shown in this paper for creating
for T = 12 N , 97.5% of all terrains reach a game game-suitable natural looking eroded terrain in
suitability score of at least 0.120 and for T = 16 N, realtime are used in the realtime strategy game
97.5% of all terrains reach a game suitability score
Tribal Trouble1 by Oddlabs2 . Tribal Trouble is
of at least 0.477.
the first game of its kind to feature a nearly unlim-
Although T = 20 N produce even better overall ited amount of different terrains by creating them
scores (97.5% of all terrains reach a game suit-
runtime from a random seed number and a few
ability score of at least 0.585), T = 16N was chosen adjustable parameters (among these the amount
as the optimum value because it scores better in
of Voronoi hills). Figure 36 shows a screenshot
the critical building score and because the ter-
of how these terrains look when shaped into an
rains themselves have a much better visual ap-
island and having some vegetation added.
pearance.
The game uses height maps of varying size up to
Table 3 shows scores for various changes to the 512×512, meaning that terrain base synthesis and
Voronoi diagram used in the synthesis of the base erosion is done in 2 seconds on a standard PC. For
terrain as described above. All examples use 50 the terrain creation, procedural techniques are
iterations of the new erosion algorithm using T = also used to synthesize 7 different surface textures
16
N. and apply these to the terrain according to its
Both tested methods (removing a percentage of features such as height, slope and relative height
the hills as shown in Figure 34 or reducing the (height values compared to the average of their
hills by subtracting a constant value from the surrounding neighbours within a certain radius).
Voronoi diagrams and clipping negative values to The game uses the same values of Nu , Nb , Tu
0 as shown in Figure 35) increase overall game and Tb as those used in the analysis of playability
suitability scores as the effects are increased. The issues. U and B maps as described in this anal-
greatest impact is seen on the building scores, ysis are used for unit pathfinding and placing of
since both methods cause more completely flat buildings - see Figures 37 and 38.
areas in the Voronoi diagram.
Overall, changing the Voronoi diagram compo-
nent of the synthesized base terrain makes it pos- Summary
sible to boost the game suitability score a fur-
ther 25% without removing the hills added by the This paper took a new angle on the synthesis of
Voronoi diagram completely. eroded fractal terrain, namely from a computer
Applying these modifications will most likely game development perspective. With computer
deduct from the visual appearance of the terrain games of the realtime strategy genre and similar
as it will become more flat and featureless, but types in mind, a set of desirable traits were con-
taken together with adjustments of the thresh- densed into an erosion score that, together with
old value T and the number of iterations of the 1 http://tribaltrouble.com

new proposed algorithm, the terrains can easily 2 http://oddlabs.com

18
Terrain type ε υ β γ
75% hill coverage 2.280 0.916 0.487 1.017
50% hill coverage 2.337 0.923 0.526 1.134
25% hill coverage 2.371 0.929 0.556 1.225
Vertical offset -0.1 with clipping 2.256 0.910 0.468 0.962
Vertical offset -0.2 with clipping 2.312 0.918 0.511 1.086
Vertical offset -0.3 with clipping 2.346 0.922 0.539 1.166
Vertical offset -0.4 with clipping 2.361 0.926 0.557 1.219
Vertical offset -0.5 with clipping 2.372 0.928 0.567 1.249

Table 3: Erosion, unit, building and game suitability scores for terrains using different modifications to
the Voronoi diagram used in the synthesis of the base terrain.

Figure 37: Screenshot from Tribal Trouble show- Figure 38: Screenshot from Tribal Trouble show-
ing the use of the unit map U . The yellow crosses ing the use of the building map B. When placing
indicate inaccessible cells of the height map, i.e. a building, all cells must be green, i.e. none of the
cells whose inclination are above Tu . cells covered can have an inclination above Tb .

the strict realtime requirement, was used to eval- A new algorithm using the same simple method
uate methods of terrain synthesis and implemen- as the speed optimized version of thermal erosion,
tations of two of the classical erosion algorithms. but modified to change the terrain in another way,
For base terrain synthesis, it was shown that more was introduced. When evaluated, the algorithm
natural-looking terrains than just plain 1/f noise was able to triple the terrain’s erosion score in 1
could be synthesized in less than 1 second for second for 512 × 512 height maps and 4 seconds
512 × 512 height maps, and in less than 3 sec- for 1024×1024 height maps, making it much more
onds for 1024 × 1024 height maps on a standard suitable for games.
PC. Finally, two important demands to the terrain
Not even with speed optimizations (at the cost used in realtime strategy games were discussed.
of physical correctness) that reduced calculation Methods for evaluating terrains according to
times to between one fifth and one sixth, did any these criteria were introduced, and it was shown
of the classical erosion algorithms meet the re- that the methods for evaluation together with
altime requirement while producing the desired modifications to the synthesis of the base terrain
output: The speed optimized version of thermal could be used to fine-tune the terrains to meet
erosion was found to be fast enough, but scored playability criteria.
much too low in evaluation. The output of hy-
draulic erosion scored a lot better, but even the
speed optimized version was too slow.

19
Figure 36: Screenshot from Tribal Trouble, a realtime strategy game using the methods described in this
paper for fast runtime generation of terrains.

References Texturing and Modeling: A Procedural Ap-


proach (Third Edition). Morgan Kaufmann
[1] F. Kenton Musgrave, Craig E. Kolb and Publishers, 2003.
Robert S. Mace: The Synthesis and Ren-
dering of Eroded Fractal Terrains. Computer [7] N. Chiba, K. Muraoka and K. Fujita: An
Graphics, Volume 23, Number 3, July 1989, Erosion Model Based on Velocity Fields for
pages 41-50. the Visual Simulation of Mountain Scenery.
The Journal of Visualization and Computer
[2] Bedřich Beneš and Rafael Forsbach: Visual Animation, Volume 9, 1998, pages 185-194.
Simulation of Hydraulic Erosion. Depart-
ment of Computer Science, ITESM, Campus [8] Kenji Nagashima: Computer generation of
Ciudad de México. eroded valley and mountain terrains. The Vi-
sual Computer, 1997, pages 13:456-464.
[3] Eng-Kiat Koh and D. D. Hearn: Fast Gen-
[9] D. D’Ambrosio, S. Di Gregorio, S. Gabriele
eration and Surface Structuring Methods for
and R. Gaudio: A Cellular Automata Model
Terrain and Other Natural Phenomena. Eu-
for Soil Erosion by Water. Department of
rographics, Volume 11 (1992), Number 3.
Mathematics, University of Calabria, Italy.
[4] Alan Fournier, Don Fussell and Loren Car- [10] Bedřich Beneš and Rafael Forsbach: Layered
penter: Computer Rendering of Stochastic Data Representation for Visual Simulation
Models. Communications of the ACM, Vol- of Terrain Erosion. Department of Computer
ume 25, Issue 6 (June 1982). Science, ITESM, Campus Ciudad de México.
[5] Nicoletta Sala, Silvia Metzeltin and Massimo References [1]-[5] and [7]-[10] as well
Sala: Applications of Mathematics in The as this paper can be downloaded from
Real World: Territory And Landscape. Uni- http://oddlabs.com/jo/terrain/
versity of Italian Switzerland, 2002.

[6] David S. Ebert, F. Kenton Musgrave, Dar-


wyn Peachey, Ken Perlin and Steven Worley:

20

You might also like