Article 4: Using Wilbur with ME-DEM Part 1 PDF Print E-mail
User Rating: / 6
PoorBest 
Written by monks   
Friday, 14 April 2006 14:45

An introduction to using Wilbur to model terrain in ME-DEM

This article is intended to be an introductory tutorial to illustrate how Wilbur can be used for ME-DEM.

The actual process in Phase 2 of ME-DEM will differ in one important regard: you will not be using a blank canvas, but importing a tile of the 'base' dem (heightmap) into Wilbur over which to work. Not so much starting on a blank canvas, more elaborating on a rough sketch if you like. The precise details of that process have not been hammered out yet but we're working on it! Still, the following will help people to get their head around terrain modelling.


How to use this tutorial.

 Download both the Wilbur executable, the Help document and Tutorial pdfs. Wilbur is free software and requires no registration.  As ever, there are a number of features that I will not cover here. We specifically look at a new approach to terrain building available in the latest Wilbur release: 1.54.The final terrain can be found here in the following
formats:
.obj (Object) Final Tessellation.
The topo.
Skybox for L3DT viewer.

A few notes.

A note on presentation: the screenshots in this article have been altered on occasion, to a 2:1 aspect ratio, which is closer in style to 16:9 than the traditional 4:3. They therefore do not represent exactly how 'Windows' or 'Wilbur ' will look on your screen.
 In the navigation instructions I will try to give give the keyboard shortcuts (where possible) followed by mouse instructions.





Setting up Wilbur.


The basic principles of Wilbur.

Unlike L3DT and Leveller, Wilbur, is the product of development targeted for cartographic and GIS use, not 3D modelling. Georeferencing therefore underpins the whole program. It's best to think of the work space as a map, not a model. This map resides on a globe. Therefore it's true shape is not exactly square, but rather exists in its true state on the surface of a globe. The workspace thus is referred to as a Surface, rather than a terrain,  tile or square.
 World units spacing is determined by the coordinates of the edges of the map- that is the blue square on the screen. The all important Map Info dialog is where this is set up.


Creating a New Terrain.

Open Wilbur.
We have a blank canvas.
Surface > Size.
This sets the size of the terrain surface in pixels.
Set Image Width and Image Height to 1000.
You will see the blue square expand. If the Surface disappears off the bottom of your screen, simply use the Zoom tool to reposition it so that all the surface is visible: Ctrl + -  to zoom out (View > Zoom out 2x). You will see that there are
other zoom controls accessible from the View menu. You will now have something similar to this:

Image


World Scale.

We also have to set the distance that each pixel represents on the map. We do this using the Map Info dialog.
Surface > Map Info.
Lets have a look at the settings and information already present.
We have Resolution, Edges and Miscellaneous Info.
Resolution refers to the distance that each pixel on our surface represents. The Edges run from -1 to 1, both from left to right, and bottom to top. Therefore the map is 2 units wide and 2 units high. I say units, because these are arbitrary, and can be anything that you want them to be. The Horizontal and Vertical Resolution refer to the width and height of your Surface, across and up the screen. Terrain height is given in the Miscellaneous Info. It currently spans from 0 to 1 unit: a blank canvas in Wilbur.
 So how do we get the 0.002 resolution that we have?
If the surface is 2 units wide and we have set the size to 1000, the Surface is therefore split into 1000 pixels along each axis, therefore the resolution = 2/1000 = 0.002.
So you see from this that we have a clear path to setting up our world scale.
The way to set these is by using the Edge settings in combination with the Size of the Surface. The size of the Surface has two measures: the size in pixels that we have just set to 1000, but also the size that this surface is supposed to represent on our phase 2 map: that is, 20Km, or 20000 m.
 We need to tell Wilbur that the edges of the Surface cover 20000 m. Therefore set the left and right edges to -10000 and 10000 respectively. Do likewise with the bottom and top.
 Press OK.
Open up the Map Info dialog again and we now have a resolution of 20 units, or 20 metres for us.


Status bar.

The Status Bar (bottom right) gives the position of the mouse in current pixel location on the Surface. The third figure refers to height. Note: this does not display any of the altitude information present in the Tessellation. It's also possible to have feedback on the cursor of map information via: Edit > Preferences > Show Mouse at Cursor.


Importing the Topo.

I would recommend that you have upsized the topo to a 1K square by this point.
Texture > Shader Setup.
We are now in the Lighting Settings dialog.
Select the Blending tab.
Click the Select Texture Image button.

We are now in the Texture Image Setup dialog.
Browse to the image file and Open.
Before we leave the Texture Image Setup dialog, we need to specify the edges of the texture, just like we did with the Surface edges in the Map Info dialog.
As you guessed, we need the same extents. Set the Left and Right  to -10000 and 10000 respectively. Likewise for Bottom and Top.
Press OK.
Press OK.
This should result in a perfect fit:

Image

The topo tile in this guide was taken from the east side of the Misty Mountains.
 The I.C.E interpretation of the terrain in this area is as follows:
 "This majestic range is also known by the Sindarin name Hithaeglir ("Walls of Mist"). It was thrown up fairly late in their history of the world, possibly at just the time of the Elves' awakening in Cuivienen [see The Silmarilion']. Its effect on the local topography was dramatic: the lands on both sides of the range were lifted and torn by the violence of the event, leading to the creation of broken eroded fells on the western slopes and sheer precipices on the east." [Arnor: Realm, pp 221 ICE #2005]
 The line leading to the foot of the eastern slopes is the Men-i-Naugrim. It was built as a trade route by the dwarves around the Second Age. The road passes through Mirkwood to the east leading eventually to the Iron Hills. At this point I'm not sure what lies at its terminus at the foot of the mountain. It's either a dwarven mine, an entrance to the road travelling under or over the mountains connecting Moria perhaps and ultimately out and onto the dwarven holds in the Ered Luin, or a village perhaps ?....). This landscape lies roughly 60 Km southwest of The Carrock (see 'The Hobbit' ) on the River Anduin.


