All posts by Stephen

Founder of World Machine

3026 Erosion Improvements

The Erosion device has been upgraded in build 3026. As World Machine’s most popular device, all changes to erosion have to be a bit cautious; but I think you’ll enjoy what’s to come 🙂

Eroding into river channels

The ability to erode into river channels has been around for a while, but it really hasn’t worked the way you want, especially when “Geologic time enhancement” is enabled. This became increasingly obvious with the new automatic rivers in 3025; doing any kind of strong erosion would either sink the river deep underground or leave it hanging out over the terrain like in the first image below.

It took much longer than I expected to hit upon a good solution to this problem. But the default behavior is now way better:

No more hanging rivers 🙂

Light years better! The river now feels fully integrated into the terrain, without the odd “buried or hanging” effect in first first image.

However, in some cases.. when we do massive erosion after placing rivers… it’s still not enough. This made me think more about what we’re actually trying to achieve when eroding a world that already has rivers placed.

Achieving Equilibrium

For example, here’s an example world based that has had extreme erosion performed after placing rivers. At first glance it looks fine. But look closer…

A great amount of rock has been worn away. 3026 ensures that the terrain around the river is roughly preserved, and it is.. but that means that the river ends up running down the ridges of the terrain!This would be.. unusual in real life 🙂

One usually doesn’t see rivers running down a ridgeline (left side)…

Let’s back up. What’s causing this problem?

Our desire to fix the river paths to their existing location is what causes us this trouble. In reality of course, the water channels are the primary agent of terrain change, and down-wear in concert with the rest of the terrain. What we’re trying here with a fixed river location is not physically plausible.

The solution is : uplift.

Uplift

The terrain around the river has slowly uplifted during erosion, maintaining the river’s location at the bottom of local valleys

You now have the option of slowly having the earth raise beneath the terrain undergoing erosion. This provides the forcing function we need to keep the rivers in their proper place at the valley floor.

I think you’ll find this to be quite useful!

Preserve Edges

Build 3026 also makes sure the “Preserve Edges” option is A) no longer broken 😉 and B) interacts well with uplift.

When enabled, map edges are effectively sediment sinks (just like if you specified a river/sink mask), and play well with uplift. This lets you carve into the terrain automatically as uplift happens:

Uplifted erosion without and with “Preserve Edges” set

What’s happening in the comparison above is that the edges are being forced to their initial values in the bottom image. This creates the elevation differences that erosion needs to continue working; in the top image, erosion has essentially reached an end-state, where all large structures have been worn away.

Mask Structure

Finally, a new useful control has been added to Erosion: Mask Structure. The wear/sediment/flow masks are incredibly useful for texturing, but getting a good look from them has been counter-intuitive in the past. This has been fixed, and you can now simply set the structure slider lets you control how detailed/smooth you want the mask information to be.

Sliding the Mask Structure from 0..1

Better Geological-time Enhancement

As a final short aside, this control has been made much more fluid/controllable/predictable in terms of results. Without going into all the details…. I think you’ll like it.

About that compatibility…

With all these changes, it’s worth talking about compatibility. Erosion is now versioned, which lets us both preserve old behavior and also simplify things a bit.

You’ve probably noticed that Erosion pre-3026 has a bunch of odd compatibility check-boxes. This is due to making small improvements over the years without the benefit of the device versioning system. In order to preserve the old behavior, there needed to be a checkbox. And then, sometimes there wasn’t one, leading to changes when you didn’t want them…

Now that versioning is in place, we can remove some of them:

Simplified Erosion dialog

The compatibility options have been distilled down to some of the essential ones. If you load an older world, you’ll see more of the old options appear.


That’s it for now! 3026 should be coming out very shortly for you to play with the changes; after a short bugfix interval it will then drop to release channel as well.

Build 3026

Build 3026 is making progress and should be released in the next week or two; it will likely also be the ‘Alpine Lakes’ release channel version.

Erosion now plays nicely with river systems, bugs have been squashed, and the ability to pin/edit the headwaters of your rivers introduced. But along the way, I encountered a problem.

A difficult choice

I ran into a quandary while implementing the “pinned channel heads” option for the Create Water device.

In order for you to “drop a pin” where you want a river to start, you use the Layout View to place/move the pins. But Create Water works quite poorly in Layout View! It’s very confusing/hard to see where your river will actually run.

Retiring the Layout View (eventually)

This is yet another example of the problems that Layout View have caused over the years. As time goes on, I’ve become increasingly certain that the Layout View functionality should become a “mode” of the 3D View instead of being its own very unique display.

There are a variety of reasons for this:

  • It would be very useful to be able to use the 3D View and its pan/zoom/track ability when creating masks, shapes, etc.
  • The great strength of the Layout View is that it supports viewing infinite terrain extents. In practice though, wanting infinite pan/zoom ability is rare; you’re mostly working on the area defined by your render extents.
  • The technique needed to render a realtime infinite viewing area means that devices like Erosion, etc sometimes look nothing like what they will in the actual world you’ve created!
  • Going forward, our focus will continue to double down on simulating nature; more and more new devices will be introduced that are problematic with Layout View.

However, this is a big change that we want to do properly, in concert with some other features later this year or next. But in the interim, we need something to hold us over until that changes. What to do?

