Outerra forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Download Outerra Tech Demo. Unofficial Outerra Discord server, MicroProse Discord server for OWS.

Pages: 1 [2] 3 4

Author Topic: Cartographers stuff  (Read 56822 times)

monks

  • Full Member
  • ***
  • Posts: 212
Cartographers stuff
« Reply #15 on: February 26, 2011, 03:04:41 pm »

Apart from the modelling in the rain idea- where you have realtime feeback of fluid flow, there are other workarounds. We see realtime fluid is the ultimate approach because we're kind of terrain purists (at ME-DEM)- that is, you haven't really got a map (of any depth) without terrain. And that makes rivers for us important (well really fluid interaction the most important thing. Obviously there are others in the real world, but the two main ones are glacial action and water erosion). You could simplify that even more and say it's all about temperature gradients...which is really what drives GTS.

I like your idea regards rivers. Come the timne, I'd be interested in running that on our maps.

One workaround, is you could try run the erosion (a chanelling/incising erosion would be best
rather than a high sediment one) on the uneroded terrain to see where erosion was naturally
headed. Then use that as a guide to mark your river estuaries and your river paths on your
design map. Then when you run the erosion again, everything would connect up. I do this to
establish the main rivers, and then I add noise around the rivers and get the procedural
tributaries from the erosion as extras- the stuff I don't have time to do.

 Other than contours- which require a particular kind of madness  :lol: ..- I use a smudge tool
which I paint from the estuary along the river path into higher ground. You could automate that
I imagine. If you visualise the land as contours, the smudge tool creates ridges and valleys
depending on the land. You could automate that using input from a desigm map. Stepping through
pixels.

http://www.skindustry.net/medem/files/Temp/ContoursIdea3.png

 I also use a gradeint tool across a selection, but the smuge tool is the most reliable (but
it's the slowest!).

 Robes also wrote a nifty river flow tool for GTS (which he's not mentioned) which takes a user
input vector map of where rivers are, and bascially shunts water flow along them- it was
created to solve the problem of flat areas (by artificially multiplying the flow magnitude)-
they're the killers, it's difficult to avoid them with large "realistic" models. But with
interpolation across contours you can minimise them.

 Given a design map and some programming, rivers to order should not be *that* difficult if you
hook up the two in the programming. Get the main rivers with the design map, and then the
tributaries will follow procedurally.
 Ideally, for these large worlds, you want tools which are vector based- rivers included.
It strikes me Games have just not given any priority to rivers before; understandably. But really rivers are
where it's at if you talking about pure, realistic terrain. They define connectedness and
geography. It's what makes a world.

 
 ...Tolkien wanted other people to collaborate on his world. His famous statement about "Other
hands". The internet is the perfect platform for that vision. He did become "crest fallen"
about that in later years though, as nobody did add to his creation.
 There was a moment in Tolkien's life where he to make the decision between "cash or kudos" as
he put it. I think he chose cash and as a father of four with a sick wife who was put upon for
many years lecturing, I don't blame him  :P
 Tolkien would have tolerated the non-commercial fan work- I don't doubt that. The problem was,
not that he was avaricious, but that he had very high standards. I think Tolkien would have
hated what the lawyers do- what they do amounts to political control, and Tolkien loathed
politicians- it's well documented.

 I agree if you're making a game (I wasn't sure if you was), then it'd be risky to use anything
M-E shaped in it. But if you need terrain, you could use it with some modifications.

 It'd be great (awesome) to make movies in the engine. And as RedRobes said, it really wouldn't
rebound badly to you guys. And, the tools testing, yeh :)

monks
Logged

cameni

  • Brano Kemen
  • Outerra Administrator
  • Hero Member
  • *****
  • Posts: 6721
  • No sense of urgency.
    • outerra.com
Cartographers stuff
« Reply #16 on: February 26, 2011, 03:12:55 pm »

I know how the water flow and erosion is simulated normally, but that was not the point. The point was to allow placing the river artistically. For example, in ME you are already given the path of Anduin. You don't know all its tributaries, or streams in mountains. I wanted to take on the problem from the opposite end - we know how erosion looks like after some thousands of years, so we could use a fractal algorithm that simulates the resulting effect.

That would work like this. On the Anduin or on its know tributaries I'd generate branch points, spawning smaller rivers. These rivers would be generally attracted to the nearest mountain range, but the direction will be wobbling in a fractal manner. The strength of attraction will be higher with higher branching level of the river and also with the slope. This would allow for meanders in lowlands and normal fractal paths elsewhere.