Saving the Heightfield.

Save the file:
Ctrl+S (File> Save As)  > Save As Type > Binary Terrain Surface (*.bt). Enter a name.
This saves the heightfield including any settings you've made to the Surface parameters.
To open it up: File > Browse to recent files in the list.


Tessellation Tool.



I've closed Wilbur and re-opened the previous file. At this point I have not reinstated the topo.

Wilbur 1.54 has a few recent enhancements. The first we'll look at, is the new Tessellation Tool.
Select the Tessellation Tool on the toolbar along the top (next to the Relight Tool), or Window > Tessellation Tool. 
This will open the Surface Tessellation dialog.
 This tool provides a new method of working within Wilbur. Apart from the Surface Tessellation dialog, the first thing you'll notice is a small '+' sign and a 'T' appear next to the cursor position. It works on a similar principle to a wireframe modeller such as those found in modelling apps such as 3DS Max. It allow us to divide the Surface into a simplified wireframe model: the tesselation. The resolution of that wireframe is set via a combination of the Drag Tolerance field on the right of the
Surface Tessellation dialog and the speed with which you drag the mouse cursor across the Surface. In combination, this sets the rate at which Wilbur samples (records) the position of you mouse cursor, and sets height values: the sampling rate. The higher the sampling rate, the higher resolution your mesh will potentially be.
 The highest sampling resolution is achieved with Drag Variance set to 0 and a slow mouse action. The setting defaults to 10 (pixels).
 Let's try the default setting for now.
To illustrate the wireframe mesh, select:  Surface Tessellation > Display > select all of the three: Show Points, Show Strokes, Show Grid. Deselect Hide All Flat Triangles at Zero.
Draw a circle by Left Click-Dragging on the Surface to get something like this:

Image

Looking at the Surface, one can make out three pieces of information: points, a blue line, and triangles.
The points are called Points, the blue lines are Strokes, and the triangles are the Tessellation Grid. The triangles are the polygons of the mesh formed by connecting up the points. If you mouse over a point, you will activate the altitude readout: the figure in red. Also, you'll see the corresponding point being highlighted in the Surface Tessellation dialog.

Depending on your preferences you can have any combination of this information visible. For instance: look at the Surface Tessellation Dialog. Every point you have just drawn is enumerated here. All of the points have an altitude of zero. You can clear up the display with: Surface Tessellation > Display > Hide Flat Triangles at Zero. This hides all of the triangles which have all three points lying at zero altitude. See below.

Image

Now deselect the Show Points from the same menu item, we have Show Strokes only:

Image

I prefer points and strokes to be visible: reselect them from the Tessellation Surface> Display menu.

You can also see that the Tessellation Surface dialog has a list. Each item in that list refers to the points on the Surface. Points are arranged according to the position they occupy on the Surface, that is, not in the order set, or by Stroke.  Strokes they belong to, are indicated in the far right column.

So far we have one Stroke consisting of many points. We have columns indicating the individual point ID, X and Y positions on the Surface and their Altitude. All of our points have a altitude of zero.

You can also hide all triangles regardless of their altitude setting.

Let's try setting a single point with a specified height. There are four ways to do this.

1)  Keyboard shortcut. These only function if the main Wilbur window is active.
2)  Right Click menu. This functions when either of the main window or the Surface Tessellation windows are active and so is usually the most convenient.
3)  Using the Set Height  field in the Surface Tessellation dialog.
4)  Highlight a point in the columns interface of the Surface Tessellation dialog> Points > Set Height.

We'll use the quickest.
Left Click a single point in the centre of your circle. If you mouse over it you will see that its altitude is zero.  With any point we have access to a Right Click menu.
Right Click > Set Height.
 This opens up the Enter Point Position dialog.

The three fields allow you to position the point numerically on the Surface. Change Up/Down (Z) to 5000 m. (Z refers to the Z axis; the axis which describes the altitude of the tessellation).

Image

So now we have a situation where all of the triangles share the centre point of 5000m. This seems like a good time to hide all triangles: Tesselation Surface > Display > and deselect the Show Grid.


Tessellation 3D preview.

 We'll have a look at the first of Wilbur's 3D previews, the Tessellation 3D Preview.
Tesselation Surface > Display > 3D View.

Move the window to somewhere convenient and resize it. Wilbur will remember this position and the view size the next time you open the preview.

Image

The Surface in the Tessellation Preview only covers the area that is covered by the extents of the current Tessellation. The colouring is the default shader indicating height. The colouring in this shader is relative to the maximum height span your terrain covers: don't be alarmed if the colouring changes. This is not affecting the height data. This shader can be changed from Texture > Shader Setup > Altitude, but we'll not cover that here.
 It's looking a bit flat. Activate the Local Color and Lighted boxes. That's better:

Image

You can see the lines of the polygons radiating out from the centre point. If you activate Surface Tessellation > Display > Show Grid, you can see the correspondence.


 Navigation in the real-time 3D preview.

