Landforms With Wilbur: Introduction

In this article on the ME-DEM site, Using Wilbur With ME-DEM Part 1(sadly there doesn’t appear to be a Part 2), the author, Carl Lingard(also known as “monks”), describes the use of the Tesselation Tool in Wilbur for terrain modelling. This tutorial has been an excellent resource in my terrain modelling efforts, but it has two major problems. The first problem is that I’m lazy and lazy people need a quicker, easier method. At least for roughing out.  The second problem isn’t so much a problem as a tantalizing hint that doesn’t get followed through with. The section Basic Mountain Geomorphology has descriptions and lovely images of a variety of landforms commonly found in mountainous areas such as cirques, u- and v-shaped valleys, horns, hanging valleys, alluvial fans and more. With the exception of one lofting profile, there are really no instructions on how to do this. This isn’t really surprising, I think. Convincing geomorphology is pretty hard to build and it’s more art than science. I got myself a full-on degree in this stuff and never once had a class in Advanced Geomorphological Mimicry. With an experienced eye, it’s easy to recognize convincing terrain, but producing it is challenging as heck. In this first article I originally intended to start with the first landform that Carl mentioned, the cirque. This proved unworkable, as I found the learning curve on the Tesselation tool a bit too steep. Instead, I’m going for a somewhat simpler introduction using Tesselation to draw in contours with some very simple Lofted mountain ridges. The advantage on using Tesselation for contours is that you can avoid the somewhat onerous process of dealing with the lofting tool in Wilbur. With contours, all you have to do is set the height for each stroke. A single simple step. With lofting, you need to grab each point, one by one, and drag it to the desired height. Since even grabbing a point in the lofting tool can be a bit hit or miss, this can be time consuming and more than a little bit frustrating. This isn’t to say lofting isn’t a good idea, the results can be striking and building from contours can have its own set of troublesome artifacts which detract from the results, but lofting does have its cost. I think the Wilbur lofting tool could be readily improved so that existing points would snap up to a line sketched in by dragging across the loft area. Adding additional points, which is often desirable to be done within the lofting interface, could be done perhaps by choosing a different setting. Perhaps separate Sketch, Add Points and Remove Points modes for the pointer. Who knows? With the lofting tool as it is, though, it is probably best used sparingly and on fairly short

A nice rasterized TIN created from contours with the GRASS GIS. This is pretty close to the kind of result you’d get with contour Tesselation(from GRASS-Wiki).

strokes. I could certainly see some lofting being useful to break up some contour line artifacts as you can see in the images here(the methods used here are different from the Tesselation tools, but the math is analogous). If the exact contours aren’t important and you’re just using a somewhat stochastic process to build a generalized landscape, a bit of jitter is desirable, especially if you intend to apply erosion effects. A touch of fractal noise could be useful, but it is best applied separately after blurring. If the contours need to be followed exactly, I’m not sure how you’d avoid artifacts at all. You’d probably need something beyond the tools available in Wilbur.

We’ll start by creating a new terrain file in Wilbur. On the menu bar click File>New… On the first “Surface Size” window, set the width to 1024 and the height, also, to 1024. This is a nice moderate resolution that should have nice results, but shouldn’t tax the computer too much. For a simple demonstration speed is nice, and really, for the kind of roughing-in work we’re doing here, it probably pays to start out low-res then resample to a higher resolution for more detailed work. Bueno!

Once we’ve set the resolution, hit “Next,” and go on to the “Surface Edges” window. Set the coordinate value for Top to 8000, Left to -8000, Right to 8000, and Bottom to -8000. This defines the size of the area represented by the map. In this case, I’ll assume that the units are in meters, centered on some imaginary point of interest on some imaginary world. The units in Wilbur are arbitrary, so you can assume that they represent distances in meters, feet, inches or Roman stadia, for all the program cares. Just so long as you use the same units for elevation. Hit “Finish” and you have a nice flat “terrain” to work with.

To get our entire working area to fit conveniently on the screen, we’ll zoom out just a touch. On the main menu bring up View>Zoom Arbitrary… and set the Zoom Factor to 0.6.

Now we want to select the “Tesselation Tool” from the top tool bar. It’s the third tool from the right and looks like a parachute descending on a windy day, as shown in the picture.

In the “Surface Tesselation” window that opens, uncheck the menu item Display>Show Grid. In the future, I’ll represent that with the following format: [Surface Tesselation]>Display>Show Grid… . That will help to make the screen a bit clearer. Every so often we’ll bring the grid back up just to see what’s goin’ on under the hood(sometimes that needs some adjustment…), but generally we don’t need to see all those triangles.

