carving an alien landscape
For a large segment of 3D tool users, making terrain is no big problem. Applications like MetaCreations' Bryce 3D, Animatek's World Builder, and Questar's World Construction Set easily facilitate the creation of complete environments with sky, land and oceans. But one major flaw most of them have is that they are not an"end all" solution. Most require special z-buffer compositing techniques to integrate an element such as a dinosaur or a city into your environment. World Builder is the exception as Animatek very carefully designed their NT version to work seamlessly with MAX, but that's only one package. For most people making a landscape requires a couple of standard techniques that are really platform independent, so it doesn't matter if you're using Houdini or Lightwave, the techniques are the same.
An alien terrain created in 3D Studio MAX by Brandon Davis.I created this scene with Kinetix 3D Studio MAX using a few simple techniques. The whole creation process can be broken down into three distinct segments: modeling, texturing, and lighting/atmosphere. For that reason I am breaking this tutorial into three parts so that I can cover each segment in detail. Again, it doesn't matter what application you are using, the process is more or less the same.
making mountains
There is one fundamental technique for making mountains that is really platform independent: displacing geometry. The concept is very simple, you simply use a grayscale map to define the elevation of vertices, with values closer to white displacing in one extreme and black the other. For example, if you use a radial gradient (white to black) as a displacement map the vertices towards the center will be pushed upwards and the outer edges pushed downwards. Now by adding some fractal noise to vary the pattern you get more realistic non-uniform displacement. Let's do that in MAX.
The grid primitive created using Grid (written by Peter Watje).I started with a Grid primitive. Written by Peter Watje, Grid is one of the best freeware plugins out there (www.blarg.net/~peterw/new.html). It creates a flat planar grid with user definable length and width segments. I set those segments to 50 so we have a decent amount of vertices. Once we displace the geometry we'll be adjusting these segments again to control the resolution of the terrain.
displacing geometry
In MAX there are several approaches to creating a displacement map. One way is to create a grayscale image in Photoshop and saving it out to a common directory and importing it into the displace modifier in MAX. There is a problem with this; making changes can be slow and tedious because you need to hop back and forth between programs and re-save the file constantly. A more interactive and powerful way to do this is to use a MAX material as the displacement map. When you do this, any updates and modifications happen in near realtime without any files being saved out.
![]()
Start by applying the Displace modifier to the Grid object. In the rollout there are several options including what looks like UVW mapping parameters. This is important because you are mapping the displacement with traditional mapping gizmos like Planar, Spherical and Cylindrical along with tiling options too. The default is a planar map that fits the mesh uniformly. In the IMAGE section you can use either a bitmap or a map from the materials editor. Select Map and in the Material/Map Browser choose a Mask material type. So what this does is tell the modifier that you are going to use a Mask material as a displacement map, but you haven't defined the material yet. To do this, open the materials editor and drag from the map slot in the modifier to one of the materials editor's windows and choose an Instance. This way changes made in the editor are immediately reflected in the modifier.
making a displacement map
Now you should be looking at a Mask material type in one of your material windows. This material type allows you to define one overall map and a second map to mask the first. For the first map, assign a Noise map. Now go back and assign a Gradient map as the mask. One easy way to see what you are doing is to toggle the "Show End Result" button (next to the "Go to Parent" button). What this does is it only displays the map you are working on locally. So if you are making a mask, you can see the actual mask map instead of its effect on the above map. Back to the Gradient map, change it from Linear to Radial and swap the white and black colors so that your gradient starts white from the center and radiates out to black. If you back up to the top of the material chain you should see the result as a noise map that fades to back radially because of the underlying gradient mask. You can think of the mask as a transparency issue, only revealing the parts of the noise maps that are located in the white region.
![]()
So at this point we have a simple displacement map, but nothing has changed with the mesh. In the Displace modifier there is a Strength setting that controls the amount of mesh displacement. I started by setting this to 50. This should give you a lumpy mesh with the lumps diminishing the farther away they are from the center. When I was saying near realtime updates, I mean it. Go back to your material and adjust the size or phase settings for the noise. The mesh should change accordingly. Simple concept right?
![]()
![]()
refining the displacement map
When I was talking about the Grid segments as resolution, I mean that the more segments you have the tighter the displacement will be. Try jumping down the modifier stack to the grid segments and setting them to a lower value like 10. Now when you go back to Displace the mesh will break down into a lower polygon shape. The displacement is still there, just the mesh that it's affecting has fewer vertices to displace creating a coarse mesh. Go ahead and try the opposite, set the segments to 150. Your system may chug a bit but the result is a smoother more detailed mesh.So to get the mountains just right, we need to play with three things: the Grid segments, the strength of the Displacement modifier, and the noise settings for the displacement map. The higher the strength number the more the geometry is perturbed. There's also a Decay setting underneath Strength that is a falloff range for the strength value. For the Noise map it's a good idea to play with the size value. Also, the mapping type is important. You can either use XYZ World Coordinates (larger numbers) or UVW local coordinates (smaller numbers). Also, adjust the High and Low threshold. A higher Low setting will bring more black up into the pattern and a lower High setting will do the same with white. With High settings around 0.5 you get really abrupt peaks and with Low settings near 0.5 you get more valleys.
next month
Next month we'll go through the tricky task of texturing terrain, so for now have fun designing the coolest mountain ranges or rolling hills.
Brandon Davis is the producer of ParticleFX (www.particlefx.com), a web resource for 3D Studio MAX users, and can be reached by email at brandon@particlefx.com.
[ galleries | archives | downloads | about | contacts ]
[ back to main page | back to contents page ]