Mountain ranges would be shaped by this process too. Each generated river would claim it's drainage basin, that serves two purposes - the branches won't cross each other, and the areas will be covered by branches when the distance from another basin is becoming large. River branches will be V-carving the hills with varying angle of V and strength of it. I can't probably explain it all quickly here.

Of course, these are just ideas so far, but in my mind they kind of work :D
This approach is less parallelizable, but would be also much faster. But I would not mind if it wasn't - what I value more is the ability to control and predefine parts of the world artistically, not by selecting from random creations, but by determining details at various levels while letting the remainder be handled by the algo. Essentially the same way we are handling fractal terrain now.
Logged

cameni

  • Brano Kemen
  • Outerra Administrator
  • Hero Member
  • *****
  • Posts: 6721
  • No sense of urgency.
    • outerra.com
Cartographers stuff
« Reply #17 on: February 26, 2011, 03:31:47 pm »

Quote from: monks
I agree if you're making a game (I wasn't sure if you was), then it'd be risky to use anything
M-E shaped in it. But if you need terrain, you could use it with some modifications.

For the game we are going to use earth data, we are not considering anything else now. My concern was for any project that could use an OT based world creator to replicate M-E, but as I'm generally not interested in creating a non-original work myself, it doesn't directly affect me .. just saying, basically :)

But I am interested in creating an OT based world creator one day, with tools that will allow creating precisely these kind of worlds (and more), so I'm always interested to hear ideas around that. Even when I know such a world creator can be made only after we manage to secure ourselves with something for a wider audience, propagating the engine. I hoping some steps towards that can be made during development of the game.
Logged

monks

  • Full Member
  • ***
  • Posts: 212
Cartographers stuff
« Reply #18 on: February 26, 2011, 04:04:23 pm »

Yes, I think maybe a balance between the two methods: create the main designated rivers from the design map with your idea Cameni, and then revert to the downhill method for the tributaries. If you can do it all with the single algo, then all the better of course. If we used a combination, then we could use GTS for the second part.


 Exactly- the idea I mentioned about viewing the world abstracted into L-system like branches is springing to mind again. Mountains and rivers are in fact interdigitating two sides of the same coin. There's a perhaps useful system of classification for river networks (Strahler Stream order). Even with subtle terrain, less visually obvious ridge forms, they are still obvious to water, there are still watersheds.

 My idea was to design software that saw the whole world abstracted (well each continent separately) as vectors (L system if you like, but that basic tree-like structure). The tree-like systems would be the rivers, and the ridges (drainage divides) interdigitiating. It's possible to extract ridge and basin info, so any new terrain created by the user (painted with the more  traditional tools) would be seen like this by the software.
 You do get basins which don't fit into the scheme- where water hits a sump but these are rare. The Sea of Rhun might be one of these. The system would need to handle those two as maybe isolated patches.

 Here you can see world seen on this scheme:
http://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Ocean_drainage.png/800px-Ocean_drainage.png

 There is research on the analysis of the fractals of the terrain at different altitudes too, but that's really more relevant to generating infinite scales of procedural terrain rather than rivers, but if the two are two sides of the same coin, it is relevant. Well, that's getting into more researchy stuff I guess.

monks
Logged

C. Shawn Smith

  • Hero Member
  • *****
  • Posts: 712
    • C. Shawn Smith's Art Gallery & Portfolio
Cartographers stuff
« Reply #19 on: February 26, 2011, 07:18:09 pm »

Quote
If I have a little time ill run GTS over your island and show some demo pics just for kicks. But I would not expect it to look great. It does some stuff great but not others. In this case I don't think it will look the way you would want it to.

Cool.  The map itself needs a lot more refinement, but it works as a "base" line for now.  Once I get Photoshop reinstalled, I'm going to dedicate more work on it to get the height dynamics a bit more geologically accurate.

Here's the actual color map I made prior to the height map: http://www.cshawnsmith.com/novels/high-resolution_thebadlands.jpg
Logged
What we think, we become -- Buddha
There is no spoon -- Neo, The Matrix
The Cosmos is all that is, or ever was, or ever will be. -- Carl Sagan
Outerra is all that is, or ever was, or ever will be. -- Me :)
- Yes, I'm still around ... just been busy with other projects ;)

Redrobes

  • Member
  • **
  • Posts: 73
    • http://www.viewingdale.com
Cartographers stuff
« Reply #20 on: February 27, 2011, 10:43:57 am »

The artistic approach is fine for many maps. Just so long as you don't have rivers flowing down an uphill bit of terrain it should always look fine. You have some videos showing paths and roads and the terrain seems to fall real nice down to the road such that the road is flat. Not sure how you did that but it worked real well. If you can do something similar along the length of a bit of river then you should be able to control the terrain surface so that the river is always flowing downhill.