Solution: “Focus Extents” mode

The Layout View now has a “Focus Extents” toggle. When enabled, the Layout View switches from the infinite-extents display to showing only what the current preview does.

This lets you see the true output of your world with no artifacts. Not only does this make devices like Create Water much easier to manipulate, but it also is much faster and more pleasing to work in.

Here’s a video showing it in action:

That’s all for now. Next time 3026 should be out and I’ll go over the full set of changes, as well as finally get a chance to talk about what comes after that!

Friday update

Happy friday everyone! Here’s a bit about what’s in progress here at WM.

I’m going to talk first about some updates to Alpine Lakes that are coming down the pipe.

Thank you for everyone who wrote in with any issues they ran into with build 3025! I think most of the license-related hiccups are out of the way now, and build 3026 is intended to both fix some issues discovered in 3025 and also bring some improvements along for the ride. We’ve also continued to slowly flesh out the documentation on the new devices; we still need to write an overall “guide to water” however.

A few hints and tips for water

Here’s a few tips from the upcoming guide to water:

Always re-structure before creating water

If you ever run into issues with tiny pocket lakes appearing when you create water, 99.9% of the time the problem is you haven’t restructured the terrain for flow.

Flow Restructure is useful in many different situations which is why it is a separate device, but you will almost always want to use a Flow Restructure device directly before Create Water!

Always flow before water!

Modifying your terrain after a flow restructure device will, with few exceptions, break up the carefully created height differences that allow the terrain to drain properly.

Don’t hesitate to use Flow Restructure multiple times in your network! It’s very useful early to help set the overall elevations of your world. But remember to re-apply it right before creating water, unless you have a good reason not to! (*reasons include: creating intentional lakes)


Next let’s talk about some of the upcoming improvements. Build 3026 isn’t available yet, but hopefully in the next few weeks. It contains a number of bugfixes, but also some larger new features.

Here’s some of the bigger items:

Water Mesh Output

You can now simply wire the water datatype into the mesh output to export your geometry. Easy peasy. The Water Output macro is still useful when you want the flowmaps as well.

Water and Erosion

River networks have a unique property in real life. Rivers are prescribed by terrain, but also profoundly shape it. This kind of emergent, positive-feedback effect can be tricky to control. And there’s no single solution – sometimes we want to guide things exactly, and other times to let nature take its course.

One solution is to capture some of that feedback by applying erosion to the terrain, adding rivers, then continue eroding into the new river system. One geology text refers to rivers as “endless conveyor belts” that carry away sediment from your hillslopes, which I think is a really illuminating concept! Imagine heaps of sediment carried into your river channels and being swept out to sea…

So given that, we definitely want to support erosion post-water. However, in 3025 that doesn’t always work. First of all, it’s a bit annoying to setup the network needed – you have to extract the river mask, invert it, feed it into the erosion device.

Then even when masking, if you really crank up the erosion you run into major problems where the terrain is eroded right out from beneath your rivers and streams. Witness this sequence.

We start out with a basic eroded terrain that has water applied:

Erode-Create Water works fine

And everything is fine. But let’s say we want to erode the terrain more into our rivers. Then we run into problems:

Dangling cliff-side stream: Where did my terrain go? guys??

Given the unique way that rivers and erosion complement each other, this should be a “golden path” where it just works. Now it does. Just feed the water data into any erosion device:

and no more floating streams:

The cliffs around the stream is preserved

Even with quite extreme erosion we now can be confident that the terrain won’t be ripped out from underneath/around the river network.

Eventually it would be useful to have an option to allow erosion to co-evolve the terrain and water systems in tandem… but that’s for another day 🙂

Click and Flow Rivers

Create Water has been carefully constructed to be scale-invariant; all other things being equal, the river networks should appear in stable locations no matter what resolution you build at.

However, all other things are not equal. As reader Pratyaksh wrote in the other day, sometimes this doesn’t seem to be true. What’s happening? Two problems:

  • Sometimes the underlying terrain itself is changing! This happens when other devices are not scale invariant. This is often the case with erosion, etc, where the result when building at higher res can be quite different.
  • The scale-invariance only holds for convergent terrain. Convergent terrain simply means that water tends to combine rather than thin out as it runs downhill. This is usually true; but when water spreads out running down a cone-like surface, for example, it is not.

What’s the solution? 3026 will let you pin the headwaters of the rivers in place according to the current terrain. The rivers will still flow naturally when built, but they will only spawn where indicated.

This functionality is only one step removed from “semi-automatic” click-and-flow rivers, so I went ahead and implemented that too 🙂 Now you can simply use the Layout View and click to spawn a river; you can move around or delete the headwaters to control your river network. The UI is not great for this right now, but that’s the subject of a whole other post…

This is the final piece of the continuum of control over rivers. You can now:

  • Create fully manual rivers that impose themselves into the terrain around them using the river device
  • Create semi-automatic rivers that are placed by you but flow naturally
  • Create fully automatic rivers that are placed and flow according to nature

Long term, the goal is to make these options integrate more tightly; automatic rivers should have GCS channel character for example, and I’d like to be able to promote/demote between manual and semi-automatic; so you can easily customize as much or as little of a river as you’d like. But that’s for another release…

… and that’s all for now. Until next friday!