To match the tutorial(roughly), first make a diagonal stroke across the lower left hand corner. Now select [Surface Tesselation]>Tesselation>Raise Stroke…, in the resulting pop-up window, set the “Offset” value to 25. This will be represented in the future as: [Surface Tesselation]>Tesselation>Raise Stroke… Offset:25 .

Run another stroke across the upper right. Raise the stroke to 25. Now put in a middle stroke with a height of 30. Between the middle and the lower strokes, draw in a loop-shaped stroke, making sure to leave room for some additional contours. This will be set to a height of 40.

Make another loop between the middle and upper strokes. Set that stroke to a height of 50.

Those will be the bases of your mountain ridges. They’ll be flat for now, but don’t worry about that just yet.

Now add contours between these mountain bases and the surrounding contours with an interval of 5 units. These heights may or may not work when we generate the final range, but we’ll handle that later.

Add points at the upper-left and lower-right corners just past the outermost contours to finish filling in the space of the terrain. When you place each point, right-click on the point to pull down a contextual menu. Select [point]>Set Height… Up/Down(Z):20 .

Now show the grid again. What we are looking for here are excessively large flat triangles. You can break these up a bit by adding a point somewhere around the middle of the big triangle. Set the altitude somewhere between the neighboring contours as shown above. For example, if you find a large triangle between the 45 and 50 contours, you can plunk a point in the center of the triangle and Set Height for the point to 48(anything between 45 and 50, inclusive, would be acceptable. It’s a matter of feel).

You may also find some long thin flat areas where many triangles are connected only to one contour. That’s a little redundant, because a series of triangles connected only to one contour would by definition be flat. This is where we introduce the use of the Loft Stroke tool which monks used so effectively in his tutorial.

The encircled area in the image to the left is a good example of the kind of flat region which causes the problem. This is a natural result of the algorithm used to connect the points as they are placed, which I think is an incremental De Launay triangulation. Each point, as it is placed, tries to connect to its nearest neighbors. Triangles inside of a long narrow region enclosed by a contour will be increasingly likely to be neighbored entirely by the enclosing contour as the loop becomes longer and narrower. That’s what’s happening here. The key is to break up the flat region by placing more points along the centerline of the long, thin contour, as shown by the line in the image above. All of the points in this auxiliary stroke will lie between the heights of the contours between which it lies on the plane. The end of the stroke that lies closer to the higher contour will tend to be toward the higher end of the interval of altitudes bound by the surrounding contours, and the end of the stroke that lies closer to the lower contour will tend to be lower, but the only guarantee is that all of the points will fall on the interval between the upper and lower altitude.

So we build a new stroke as shown in the picture above. Then we loft the stroke as shown in progress in the image to the left. Don’t worry about setting the height for all of the points. Once you have a decent loft worked out, simply right click on the working area of the window and select “Delete All Points at 0 Altitude” to remove extraneous points. This will break up the unpleasant flat area and make the map a bit more naturalistic. The next image shows the result of this effort. The same method with a minor modification will be used to place peaks onto those flat mountain tops, as shown by the red lines in the image to the left. For the purposes of this post, I’ll simply define the mountain ridges with a single lofted stroke.

Lofting these strokes will be similar, but in one way simpler than lofting flats between contours. In the case of lofting between contours it’s usually a good idea to know which end of the stroke is nearer the lower contour and which is nearer to the higher contour even if the rise is not monotonic. With the mountain peak stroke both ends will generally be nearer to the height of the bounding contour with no obvious preference for one end over the other. Similarly, the stroke representing the primary spine of a mountain ridge is relatively free in its shape while subsidiary ridge or valley strokes are much more constrained by their position relative to strokes higher on the hierarchy.

A more complicated process, like that described by monks could be used to make the mountain peaks more attractive, and naturalistic both on mountain peaks and flat artifact regions, and the effect would be more effective, but this is a good method for roughing in a region. A combination of methods can be used for more spectacular results and I will myself use a less controllable method based on strong noise and erosion to try to refine my work in a quick-and-dirty manner that is more familiar to me. A more complicated hierarchy strokes would allow greater control of the resulting terrain at the expense of more time and effort.

I found the results of the tesselation I built to be a bit too low for my taste. I decided to overshoot a bit with the understanding that I could fix it later. I used [Surface Tesselation]>Scale Altitudes… Scale:100 to multiply all of my Z coordinates by, well, a hundred. Originally I scaled the heights in an unsuccessful effort to make the Fractal Parameters a bit more subtle. They apparently scale with Tesselation heights…