To be honest, if you could somehow alter the terrain so that it always made arbitrary artistic rivers flow correctly then lets face it, thats a much better way of doing rivers than were doing them. We're looking at static terrain and calculating the river and hoping for it to flow in the right direction then manually changing the terrain - rinse and repeat. If you could set the river and automatically adjust the terrain then I think people would rather set the rivers down and get whatever mountains they are given than set the mountains and get whatever rivers they are given. So if you can do it then kudos to you.

A balance between the two would be ideal tho and I agree with cameni in that for most games designers, getting control of what they want and being able to deliver that terrain is more important than strict geographical accuracy.

@cshawnsmith, I might make a little series of images to show GTS first then run it on your island cos I think its just going to flood in the middle. Since your island climate is so dry then you might not have very much water, not many rivers, and not much water erosion to look at. The scale of your map would probably mean that any rivers would be very thin anyway.

I'll set up a ramp with bumps all over it and then get it to calculate the water flow on top and make a render from that. It would show it off a little clearer I think.

cameni

  • Brano Kemen
  • Outerra Administrator
  • Hero Member
  • *****
  • Posts: 6721
  • No sense of urgency.
    • outerra.com
Cartographers stuff
« Reply #21 on: February 27, 2011, 12:17:04 pm »

Exactly, the algorithm I have in mind will have to modify the terrain, not only to make the river itself flow downhill but also to shape its drainage basin and the mountains. As monks said, these are two sides of the same coin. Without water the land would look absolutely different, so I presume we could generate the land with simple mounds for mountain ranges, and let the rivers backtrack and claim their basins, carving the land in the process.

The road system will be used also for the rendering of the rivers, but this only covers the making of river beds and banks so that it all fits into terrain perfectly. Large scale terrain modifications would not be effective to do in real time, and it would not be reasonable for other reasons as well, but in fact almost the same approach can be used in an offline terrain generating tool.
Logged

monks

  • Full Member
  • ***
  • Posts: 212
Cartographers stuff
« Reply #22 on: February 28, 2011, 11:14:07 pm »

I don't know why someone hasn't tackled this problem head on before. Maybe they have, I don't know. Back 4 years ago when we were discussing it at ME-DEM and on the Terrain Summit it was barely a problem because no one was using worlds large enough to see large sections of a river, let alone both ends at the same time as in these planetary renderers.
 So, no-one cared whether they flowed downhill or not.

 One approach is to build the terrain around the rivers, which is what you've suggested Cameni- kind of. One idea I had was to procedurally build the terrain immediately under river beds. That was the first priority. Impose gradients on them (between two or more control points) such that they flowed properly.Then procedurally fill in the terrain around those. Strange idea but I guess these are the kinds of things you have to consider when you want correct flow according to design maps. It's conventional terrain modelling in reverse basically.

A skeleton of river heights as a terrain could then by combined with the original terrain perhaps.

 Probably best off start off with terrain. User draw rivers. Software then reconfigures the terrain so that the rivers work.
 
 If I had programming ability I honestly reckon I could come up with something that would work- it might run like a piece of crap  :D ...but it would basically solve the problem.
 
  monks
Logged

Edding3000

  • Member
  • **
  • Posts: 93
Cartographers stuff
« Reply #23 on: March 01, 2011, 11:07:04 am »

Quote from: monks
If I had programming ability I honestly reckon I could come up with something that would work- it might run like a piece of crap  :D ...but it would basically solve the problem.
 
  monks
The problem is, that everybody thinks they can do it. Also on the infinity forum.
But them are always people without programming capabilities. I know exactly why this is.
There is not a simple solution to this problem though. Although pregenerated terrain (earth) makes it easier.
But you still do not KNOW of the fractals that get generated and so you cannot know if a flow will be uphill or downhill.
Also with deeper LOD levels rivers will jump all over the screen because they will need to be rerouted.
The coarse lod will have huge rivers because of the limited mesh set. So you must generate/load deeper LOD's to investigate, and that takes a LOT of processor time.
In my opinion the only way to come up with a river system is the following:
pre-generate it.

And this is just not do-able.
Logged

cameni

  • Brano Kemen
  • Outerra Administrator
  • Hero Member
  • *****
  • Posts: 6721
  • No sense of urgency.
    • outerra.com
Cartographers stuff
« Reply #24 on: March 01, 2011, 12:15:41 pm »

Quote from: Edding3000
In my opinion the only way to come up with a river system is the following:
pre-generate it.