Left Click-Drag: rotation around the X axis and Z axis.
Right Click-Drag:: zoom in and out.
Right AND Left click-Drag: pan camera (translate along X and Y axes).
Mouse Wheel Scroll: zoom in and out.

Every alteration you make to the Surface Tessellation will be updated in real time.
Highlight the central point on the Surface so that the altitude appears. When the altitude appears, this indicates that the point is active for any operation that we perform next. We can change the altitude very easily by highlighting and Left Click- Dragging to the right and left. Dragging to the right raises the altitude, to the left, lowers it.

 Try it and watch the real time feedback in the Tessellation 3D preview. You'll see that the colouring, as mentioned, alters relative to the span of the terrain.
You can increase the speed by which the altitude is altered by holding down Shift, that is:
Highlight the point> Left Click > Shift > Drag  to left or right.

We can also move the point around the Tessellation Surface:
Highlight > Shift > Left Click, drag the point anywhere you like. Again observe the tessellation adapt in real time. Cool!

So you'll observe that the point at which you press the Shift key in the two sequences above, alters the action performed.

Pressing Reset in the Tessellation 3D Preview, will reset the view to the default. Update will update the Tessellation should you need to. I've never found this necessary.

If at any time you accidentally click a point you didn't intend to, either highlight it on the Surface > Right Click Menu > Delete or highlight it in the Surface Tessellation dialog > Points > Delete Selected. The Surface Tessellation dialog always highlights the last selected point, so this can be a useful way of deleting points should you need to.

 Many of the operations on the Tessellation Surface can be achieved both from shortcuts, the Right-Click menu and the menus in the Surface Tessellation dialog. More of these functions later.

The point entries in the SurfaceTessellation dialog can be selected via Ctrl+Select, or Shift-Select in the usual way. Any operation will be applied to all of the points selected.


3D Preview Window (Heightfield Preview Window).

Now let's take a look at the other 3D preview window that Wilbur offers.

Window> 3D Preview Window. I'll refer to this as the Heightfield 3D Preview.

Another window will appear. Again, position and resize according to your workspace as before. You should have a blank blue square which corresponds exactly to the Surface. Unlike the Tessellation 3D Preview,  the Heightfield 3D Preview displays all of the Surface regardless of whether any points have been set. This preview window serves to indicate the final output of your heightfield.
 The two previews can happily co-exist in the workspace, but they are connected in series: Design -> Final Output. Any changes made with the Tessellation Tool  in the Surface is automatically reflected in the Tessellation (real-time) Preview. This is not the case with the Heightfield Preview. To observe any changes, you must Generate the Heightmap and then press Update in the Heightfield 3D Preview.

 So where is our model in the Heightfield Preview?

We need to Generate the Heightfield from the Tessellation mesh.

Surface Tessellation> Generate.
 This opens the Tessellation Parameters dialog. There are a few options here. Some we'll explore at a later date. Preview allows you to preview the generation of the heightfield before committing to it. The Preview button only allows for a 2D preview in the Surface. You can undo it via Cancel', accept it, via OK.

With the default settings, press OK.

Firstly, the 2D Surface will update. You need to manually update the Heightfield Preview via Update. This is required every time you make a change to the Tessellation or the Surface via any of the Wilbur tools, such as Paintbrush, etc.
 You can see the difference between the two Previews and models below.
To quote the Wilbur developer, Joe Slayton: "The tessellation 3d dialog shows nothing but the current tessellation information. The heightfield 3d dialog shows nothing but the state of the heightfield at the last time it was updated."

The Tessellation Preview is on the left. The Heightfield Preview on the right.

Image

The Heightfield model is a lot smoother in appearance. This is because Wilbur has interpolated the points in the Tessellation mesh and generated a heightfield from it.


Saving and Loading the Tessellation.

 It's possible to save the Tessellation in the widely used .obj format. The Tessellation can therefore be opened up in any 3D modelling package such as Maya or 3D Max. (This has not been confirmed as of publication).

Save your Tessellation now:
Surface Tessellation > File > Save.
Remember that this file is distinct from any Heightfield that you save- think of it as a design mock up.

Any Tessellation can be loaded into the current Surface. I advise you to save often, keeping a number of versions at various stages of progress. Wilbur will even rescale the Tessellation to the current Surface extents (set in the Map Info dialog), should you open up a Tessellation that differs in scale to your current Surface scale.


Wibur Workflow.

 The Tessellation model should not be confused with the final heightfield model. The Tessellation is not stored internally as a heightfield (an array of point height values) but as a 3D polygonal mesh. The mesh is potentially as fine in resolution as your Drag Variance setting and time will allow. You could in theory set every single point on the Surface to an altitude value. This would give you the same number of points as a heightfield has, but it would still be stored in a different format.
 The Tessellation is intended to serve as the Design stage, not necessarily as the final output, though it could of course be exported to any app supporting the .obj file format. Therefore, high resolution is not necessary, indeed it would be counter- productive.
 Modelling in Wilbur can be roughly broken down into three stages: Design, Heightfield Generation, Erosion, as described below.

Heightfield generation should only be used to preview the terrain until you have finished your tessellation. The Fractal Parameters and additional settings at Heightfield Generation time in the Tessellation Parameters dialog can only be applied once, that is, when the tessellation is finished, although they can be undone normally.


Image


Starting up a project.

 You need to load three files in order to return to a project in MEDEM: Surface, Topo overlay, Tessellation.
