home about gallery publications education links contact


Observing any stream or river, we can tell that the water flows through the landscape irregularly. It turns, flows over rocks, round bends and forms to the contours of the banks of the river. Ripples and slight waves also flow along itís path, being deformed to the contours of the land as it moves, with slight foamy waters next to the banks. Using these observations, we can attempt to transpose this information into our 3D scene.

The banks and waters start off as simple long and thin Plane primitives. Create a the bank plane and clone and offset it to create the water. We need only model one bank, as the other can be created from a simple mirrored clone (later on you may wish to deform the clone further to avoid similarities in the meshes). By using FFDís and Noise modifier(s), create an unevenly shaped landscape in the Z direction, so one side of the plane dips down vertically to form the curved bank. Donít worry about the horizontal deformation to create the cut-out landscape for the minute, weíll tackle that later on.

The water plane should have a Noise modifier or two to create the ripples and waves as the water flows down it. Create a noise modifier for the waves with a small deformation in the Z axis and rotate it so it is almost at 90 degrees, facing lengthways down the stream. Finally, clone the bank plane, mirror it and position it on the opposite side of the water plane. Now comes the interesting part. To add more realism to the shape of the landscape, we need to deform the banks and the water exactly the same, to prevent any wayward overlaps and holes showing. Select the bank and water planes and create a Noise modifier. This modifier will then be instances across the three objects; whatever settings you apply to one, will automatically be applied to the other objects. Set the size to a very value, check on Fractal and crank the X spinner up until you feel the stream has been deformed enough!

Weíve now got our deformed stream, but if we look directly down itís path, we may be able to see the end of the planes, which isnít good. Therefore, with all three objects still selected, create a Bend modifier and amend itís settings so that all three planes bend round to the left (or right depending on preference). This will therefore hide the end of the planes.

To create the flowing water, ensure that a separate UVW map has been assigned to the water plane before any deformation to itís surface, and animate the Gizmo moving downstream. A simple Gradient Ramp map assigned to this plane will therefore conform to the deformations further up the stack! Also, in Track View, copy and instance copy the UVW mapís Gizmo position to the Noise Wave modifier we rotated ealier on. Therefore the gizmos will move in unison, and deform and texture the surface as they pass down the plane.

Enlarge ScreenshotBy deforming the banks and the water Plane primitives using the same modifiers, we can easily modify the way the stream bends and flows through the channel.
Enlarge ScreenshotAnd the final render. Additional ground textures have been added to both banks (which are deformed by the modifiers) and low poly trees and rocks added to speed up render times.
Download the max file!
The resulting rendered animation.

Initially published: 3D World magazine, Issue 25, May 2002.

Copyright © Pete Draper, May 2002. Reproduction without permission prohibited.