And this is just not do-able.
Note, we are talking here the whole time about generating the rivers in advance. I've read somewhere that rivers are the holy grail of fractal worlds. But it will stay so unless people stop doing stupid things like trying to generate the whole world using a single fractal algorithm. The ridged multi-perlin or whatever, expecting that he or somebody someday discovers a magical single-function fractal that generates real worlds.

So, we are here talking solely about worlds that are pregenerated, prepared in advance, and even designed by humans. I for one am totally uninterested in single-seed single-function fractal worlds - that's absolute boredom, and no infinite numbers of them could save it.

We are talking about generating world by dealing primarily with the rivers and mountains, these two being really two sides of the same coin. From this realization and from this discussion I guess that monks and Redrobes are qualified enough, I wouldn't compare them to the I-can-do-better junkies on some forums :D

Though I was surprised to read monks can't program too :)
Logged

monks

  • Full Member
  • ***
  • Posts: 212
Cartographers stuff
« Reply #25 on: March 01, 2011, 12:41:59 pm »

Yes, I wasn't saying (and I was going to qualify what I said before someone jumped on it), that I could solve the problem in the domain specific to MY/OUR problem: design map/ rivers- not ANY randomly multi-fractal landscape. My solution would give a terrain which was a skeleton of river bed heights which would still require some effort to fill in with other details around that skeleton. It would still be a two step solution if you like- not the ultimate answer to everything- which is 42 I believe anyway :)

 I was going to mention the work done by on MojoWorld in reference to the search for the "Holy Grail"...I can't recall his name, but he was a physicist, and wrote the rivers plugin. Is that operating on a planet? I'm not sure if Mojo is a full planet renderer.

 I think there are some pretty good solutions already for creating riverine systems for random procedural worlds. If you look at Wilbur and GeoControl for instance. Wilbur/Fractal Terrains Pro uses basin filling and channel incision.

 Yes, totaly agree about the boredom with those worlds. I was only going through some YouTube videos for planetary renderers last night, and I saw some of those.

 I did do some programming as a hobby for a few years (procedural and C, C++)- did a couple of programming modules too with uni...so I have a reasonable idea of "how things work".  ;)

monks
Logged

Redrobes

  • Member
  • **
  • Posts: 73
    • http://www.viewingdale.com
Cartographers stuff
« Reply #26 on: March 01, 2011, 01:06:58 pm »

I think maybe one day... one day at the moment well into the future... we might make the terrain at the same time as view it. As far as I can tell from what people have been saying, there is considerable effort in making the LODs for the 3D. For my ViewingDale in 2D I have a custom format  for the images which are 2^n resampled for one thing and I do creates the LODs on demand which go into temporary mip files. But that does incur a stutter so panning around for a while is jittery the first time before it becomes smooth. It sounds like you guys are doing some fourier transforms to get your LODs and thats not a fast process so for now at least that is done offline and prepared earlier. If that is the case then I would guess there is no option but to bake the heights into the LODs at that time which for the way we have spoken about altering the terrain to fit an artistic placed river is something that is not so easy. I had not considered the fractal effects which may impact those too.