To load the Surface: File > Open. You will need to be aware of what format you saved the Heightfield in. If you're not, use the All Files setting in the drop down box.
Wilbur stores the Map Information with the Heightfield so that any changes that you have made will be remembered.
Now load the Topo as described previously.
Load the Tessellation: Window > Tessellation Tool > Surface Tessellation > File > Load > Browse  to your .obj file.

If you've just loaded the last Tessellation that we were using, you can clear it of all points with:  Surface Tessellation > Points > Clear All.

Designing the Map using a network of Strokes.



 In previous articles I've focussed on the use of the Mound as the basic element of construction of the terrain. Wilbur is still capable of this, but we're going to use a different approach here, made possible by the introduction in recent Wilbur versions of the Tessellation Tool and the Strokes entity.
 By network, I'm referring to the network of topography: ridges, water channels, peaks and valleys, etc that make up the terrain: a schematic, just as we used in the previous tutorials. This is quite similar to the Mound approach in that it uses repeated design elements. However, it does not require the initial selection to define the base of mountains.

 In order to simplify things, I break the mountain down into its basic components: like polygonising a model. Fig 1 below shows the most basic form of the mountain. For want of a better term,  I refer to this as network order 0. Now we re-project this primitive in the usual way to give us roughly fig 2 below. That is, we have moved the camera so that we are directly over the mountain looking down.


Image

I did say that we don't need to define the base, as we do with the Mound Tool, so let's dispense with that. This gives us fig 3. The lines now indicate ridges, numbered 1 to 3.


Image


The Lofting Tool.


Order 0.



 Order 0 refers to the largest scale of the network, that is, the outline and primary ridges of the mountain indicated in red. Think of them as the trunk and main branches of a tree.

Ridge 1.

 Draw a Stroke continuously with the Tessellation Tool on the Surface to describe Ridge 1. Move from right to left. My advice is to get into the habit of defining your Strokes from either lowest to highest altitude or high to low: either will do as long as you are consistent. This avoids complications and errors. I tend to prefer high to low, because it favours this top-down approach. You'll see why this can be important next.
 Give the Stroke some variation across the Y axis like I have in fig 4 above. Stop at the where the junction will be with Ridges 2 and 3.  Identify this point by projecting a straight line down from the left-most peak of that mountain in the topo with your eye.


Limitations of the Topo Map.

As this is the first implementation of these new tools, there are still improvements and refinements to be made. This is most true for the Vertical Stroke Lofting Editor.
This ultimately derives from the ICE maps not being entirely suitable for this Lofting method. Clearly, because of the angle of the camera looking at the terrain, there are ridges in the mountain network which exist, but to which we have no visual reference. They are hidden. If we are copying from a topo, this information simply doesn't exist. Therefore we have to imagine it / extrapolate it from what's there.
 The topo profiles that are useful are those which run more or less left-right.The further the profile varies from this left-right alignment, the less useful it will be as a literal guide in the Lofter.

Highlight any point in Stroke 1 > L (or Highlight > Right Click > L).

The Vertical Stroke Lofting editor will open.

The Lofter will automatically resize the dialog on opening to accommodate all of the Strokes running left to right. The right most point in the Lofter always corresponds to the beginning of the Stroke. The left most point corresponds to the end of the Stroke. The line along the bottom describes the straight line from your first point in the Stroke, to the last point. This is why I said previously that Stroke direction is important.

You will have something like this::

Image
The points along the bottom represent the points in the Stroke. They are all set at 0 altitude. The three important items are: Area High, Area Low and the figure at bottom right.

Area High and Area Low tell you what the altitude is at the extreme top and bottom of the Lofting Editor window. Here it
is 0 m at the bottom, 1.5 m at the top. This will need to be changed.
 Move your mouse cursor up and down (without clicking) in the Lofting window and you will see the figure in the lower right is an altitude feedback.












 

 


 

The Lofting window can be resized. Resize the dialog by stretching the left hand edge until the top of the mountain ridge is at the top of the dialog:


Image