Instead, I decided to Generate the Tesselation with Use Fractal Parameters unchecked.

I then used Filter>Blur>Gaussian Blur… with a sigma of 2.0 to blend out some of the more egregious remaining artifacts of the process. Filter>Calculate Heightfield… was then used to add a bit of interesting wavy randomness to the terrain. As I said before, greater efforts on the part of the worldbuilder could also be used to good effect to add more interesting, yet more controlled waviness, but even in that case use of fractal and point noise is still warranted, though in a more restrained application. In my case, the mostly plain vanilla settings shown in the image to the left had a good effect. Because the heights generated were so exaggerated, I had to set the scaling up to 180 to get any significant effect. Of course, since this is a small(and geographically indeterminate)area of the world, I unchecked Spherical Evaluation. One could, potentially, use Spherical Evaluation over a very small area of a few degrees extent or less, but that would require the Size values to be on the order of several hundreds or thousands to have any visible effect).

Now for the erosion. But first I’ll fill the basins with Filter>Fill>Fill Basins… Slope:-1, and break up the resulting flat areas with Filter>Noise>Percentage Noise… Noise:5 %, and fill basins again, just to assure hydrological drainage. Repeat this process as many times as needed to suit your taste.

Once you have a terrain with suitably connected drainage and not too many big flat basins, It’s time to apply some erosion!

I like to start with Filter>Erosion>Precipiton-Based… with, in this case, default settings and 4 passes. You should play with the settings to see what kind of erosional effects you can get. Feel free to share your methods! Now we hit Ctrl-B, which is a shortcut to the basin fill command, to close up any pits that might have been formed by the precipiton passage. Now we apply the big dog of Wilbur’s erosion tools, Filter>Erosion>Incise Flow… with default settings except Amount:2.0, Effect Blend:0.2, Pre Blur:2.0.

Looking at the result in Window>3D Preview… its apparent that the relief is a bit excessive. Also, in my case, Window>Histogram… shows heights from ~1861 to~6297, making for a height range of ~4436. In a 16k by 16k region that’s pretty high, especially if we’re reckoning in meters.

So let’s reduce that relief again. Not all the way back to the 50ish to 70ish meter heights we were dealing with before, but we’ll try to make it a bit saner. I use Filter>Mathematical>Wilbur Scale(Multiply)… with a Scale Factor of 0.4. May not be perfect, but it’s easy enough to fix by rescaling with a factor of 2.5…

Looking at it in 3d again, the erosion could be better.The Gorge in the upper left was probably created because of the large slopes in the exaggerated relief.

Maybe just a touch more erosion.

Incise Flow… with settings Amount:1.0, Exponent: 0.4(smaller exponents have more effect proportionally on higher regions), Blend 0.2, Pre Blur 0.5(making the erosion sharper and tighter than before). Follow that, as always, with ctrl-B to fill all of those nasty little pits Incise Flow is wont to produce.

I’ll add just a bit more erosion to the highest parts of the terrain. Select>From Terrain>Height Range… Minimum: 1400, Maximum:99999999999(just… really high, higher than anything in the terrain is sufficient). Because I don’t want to deal with odd effects due to sharp edges of the effected area, Select>Feather… sigma:12.

Now that we have the highest areas selected, we can erode them. Incise Flow… Amount:0.5, Exponent:0.1, Blend:0.2, Pre Blur:0.5, Variable Blur:0.5, Post Blur: 0.5. I fiddled around a lot with the various blur settings, ’cause it’s still not entirely clear to me what they mean or do. You should do the same. Find settings you like for various effects and situations.

To the left you can see an image of the results.

I decided to play around a bit to create an attractive “Beauty Shot” for this terrain. In Texture>Shader Setup… I went to the Intensity tab and moved the Azimuth of the light direction to 161. Again, this was the result of several trial and error attempts to find a good combination of view direction and lighting in the 3d preview.

I personally think the result was reasonably effective. Even pretty.

I hope this was helpful. It certainly proved time-consuming and occasionally a bit frustrating, but I enjoyed the exercise. It was enlightening. While I do hope and intend to work further on Landforms with Wilbur, I have several other things bouncing around in my head at the moment. I’d like to get some work done on Yaccatrice, Shtakamashkan still isn’t dead, Sadwillow is still my baby and I’d really like to make more progress on my World Building book. So, given that, my next post, which I hope to have up next week[roll eyes], and on which I am already working will be… on something completely different.

Thank you for your attention,
The Astrographer

This entry was posted in Mapping, World Building and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s