The video Monks linked to from ProTerra shows him editing the land in real time so this is something that has been achieved without rivers at least. Now my river tool creates the rivers on top of any terrain, fractal or not. In theory, with enough compute (and I don't think we have enough on one PC no matter what GPU you have under the hood) we could do that process.

Ahh new post... was that Mojo guy called Hugh Malan ? I believe he wrote a real time world creator in shader language and was a Pandromeda at the time - Realworldz. If its not him then I don't know.

I came on here to post some new links to some GTS vids I did a day or two ago. This is a 3D ramp I made, sub divided the surface and then added some bumps and pits to it then threw GTS at it to see what it made of it.

http://me-dem.me.uk/videos/gts/Trough4_A.avi
http://me-dem.me.uk/videos/gts/Trough4_B.avi
http://me-dem.me.uk/videos/gts/Trough4_C.avi

GTS is just a numeric iteration so as long as you can get a function to return the height at X,Y then it can run on a terrain whether fractal or baked or whatever. I can see some good points that Edding is bring up tho with the deeper LODs if you want detailed river accuracy. It may be true that as you travel toward the river and change LOD level then your river switches course... yeah maybe, not sure.

cameni

  • Brano Kemen
  • Outerra Administrator
  • Hero Member
  • *****
  • Posts: 6721
  • No sense of urgency.
    • outerra.com
Cartographers stuff
« Reply #27 on: March 01, 2011, 01:41:48 pm »

Well, in Outerra we'll use vector data for rivers, and that's another reason why I prefer the fractal river model over the simulation, although you can get vector data from that too with some additional effort.

With vector data and the way they are applied there's no problem with LOD. We will not simulate the water flow in coarse LODs and then wonder what to do with rivers changing width and courses.
As for how real-time the generation of world can be, I'll reserve my judgment for a later time. With the fractal river backtracking it could be pretty fast, but then again - we are talking about whole planets and the limiting factor is amount of IO. The problem is that the simulation should run globally. Though if the world was successively divided into separate river basin and sub-basin areas as the rivers are being generated from estuaries, one could achieve much better locality and optimized transfers there. We need some experimenting here to see if it's any good.

For terrain without rivers the editing would not be problematic - LODs are obtained through wavelet decomposition and the way it's implemented is really simple and hw friendly.

Thanks for the posted videos, really interesting. For a while I was wondering if you did make it in a sand box in your backyard :D
Logged

Redrobes

  • Member
  • **
  • Posts: 73
    • http://www.viewingdale.com
Cartographers stuff
« Reply #28 on: March 01, 2011, 02:12:24 pm »

Heh - nah, its not really that accurate. It tries to model sediment pick up and deposition and calculates a little water momentum but its still lacking stuff to make it accurate. I didnt calculate pressure for one thing. I assumed the water was incompressible. Maybe thats a reasonable assumption I don't know enough. At the time we had very little reference to match it against. Ill post this link of some guys videos who did make a good sand box. I think I could have done mine better had I seen these at the time.

http://serc.carleton.edu/NAGTWorkshops/geomoph/emriver/index.html

So my sim is a fixed texel sized array of parameters which is iterated so that it transfers water across from one to another and tries to keep track of momentum, temperature, and any induced state changes etc. Because there is a lot of parameter info then it might not run well without IO. However as cards get more GPU memory then maybe the array size could go up so that its not doing any transfer over PCI, just between video mem and PE/cell/ALU local cache which is fast and therefore I would see the big speed increase.

monks

  • Full Member
  • ***
  • Posts: 212
Cartographers stuff
« Reply #29 on: March 13, 2011, 03:42:38 pm »

I actually though that was rendered at first  :D  Then I got images of blokes in tank tops and wellies...haha. Very interesting the way the number of curves affect the gradient, and velocity- not something you would immediately consider.

 Yes, the subdivision along river basins sounds like a usefiul abstraction.

 I've been doing some tests regarding procedural river generation so I thought I'd share the results with you.
 I ran the terrain through "Wilbur" using the precipiton and incise flows algorithms. I'm not using basin fill here.
 The pics show the terrain in World Machine with some erosion added in there. Apart from some of the results we've had with GTS, these are the best rivers we've had to date.

Note, the terrain here was processed without any fractal detail added.This is as about as basic in appearance as the terrain gets. I added 2 or 3% noise in Wilbur. The terrain was a 4096. I've yet to run tests on an 8192, memory permitting (Wilbur is not designed to handle large terrains). The terrain is flat in many areas, with minimal noise, but I've manged to get rivers flowing the entire length of the dem with this process.






http://www.skindustry.net/medem/files/Phase2/Terrain_1.0/NASARun/2011/Screens/RiverTests5.png

with coastline
http://www.skindustry.net/medem/files/Phase2/Terrain_1.0/NASARun/2011/Screens/RiverTests5a.png


http://www.skindustry.net/medem/files/Phase2/Terrain_1.0/NASARun/2011/Screens/RiverTests6.png

with coastline
http://www.skindustry.net/medem/files/Phase2/Terrain_1.0/NASARun/2011/Screens/RiverTests6a.png

http://www.skindustry.net/medem/files/Phase2/Terrain_1.0/NASARun/2011/Screens/RiverTests7.png

with coastline
http://www.skindustry.net/medem/files/Phase2/Terrain_1.0/NASARun/2011/Screens/RiverTests7a.png


This process creates very long rivers and it preserves the coastline very well.
 You can find info on the precipiton algo online of course- if you're interested. The incise flows algo is also really useful. You would probably find that applying a basin fill after noise, would help too.
 First I run the precipiton a good few times to start cutting into the terrain, then I run incise flows- that picks up on the established flow. I repeat those two steps a few times.
 My terrain has the advantage that I've created a pretty predictable surface via contours in Global Mapper before running precipiton. You  could create that using your algorithm that you intend to use to get the basic design map in, then run your equivalent of the precipiton and inicise flows to fill in all of the blanks

 I would absolutely love to get this into the Outerra engine!
 
monks
Logged
Pages: 1 [2] 3 4