Previous Work

Much of the previous work in modeling ocean waves has been based on using height fields. The idea here is that for every point on the plane your surface has some height value at which it lies. The difficulty with this model from our point of view was that we wanted to implement breaking waves which required our surface to potentially have two height values at the same point on the plane. As a result we took the approach of using a set of parametric equations that describe the surface of the wave over time. These equations were based on those presented in a SIGGRAPH paper in 1986 by Bill Reeves and Alan Fournier. Basically the equations are an approximation of the Navier-Stokes wave equations, replacing some of the more computationaly expensive parts of the formulas with approximations. The basic equations are basically some constants time the sin and cosine of a phase angle. From the basic equations we procede to add hacks to model select phenomena about waves.


Wave Phenomena

Refraction

One of the effects we wanted to be able to take into account was the effect of the depth of the ocean on the direction of the wave. Basically as the depth of the ocean, the height from the ground to the water level at rest, becomes very small the direction of the wave fronts refracts to take on the contours of the ground. If you look at the following image you will notice this effect taking place. The wave is traveling from left to right over a ground that slopes from a depth about 4 times of the wavelength to a depth of almost zero. It starts with an angle of refraction slight less than 30 degrees and by the time the wave has reached the wavefront has become nearly vertical to resemble the shape of the shore. Variation amongst the waves has been removed here to more clearly show the refractino of the wave.

Depth Effect

Another effect that the model takes into account is the shortening of wavelengths due from decreasing depths. This is accomplished by making the phase angle a function of depth. Basically what the equations are doing is taking singular grid points and sending them in cirular orbits acoording to a phase angle. As we move forward along the wave we incriment the phase angle by some value k which is dependent upon the height. As height decreases, k increases and the effect is that we go around the circle quicker and in a shorter distance, resutling in a shorter wavelength.

Wind Effect

Another effect the model takes into account is the effect of a strong wind on the wave. On a windy day the wind will blow in towards the shore, pushing against the back of the wave. This results in a steep front of the wave and a gradual sloping on the back. This effect was accomplished through a complete hack. Basically we add a component to the phase of a point on the surface based upon its height, which results in pushing the top of the wave forward.

Breaking

In order to model breaking, the model once again adjusts its equations. Breaking occurs because the cirucular orbits of the water become more and more elliptical as the wave gets closer to shore. The circles become flatter and elongated. This is accomplished by multiplying the height and width by factors that grow and shrink at low depths. Unfortunately this does not seem to produce waves that break very convincingly. Also it introduces possible discretization errors. If the depth changes too radically with respect to the number of points being sampled, the problem results when the phase increases too radically from one and a shallower point actually winds up behind the previous point making it look like the wave goes backwards. The simple solution was to increase the number of points being sampled, also it was possible to make the step size in particles dependent upon the height.

Variation

Another aspect we wanted to add to the model was variation amongst the waves. Since all waves were not created equal we varied both the height and phase angle along one wave crest and between wave crests. The effect of modulating the phase is to make the wave crest at one point while the rest of the same wave is still beginning to swell. In reality this effect is usually generated from differences in the contours of the ground beneath the wave. However, we modeled our ground as a series of planar ramps, and so we used variation in the phase to get the same effect. To produce the variation we used a very low frequency noise function that barely varied over the width of the wave while varying more frequently from wave to wave.

Spray and Foam

In addition to the model for the surface of the wave, a particle system was added to get the effect of foam and spray. Whenever a particle on the wave reached a speed that was greater than the wave speed it would break off. At this point, if it was above a certain threshold we would send the particle flying off as spray. Otherwise it would turn into foam at that point on the surface. Foam would persist for a random life and then die, while spray would die once it dissapeared below the wave.