You now want to tell the Lofter what the highest point on the mountain is: here we will use 4500 m.
Enter 4500 in Area High (you don't need to press Enter).
 In this instance we can keep the Area Low  to zero- that's up to you.
Move your mouse up to the top of the window and you'll see that the altitude feedback gives around 4500. It may be slightly less. There are a few ways to address this, if you want precise spot heights. This is a straightforward way.

Click in the window on the spot corresponding to the peak of the mountain.
Highlight that point > Rght Click > Set Height > Enter your precise spot height for the summit.
The point may move out of view a little off the window. That's not a problem.

Now simply move along the profile Left Clicking with the mouse until you have enough points to give a reasonable description of the ridge. I tend to work from right to left. The number of points you insert does not have to match the number of points along the bottom of the window. It doesn't matter: Ignore them for now:

Image

Any of the points, including those along the bottom of the window, can be moved vertically by highlighting > Left Click-Drag. They can also be moved horizontally with: Highlight > Shift > Left Click-Drag. Just as on the Surface.

They can also be moved via the Right Click menu.

Now make sure that the two end points are not at zero altitude. This is really a time saving process at the moment in preparation for the next step. Use the mouse and nudge the right-most point just above zero. Move the left-most point up onto the profile. (This last step is not really that important because ultimately Wilbur will interpolate between all points anyway, so losing the end points will not matter that much if you have quite a high resolution of points in the profile).

Highlight> Right Click ANY point > Delete All Points at 0-Altitude:


Image


Press OK to close the dialog.


Ridge 2.

Mouse over the end point of Ridge 1, where you want Ridge 2 to connect to. Make a mental note of the altitude. (in this case, 3703 m). Move slightly away from this point (I moved to the north-west of it) and begin you next Stroke ending somewhere near the edge of the screen. If you find the points too closely spaced, try Ctrl + '+' to zoom in.

  Highlight any point in the second Stroke > L to open up the Vertical Stroke Lofting dialog.

Image

As you can see above left, in terms of a literal transcription, the topo in the background is not much help in this case.

Set the Area High to a shade more than the altitude that you previously noted (say 3800).

Highlight the right-most point > Right Click > Set Height > somewhere around the altitude you want.
This point is the highest in the ridge, so something close to 3703 m. Looking at the topo in the main window, the ridge looks slightly concave, so we'll go with that.

Also, the ridge is quite high when it leaves the edge of the map (around 2000 m perhaps?), so we want to consider that as well.
Right-Click > Set the altitude of the left-most point to 2000 m. 
Click points in the window describing the ridge you want.
Right Click any point > Deselect all points at 0-Altitude.

Press OK.


Ridge 3.

Repeat the process that you followed for Ridge 2, for Ridge 3.

Open up the Tesselation 3D Preview: Surface Tesselation > Display > 3D View:
I ended up with this:


Image


To summarise:

For profiles where the topo would be useful:

  1. Stretch the dialog box so that the highest point on the profile is at the top of the viewing space.
  2. Set the Area High field to the maximum altitude that the profile has.
  3. Click in the area along the profile to describe the profile with a set of points. Click as many as you like. Don't worry about the points staying along the bottom edge. I find that starting from the right and moving left works best for me.
  4.  Make sure that the first and last points (left-right) are not at zero. This means that you might have to set the lowest point which you intended to be zero altitude as non-zero. That's not a major problem.
  5. Highlight any point> Right Click > Delete All Points at 0-altitude.

For profiles where the background image is of no use, ignore the background image and simply use your judgement.

  1. Click on the point at the end of the profile.
  2. Set its height.
  3. Set the Area High to that also.
  4. It might be helpful to resize the dialog so that it is in proportion with the Stroke: for instance if you have a very long Stroke that doesn't rise very high, you might prefer to stretch the dialog left-right.
  5. Draw your profile by clicking in the space, ignore the points along the bottom (they can be moved up and down, by Highlighting > Left Click-Drag, and Shift Clicked to alter their X Y position).
  6. Make sure the end points are not at zero.
  7. Right Click any point > Delete All Points at 0-Altitiude.

Future revisions will aim to automate this process to some extent, reducing Lofting to perhaps 2 or 3 steps.


Order 1.


 At the network order 1, we find ridges and channels running off the order-0 backbone if you like.

In the analogy, these form the proliferation of branches in our tree.

There is information to be gleaned from our topo. If you look at the side of mountain 1, you can see scores down the sides, which I take to indicate areas in shadow, or channels. They could be created by glaciation, or water erosion running down the slopes, or they could be there as part of their general shape from the warping effect of the mountains being upthrust by tectonic activity: what is called orogeny. Water will naturally be channelled down these slopes, deepening the grooves
through erosion, so, they are likely to be a mixture of the above processes.

 Because of the detail level in the topo, I'm going to take these lines as indicating major forms such as the tectonic and glaciation, valleys, etc.

 You can try to be as faithful to the topo as you can, but remember that the mountains you will produce will be far more realistic looking than those in the topo. The topo will give a good overall indication of the character of the mountain.

The way I approached this was to determine where the major channels (that is valleys) were.

These would be done first:

Eyeball the altitude of the nearest point to where the channel will connect with the main ridge.

Move the mouse slightly adjacent to this (how much is your choice) and Draw your Stroke, with it ending at roughly where you think the base of the mountain will be (or it's lowest point). It's possible to have your left hand over the L key to
get ready to immediately open up the Vertical Stroke Lofting dialog.

This is a valley, so what would the overall profile of the line be?

 It's a simplistic but effective view to say that all valleys will have, to some degree, a concave profile (see below).

All of the valleys will be separated, more or less, by ridges: the arms of the valley. Again, we can say for our immedaite purposes, that these will be more or less convex in profile:

Image

Next, insert to either side of the valleys, the valley arms: in practice, all you really need to do is add another Stroke between each valley Stroke (below right).

Image

  Remember I said that, unlike using the Mound Tool, we did not need to define the base of the mountain. You can probably guess that the Strokes you have just drawn at order 1, will define the base themselves. Below are a couple of shots of the mountain looking south. Bottom right gives a close up of a steep V shaped valley.

Image

We're going to take a look now at the same mountain with those two orders (0 and 1) in place, put through the generator. This will help to give us a rough idea of what level of detail is required to produce a convincing mountain within Wilbur alone, and perhaps give us some inklings as to at what point we can potentially export to a dedicated erosion app like World Machine.


Generate.

We are now going to temporarily leave the Tessellation stage (Design stage) and take a peek at the Heightfield.

First open up the Heightfield 3D Preview: Window > 3D Preview Window from the Wilbur's main menu bar. You don't have to close down the Tessellation 3D Preview if you want to keep it open.

You should have a flat surface with the topo overlayed as a texture.

Resize the Preview window so you can get a good old look at it.

Surface Tessellation > Generate (or Highlight any point on the surface > G).
The Tessellation Parameters dialog will open up. I refer you back to the Wilbur Workflow diagram above.

Leave everything at default > Preview.
 This generates the heightfield from the Tesellation mesh on the Surface, converting from the one form to the other. Wilbur takes the point cloud of data from the Strokes and interpolates between them to create a heightfield. If you want a better view of the generated heightfield on the Surface, you can turn the Tessellation visibiilty on the Surface on and off by toggling the Tessellation Tool Icon on the main Toolbar.

 Now accept the generated Heighfield by pressing OK.
Press Update in the 3D Preview (Heightfield 3D Preview).

While we're at this juncture, here's a shot of the Wilbur 1.54 Enviroment.

Image


Erosion.

The following series of images were created as follows:
  1. Surface Tessellation > Generate (defaults).
  2. Blur.
      This is needed to smooth out the sharp lines on the tessellation. If these persist too much in your model, then the water flow from erosion will only draw attention to them. It's better to smooth them out.
     Filter > Blur > Gaussian Blur > Sigma = 2.
  3. Noise.
     The surface needs roughening up.
     Filter > Add Noise > Gaussian (Mean = 0, Variance =20, Use Sea Level = ticked).
     This adds small scale perturbations to the surface. Mean, indicates the average overall value that will be added. Variance =20 specifies variation in height of the noise: 20 m either side of  the mean. Therefore we have a variation between -20m and 20m. In other words it can add or subtract 20m.
  4. Filter > Erosion > Incise Flow (Blur= 0, Amount = 1, Flow Exponent =0.266667, Effect Blend = 1).
     This potentially removes significant height from the terrain (see Erosion Table below).
  5. Blur.
     This will smooth the Incise Flow  effects.
    Filter > Blur > Gaussian Blur > Sigma= 0.9.
  6. Precipiton
    Filter > Erosion > Precipiton Based > (Defaults, except No. of Passes set to between 1-20).
     
Image


Image


Image


As you can see the results are not too bad for very little effort.

 Looking at the final image, you can see what the Precipiton process does. I may have exaggerated the 'precipitation' impact here, but it serves to illustrate my point. In essence, it emulates the effect that water (and presumably to some extent glaciation effects) will have on a terrrain. The process erodes material at the point of impact, carries it down stream, and dumps it at an appropriate place. This gives rise to outwash zones as you can see around the base of the mountain and it tends to fill in the valley floors with till, talus (scree) and fine sediment. As you can see the valleys have indeed been literally 'filled in' with eroded rock and sediment.


Orders 2-3.


 There are other things which could have been done to the terrain from the Generate window such as the use of Fractal Noises and other tools that Wilbur has at hand such as Fill Basins, but I'll stay with this individual mountain, and see if I can improve it via the Tesselation Tool. This is probably the most time consuming option, but as we are debuting a new design approach and tools here, I'll explore the Tesselation option further. (For an example of further improvements available through the new Wilbur Noise Filters, see here and for settings information: here).

Taking the above valleys, each of those will generally have tributary streams flowing down the valley sides, feeding into the main stream or river on the valley floor. The Incise Flow has helped to suggest this, but I don't think there's enough actual detail in the Tessellation to suggest a hierarchy of water courses: that is, they all look of similar size and magnitude: what's more they are all small in size. This generally would not be the case in nature. This is related to the problem we had in the previous article on Leveller, where there was not enough mid-scale structure in the foreground mountain.

If we add small valleys (or gulleys) onto the walls of the main valleys, this might help give these tributary valleys more form and provide some of these mid-sized water courses.
 In our analogy, this structure of small tributaries forming the flow basin as it is called, will serve as the leaves connected to the smaller branches of the tree.

Below left is the final version of the Mountain 1.


Image

Image

Again, the effect may be overplayed, but it makes the ideas and topography clearer.

 You'll notice that there are individual points dotted around. These were used to set point heights using point highlight > Click-Drag  to set the height with the real-time visual feedback of the Tessellation 3D Preview. This is a very quick way to add finishing touches without having to resort to Strokes all the time.
 In nature, the network of ridges and water channels is extremely complex, with many orders of scale. The streams in yellow (order 2) would have smaller streams leading in to them, and so on. It's an impossible task to try to do this in the Tessellation Tool manually. The Erosion sequence: Incise Flow and Precipiton will no doubt add a couple of orders of network to what we already have. In addition, the Fractal Noise parameters is another important, unexplored option. Used in the right way, this could very well achieve even better results. In addition, Wilbur may have a few improvements regarding procedural placement of these finer networks in the future.

Modelling the Terrain.



 I'm going to really skim over the actual building process here, but we'll look in a moment at a few more specific geomorphologies that I've tried to create.

Image

Image


Erosion..again.

With the improved Tesselation, we'll go through the Generation process once more.

  1. Surface Tessellation > Generate (defaults).
  2. Blur.
     Filter > Blur > Gaussian Blur > Sigma = 1.9.
     I've used 1.9 rather than the value of 2 that I used previously because the purpose of this Blur step was to smooth out the Tessellation. The Tessellation has already been smoothed out by the additional Strokes on the Surface.
  3. Noise.
     The surface needs roughening up.
     Filter > Add Noise > Gaussian (Mean = 0, Variance =20, Use Sea Level = ticked).
  4. Filter > Erosion > Incise Flow (Blur= 0, Amount = 1, Flow Exponent= 0.266667, Effect Blend = 1)
     This potentially removes a lot of material from the terrain. For more information see the Erosion table below.
  5. Filter > Blur > Gaussian Blur > Sigma= 0.9.
  6. Precipiton Based Erosion. Ctrl+E (Filter> Erosion > Precipiton-Based).
     This time I've decided to try to emulate some thermal weathering in the initial stage, and then go on to apply fluvial erosion.
    To quote Joe Slayton: The precipiton algorithm drops a parcel of erosion onto the surface and then moves it downstream until it hits a sink (area with no outflow) or hits its iteration limit.

    Thermal Erosion:
    I've used the default settings apart from:
     Max Length = 16.
     This means that the effects of erosion have a length determined by the parameter: its iteration limit of 16. Erosion could stop even when it has not reached a basin.
    Passes = 4.
    Fluvial Erosion:
     Max Length = -1.
    'Max Length is the number of steps that a precipiton is allowed to move before it is done. A value of -1 means that the precipiton will move until it hits a sink so things will take longer over time as the "rivers" get longer.'
     This in effect tells the Precipiton to continue until a basin is reached. Hence, this emulates fluvial erosion.
    Passes = 4.

 'Delta is the amount of the difference between the current point and the lower point to move. It has an upper value of less than 0.5. 0.25 is a nice compromise value, but larger values will lead to quicker erosion.
  Connectivity means whether the system will look at the 4 closest neighbors or the 8 closest neighbors. 4-way is faster than 8-way but tends to generate inferior results.
  Wrap indicates if the precipiton should stop at the edges of the image (None) or treat the world as a cylinder (X only or Y only) or a torus (X and Y). Note that settings wrapping to a value other than None will increase run times but allows height fields that are already connected to remain connected over erosion.

  The Multi-pass group is option relating to multiple passes of the above erosion algorithm.
  Passes is the number of times to run the algorithm.
  Blend is how much the current erosion will be blended with the prior surface. Blending helps to remove some of the worst linear artifacts that tend to appear during the erosion operation due to the connectivity setting.
  Noise is the amount of random noise added to the surface at each iteration. A small value here is sufficient to reduce the amount of artifacts present from the erosion. Note that using too large a value will tend to prevent drainage channels from appearing.'
 
Image

Image

Image

As you can see, the extra Strokes in the Tessellation do indeed create better terrain, but it takes a lot of time. In the future, many minor improvements in the Tesselation Tool interface are planned to streamline the modelling process. Each one of these improvements will shave off time from each operation. In addition, control over the Strokes on a procedural level is a goal. This might involve the procedural (automatic) creation of drainage basins for instance, at the network orders of 2 and above. This would allow modellers to go that extra mile (or two) and create the preceding terrain quality but in the same amount of time as it took to produce the previous sequence above.

 The following table is a breakdown of the effect that the above operations have on the terrain minimum and maximum height.


Image


Basic Mountain Geomorphology.


The images in this section were captured in Leveller.
I don't claim to have any real knowledge of geomorphology, so accept this as a layman's view.

 1. Cirque.

A cirque is an amphitheatre-like valley (or valley head) of glacial origin, formed by glacial erosion at the head of the glacier. Cirques are typically partially surrounded by steep cliffs. The highest cliff is often called a headwall. You can see this as the back wall of the cirque below.

 Many glacial cirques contain tarns dammed by glacial till. Cirques form in conditions which are favourable; which in the northern hemisphere includes the north-east slope being in shade and away from prevailing winds. The cirque below is on the north face of the mountain. These areas are sheltered from heat, and so, they encourage the accumulation of snow. Cirques will also be at the heads of glaciers. The cirque below has not had sufficient glaciation to erode a U shaped valley.
Below far right shows the accumulation of debris, ice and snow in the Cirque.
 The feature below could also describe a Slump or Hanging Glacier, depending on the composition of the terrain.

Below left is a typical profile of a Stroke used to define a cirque. Depending on the immediate terrain, it may require another Stroke to define it. However, I would recommend a Stroke like the one below and then place one or two single points to either side of where you want the lowest point of the bowl to be.The height of this point can be set with Right Click-Drag and the real time visual feedback from the Tessellation 3D Preview.


Image


2. V Shaped Valley.

V Shaped valleys have steep valley walls with narrow valley floors. In cross section it has a "V" shape. They are created by fast flowing rivers with steep gradients. As rivers flow downhill quickly, they remove more sediment from the bottom of the stream channel than from the sides. This process is called downcutting. It can be compared to a knife cutting through a cake. The resulting landform is a narrow canyon with a fast flowing river and little bank, or floodplain, on the river sides.
 One suggestion is to use a couple of strokes to define the transverse profile (across the valley floor) in combination with the longitudinal profile. These tend to emerge naturally after defining two convex valley arms with a concave valley floor. Not much work is required to get these at all.


3. U Shaped Valley.

 U shaped valleys are formed by slow flowing ice called glaciers. Glacially carved valleys have the name U-shaped because in cross section they resemble the letter 'U'. They have a curved floor with steep sides. Floor gradient does not affect the valley's shape, it is the glacier's size that does. Continuously flowing glaciers and large sized glaciers carve wide, deep incised valleys. U Shaped valleys were often originally V shaped valleys.

Image


4. Horn (Pyramidal Peak).

A pyramidal peak, or sometimes in its most extreme form called a glacial horn, is a mountaintop that has been modified by the action of ice during glaciation and frost weathering. The horn below is not one of the more extreme examples such as the Matterhorn, but it is still an extreme peak.
 Ice fields develop U- or bowl-shaped basins in the sides of a mountain called cirques (see Cirque above). These can be seen surrounding the peak. These encroach on each other to produce ridges known as arêtes (see Arête below). The meeting of three or more arêtes forms a peak. A peak has a sharp summit and steep slopes on at least three sides. They are a common shape for mountain tops in well glaciated areas.


5. Formative V Shaped Valleys.

Water running down a slope becomes a stream when there is enough water to form a tiny rivulet with a channel to contain the water. In its early stage a stream carries water only after a rainfall and is said to be an intermittent stream.  In contrast, a permanent stream is one which has cut its valley deeply enough that groundwater seeps into it and keeps it flowing between rainfalls.
 At first the rivulet may form downslope but in time the rainwater runs together further upslope and gradually works headward until the head is at or near the divide or top of the mountain.  This is headward erosion. See here for an illustration.


Image


6. Hanging Valley.

A hanging valley is a valley that falls off a cliff. Below left, a small glacier flowed out of this valley and joined the larger valley glacier that flowed down to the left. Since this glacier was small, it was unable to erode down into the landscape very far, and a hanging valley was formed. The size of a glacier determines how far down into the landscape it can erode; the larger the glacier, the deeper the valley it can erode. Thus, hanging valleys form when small tributary glaciers join larger glaciers.
 The term cliff may not sound particularly appropriate to describe the outlet of the valley in this case, because it is not precipitously sheer, but bear in mind that the waterfall produced cascades around 1000 feet to the valley floor.
 The Lauterbrunnen in Switzerland has a classic series of hanging valleys. Tolkien stated in his Letters that this was his inspiration for Rivendell:

Image

7. Fluvial Outwash.

Fluvial outwash are deposits of clay, silt, sand, gravel, or other particulate material that has been deposited by a stream or other body of running water in a streambed, on a flood plain, on a delta, or at the base of a mountain. In addition flow of subsurface water and groundwater can cause landslides.

Image


8. Arête.

An arête is a thin, almost knife-like, ridge of rock which is typically formed when two glaciers erode parallel U-shaped valleys. The arête is the thin ridge of rock that is left separating the two valleys. Arêtes can also form when two glacial cirques erode towards one another. The word derives from a French term referring to the bones in a fish backbone.


9. Ice/ SnowField.

A continuous accumulation of snow and glacier ice that completely fills a mountain basin or covers a low-relief mountain plateau to a substantial depth. When the thickness becomes great enough, tongues of ice overflow the basins or plateaus as Valley Glaciers. For instance, once the V shaped valleys were eroded sufficiently (see fig 5 above), ice would begin to creep down them in the form of glaciers, eventually carving out U shaped valleys.
 The body of ice is called an ice field, and protruding rocks called nunataks are often prevalent. The elevation of this plateau is around 5000 feet. This could be a small ice field with a relatively thin sheet of ice, perhaps evolving from a snow field to an ice field.


Image


Exporting the terrain.



If you want to export the heightmap, first determine the vertical extents of the terrain for full accuracy.
Window > Histogram.
The Lowest, Highest  fields in the dialog are the lowest and highest points on your terrain. Depending on what format you are exporting in and what app you are exporting to, it may be necessary to note these. In the context of MEDEM, this information will be necessary.

The Heightfield can be imported into L3DT. I have used a modified version of the Arctic Climate file. To do this:
Browse to the Climates folder of your L3DT installation.
Right click the Arctic .cli file.
Open with > Browse to a text editor.

The only alterations I made:
 #Climate Name "Hithaeglir".
In the snow entry:
#BaseProb: 2.

This gives much greater snow coverage.
On opening L3DT you must register the new climate:
Options > Climates > Register new climate.

(Note the climate system has changed in L3DT as of the time of writing; being much improved).

The following sequence of shots was taken in L3DT's Viewer. The final shot was created in Leveller using the saved L3DT texture as a texture overlay and using Leveller's scanline renderer. Some postwork was done in Photoshop.

I created a Skybox in Terragen with the excellent help of Aaron Torpy's tutorial and the Jean-Claude Gregoire's Stormy Skies tutorial for Terragen.

Image


Image


Image


Image


 

Workflow.


This terrain required the most time of the three terrains in this series. This is because of a number of reasons:

I was learning a new approach.
I was learning a new tool.
I did not take advantage of Wilbur's Fractal Parameters to add Noise to the surfaces.
Because of the greater ease of use of the Strokes tool, it was possible to pursue greater accuracy to the topo. This would not really be that necessary.

However, balanced against that, to get the terrain to a reasonable state (see above: network to orders 0 and 1), was very quick indeed and holds a lot of promise. Certainly, in terms of a Design stage, Wilbur 1.54 is much the quicker, being able to produce terrain that's very faithful to the topo.

 Currently, Wilbur's Noise functions are arguably its weakest feature. Not so much in terms of functionality, but in terms of ease of use, especially where a more controlled application of them is required. That's something I'd like to look more into in the future.
Update: This is no longer the case, as Wilbur 1.55 has addressed this with more filters and much greater ease of use.
 In my opinion, Wilbur's erosion is good to very good. No doubt in the hands of a more experienced user, one could produce excellent results. However, World Machine is still the ideal component of our workflow to apply erosion.

 We thoroughly recommend Wilbur in the following cases (there are also many features that I have not covered):
As a complete solution for those with strong personal preferences and lots of free time.
As a part of a workflow:
For a very rapid design stage using the Tessellation Tool.
For post-design stage, (pre-erosion) including manual modelling, procedural noise, filters, etc.
For postwork such as adding finishing touches to the terrain using its more traditional tools: paintbrush, et al.


We hope you've found this article useful and had some fun in using it. Once again, cheerio! :)

The ME-DEM Team.
Last Updated on Monday, 15 May 2006 06:44