I would like to make river, which starts thin and ends thick (just like create water device does). Is it possible with custom GCS? There is unfortunatelly no help for this device, so I have no clue what to expect (Reach Character – World Machine Help). Thanks.
I suppose this is what you’re looking for?
Yes, this is it. Thanks a lot!
Btw, dont you have more complex example? I would like to understand how this works, but I have no clue how inputs for this device should look. I would like to create river, which exactly copies original spline, but have nice irregular channels like in example GCS files. Thanks!
I am just randomly putting there some curves and it works somehow. I would welcome some theory behind, to be able to do it without trial-error and random changing of parameters
You can change those parameters using the
Reach Character device. It allows you to change characteristics like the valley wall, deepest point (thalweg) and the alignment to the original spline (what you’re interested in). All these characteristics can be determined/described with
Curve devices, so that’s what we’ll be working with. Important notice, when looking at a river, we look at it from the top, and the river goes downwards, and in the image below you can see what is left and right (I think it is incorrect, as when standing on the top of the river and looking downstream, L would become R and vice versa, but okay, that is just some implementation thing…)
Let me quickly talk you over the parameters of the
Reach Character device from top to bottom:
Alignment: This lets you control how much the river is aligned to the original spline. A curve value of 0 means it is, on that point, on the same spot as the original spline. A positive number means “deviate to the left” and a negative number means “deviate to the right”. So, when we hook it up to a
Perlin Curvedevice, we get a nice meandering river, although the meander is purely artificial and not hydrological sound. As with all these parameters, we are emulating a river, not simulating it.
Bankfull Width: This lets you control the width of the river at any point, where a curve value ≤ -1.0 means no width, equal to 0 means “original width” and everything above means “wider than original width” (with no upper limit I am aware of, but it will start to bug at high values). This will influence the width unilaterally, unlike the alignment, where you could “swing” the river from left to right and vice versa.
Thalweg undulation: Cool parameter, not so useful. It lets you alter the depth of the deepest part of the river, allowing you to emulate turns in the river more accurately, but sadly it is not really possible to do so convincingly with the current
Curvedevices, as you cant derive curves (yet). A curve value < 0 means “deeper than original”, 0 means “original depth” and > 0 means “more shallow than original depth”.
Thalweg curvature: Even cooler parameter, but again, not so useful for the same reason. Now, instead of altering the maximum depth of the river, we determine where that deepest point is in respect to the rivers middle, kind of like the
Alignmentparameter, but instead of shifting the river around the original spline’s shape, we are now moving the deepest point of the river, without shifting the river itself. It is unclear what the values represent, as you can’t alter the amount of curvature. It is either curvature or not curvature, which is a bit sad (and maybe a bug? @Stephen).
Left/Right Valley Wall: These two parameters let you change the “depth” of the valleys, or better said, how far they extend into the terrain, for a given point. The curve appears to be normalised internally and is translated as follows: The lowest value of the curve will not change the “depth” of the valley, and the highest value will push the valley land inwards the most. The “main control” of this behaviour is
Valley Exaggerationparameter, one of the parameters in the
Reach Characterproperties window. In the image below, I only hooked up a curve parameter to the Left valley.
I hope this helps you a bit! Here is the reach-character-explanation.tmd (81.2 KB), though the wires may be a bit wonky as I’m using 4019 alpha and with that, the wire system is changed dramatically.
Here the nodes + final river:
Wow, thanks a lot! This should be copied into help sections. I noticed, that thalweg curvature somehow works in sample CGS (my first screen), so it does something like this (with obvious HM limitations). Do I understand well, that currently it is just curvature or shape bellow? Based on what curve parameters? Thanks!
I’m not sure if it approximates the shape from the image you posted. I only know that the
Thalweg curvature parameter shifts the thalweg of the river. Maybe Stephen can give an answer.
I think it is, if you look at the first screen, it looks quite similar. Inner part of curve has deposits and outer is cut. This is actually quite awesome, it has huge texturing potential. Only need to figure our how to get this deposit part into mask.
@HYLK Got pretty much everything correct above, I’ll just add a bit more detail on a few of these:
The Thalweg undulation controls the depth of the river measured at the thalweg (deepest point).
The cross-sectional shape of the river channel is exactly what the image above shows. Thalweg curvature determines on which side the cut bank / slip-off slope appears, by adjusting the thalweg location within the channel.
If no thalweg curvature is provided, the River device automatically attempts to swing the thalweg to the outside of the curves from your drawn path.
The interplay between the width, depth, and thalweg location indirectly control the final parameter: flow speed. Since the total flux of water passing any given slice of river must be constant in a steady-state river, when the cross-sectional area of the river reduces, the water must flow faster to compensate. This gives you fast-moving water through constrictions, and slow, deep pools.
The way that these parameters move with or against each other in a pattern gives rise to the geomorphic covariance of the river; a fancy way of saying the way that a particular type of river behaves as it flows. The various river character macros attempt to create some very classic meander/width/depth/thalweg scenarios, such as a meandering river that has shallow riffles between cut-bank curves of the river. Using sinusoids for this is very useful as you can precisely control their relation, and then possibly fuzz them up with some noise.
There’s a lot more potential to export some masks and texture data here for sure!