PDA

Vollständige Version anzeigen : Cut function for highly realistic terrains


cajomi
24.August2006, 13:51
her a terragen render of a multi cutted terrain and the terrain preset.

The technic: In general use a combination of height correction, a shape filter and a erosion filter. Now cut, with 256 brush size in 1024 terrain. And cut again, and again and again. While cutting, it is often useful to change a bit the filter settings, for example to set thel fluvial erosion to a lower or higher startpoint, encrease or decrease the power. Sometimes it is also sensful, to generate in between, with protection at level 32.

What do you get: loooooong flows, with out breaks for example, a landscape which is at all not determind by random, but be the filter algorithm. A great problem for example is a long not straight terrain part, with permanently falling height, for a river for example. With the cutting method, you can easiely generate this.

Attention: Cutting can make addicted!

In version 1.06 the cut "brush" will no longer move on a grid, but permanently for pixel exact cuts.
Also the height correction will work much stronger, so that a terrain is definitly limited with the min and max height and uses the full range.

Have fun
Johannes

Attached is a terrainsetting, for testing multi-cut. I used this, with some change in between, for the attached render.

monks
27.August2006, 00:27
Wow! That terrain looks incredible. It's like exploring the Julia Set.
I hope I'm understanding you correctly. I use the Special Functions Cut to cut out smaller and smaller pieces of terrain.
I've tried this on some Middle Earth terrain and I've been down to a res of 0.5 cm!

This is a pretty amazing feature. Is there any chance of you developing this feature further? For instance, the ability to explode the terrain to very large res using the fractality. What about the feature to export the terrain at a much higher resolution as tiles. So if I have a 20m res terrain at 1024, export at 2m res. GC would export the terrain as a tile configuration.
A further devlopment might be the abilty to apply a script so that the filter changed at each each zoom during the export process- that would make for some really inhomogenous terrains over different scales.

If this doesn't convince people that procedural terrains are the future then frankly nothing will. Awesome!

monks

Criss
27.August2006, 00:48
That seems like a nifty idea Monks. :)

cajomi
27.August2006, 09:00
the cut is the base of a tiling feature. And the best: Imagine, you have not to enlarge any tile, but you can select those of interest. For games, often not the whole world must have high res, some parts stay only background.

Well, for tiles, there is one problem left: After enlarging / cutting, the new terrains do not fit seamless. This must be solved in Version 2.
I agree, in Version 2 we need a bit more functionality for the filters at all. Adding filtersets, and for the tiling feature, yes, changing filters while tiling.

At all, this wil enable the user, to develope first the total overview of the landscape, may be continental scale. And then produce the hig res terrains. Compared to a infinte world, based on some noise, this continent will be like a real continent, inhomogenous!

monks
27.August2006, 14:05
Ah yes, I think we're on the same wavelength here. I am going to be working on Part 3 of our workflow article: 'Textures and Renders' and I was considering using a tiled terrain with those tiles under the camera at increased detail. Yes, so I could save the original generated terrain, then select an area. Use cut and then save that. Then upscale the original terrain and insert the high res tile into that. That's essentially what I'm thinking of doing. Though in World Construction Set, I can have the whole 16K terrain at full res because the renderer uses a tiled system. :) But for TG, this would enable a good balance.

Well, for tiles, there is one problem left: After enlarging / cutting, the new terrains do not fit seamless. This must be solved in Version 2.

yes- that's a must.

I agree, in Version 2 we need a bit more functionality for the filters at all. Adding filtersets, and for the tiling feature, yes, changing filters while tiling.

Changing filters while tiling could save you round-trippng, ie, expand with one filter. Reimport, then expand with another filter. With some kind of 'script' or whatever you could do it all as a single automated batch process.This would increase realism as well because there are scale thresholds to perfect self-similarity. That is, the filters would change (perhaps subtly) over the scales. I noticed that when I was getting into the higher resolutions I really wanted a slightly different filter than the previous scale. There have been a number of papers written on this subject. Researchers trying to quantify this changing fractalism at different scales.

At all, this wil enable the user, to develope first the total overview of the landscape, may be continental scale. And then produce the hig res terrains. Compared to a infinte world, based on some noise, this continent will be like a real continent, inhomogenous!

Yes- that sounds like a very BIG idea :) It could be very cool.I think though that you would have to get the whole tiling impoort/export architecture right. You know I'm not really sure what the tiling functionality of GC is right now. I must go and read the docs :) In principal, this feature reminds me of Wilbur's 'Journey Through Texture Space' in which you can move though a 3D (or whatever) noise function. It's probably the same thing yes?

In any event, imo this is potentially a really awesome feature. The terrain produced by this is stunning.

EDIT: Here's a little impromptu illustration of the feature:
http://www.me-dem.org/content/view/56/33/

monks

cajomi
27.August2006, 18:40
at time I use the cut for close ups, so that humans can be animated with match movie into the landscape. At all 3-6 cuts. The terrains do not fit perfectly, so I usually lower the part, which was cutted, in the basic terrain. For most povs there is no border or changing visible.
But setting tiled parts beside each other would produce visible borders, not over all, but some edges which are good visible.
I will work on a composer or something, a own window, where you can arrange terrains and GeoControl then will calculate the boders new, so that the terrains fit perfect without any seams.

Criss
27.August2006, 21:35
Continental scale huh, wow. I can't wait to see the river tool on that scale alteast for larger visible rivers,heh,hee.

I looked at your article Monks on the cut tool at ME DEM. I must say this tool is impressive and i had no idea that GeoControl could produce such nice procedural detail at 20 meter close-ups. This is truly impressive programming at work here.

This composer idea sounds spectacular. You are doing some great work Cajomi. :)

monks
27.August2006, 22:51
Criss- yeah, the mind boggles really lol The composer window sounds great!
I've just beeen playing with the AtalnticCoast Terrain preset. You're right, it's kind of addictive- especailly if you appreciate landscape and nature. I mean, I have a zoom render open here that I honestly could hang on my wall and look at. I think the beauty (underlying patterns) of nature just get inside your head.
Awesome programming Johannes ;)

monks

monks
12.December2006, 14:27
I've been thinking about the procedural zoom and as you know we'd really like to use it for ME-DEM in a big way. I'm thinking that we really need two features:

*) the ability to apply different filters at different scales. A script with batch processing or whatever could accomplish this perhaps? (so I guess that's really 3 features with the script/ batch).

*) The ability to apply filters via masks (or selections or vector polylines/polygons)

With these two features you would have all you need to zoom a terrain.

For instance: I have a terrain with a mountain range next to a coastal region.

It would be ideal if I could do this:

1) Apply a mask over the mountains- some way to separate the mountains from the coast because these are very different terrains. Some way to control simple falloff/blending between adjacent masks.
2) tell the GC 'scripter' (somehow) that I want the following settings:

Mountains:
large scale 1st zoom the alpine filter
mid scale 2nd zoom: the rocky hills filter
small scale 3rd zoom: a rocky outcrop filter

Coast:
large scale, etc
mid scale, etc

That's probably quite a complex arrangement but in principle I think control over the two parameters: 'filter at scale', 'filter on selection' would be just about all you could want.

monks

cajomi
12.December2006, 16:20
filters at selection will be build in, not so simple are filters for zoom.
In general that would simply mean, that you are expanding the level selectors.
After a 8* zoom, level 4096 has moved to level 512, so there are now form 1024 to 4096 4 new levels to define, then after the next zoom again +4 levels.

At time you would save different terrain presets for different zoom levels. If you keep in mind, that the zoom/cut only uses the filters for the levels which are new to generate, then a method of simply saving the filterpresets (as terrain presets) would solve.

So, what you are asking for, is the possbility of a batch processing, where you can call GeoControl to perfom a preset or a cut with preset to a defined terrain, with a tiling as output.

This should be possible in some way in version 2. But I have to think about it how to implement it.

monks
12.December2006, 21:09
filters at selection will be build in, not so simple are filters for zoom.
In general that would simply mean, that you are expanding the level selectors.
After a 8* zoom, level 4096 has moved to level 512, so there are now form 1024 to 4096 4 new levels to define, then after the next zoom again +4 levels.

At time you would save different terrain presets for different zoom levels. If you keep in mind, that the zoom/cut only uses the filters for the levels which are new to generate, then a method of simply saving the filterpresets (as terrain presets) would solve.

Nice- I'll have to try that out in practice to understand it :) It depends on how much zoom
you wanted to do. I mean if GeoControl has essentailly 'infinite' zoom, you may as well code for those eventualities for users who want to zoom *50+. ME-DEM would only really need *10 initially BUT our roadmap has 2m res so *100 is more likely. I hear 2m res is about the scale used in games.


So, what you are asking for, is the possbility of a batch processing, where you can call GeoControl to perfom a preset or a cut with preset to a defined terrain, with a tiling as output.

Absolutely.:)

For eg, I have a 4096 terain at 200m res.I want to zoom *10 with filter 'a'. So I set the masks and zoom. GC outputs the tiles to disk.
I now have a 40960 terain! Great. :) But what if I wanted to then increase that zoom again by another *10. That would mean that I would have to re-import all of the tiles (40960) make the mask/filter settings and zoom again. That's surely not possible. I apply filter 'b' this time and GC outputs a 409600 terain -ouch- that takes 2 days on my computer :p

The alternative method is to take the original 4096 terrain and zoom *100 straight away. You still have a 409600 terrain output but you have less control over the filters: same filter applied across *100 zoom. Instead of filter 'a' applied over *10, filter 'b' applied over*10.

The point I'm making is that I don't care if it takes 4 days on my computer to zoom *100
because doing this zoom any other way would take decades. But, if you are going to have the feature of such a large zoom, you need to have some control over the filters applied at
different zoom levels. If the same filter is applied at all zoom levels the terrain is not
very realistic. This is why is suggested a script.
If you look at the terrains in the post (http://www.me-dem.org/content/view/56/33/) the terrain at zoom levels 1-3 is excellent. The terrain at zoom levels 4-6 does not look very convincing- at that scale it should be rocks and dirt.
That terrain was originally at 20m res. Zoom 3 = 1.25m res. So from those results it seems that a *16 zoom is as far as you can reliably zoom before needing a new filter to describe the smaller scale features. Am I making sense?

This should be possible in some way in version 2. But I have to think about it how to
implement it.


Wow- now will that will be something to see.

Imagine it. You have a continent for a MMORPG at 200m res on a 4096 terrain. The continent consists of some varied terrain types: mountains, deserts, plains. You would either generate your masks in GC or import them from elsewhere (PS maybe?) in order to distinguish the filters applied to those areas.
Then, you perform the zoom on the entire terrain. Each masked selection would have a
different filter applied to it. I'm hoping that it will be possible to vary the filter over zoom (in some convenient way) because the same filter doesn't really produce best results at
all levels of zoom.
The combination of the two inhomgenous terrains: scale and selection would/could produce some pretty incredible results. It would need to be scripted though with tiled output to be really efficient because once you begin to zoom and create huge tile sets you need to try and avoid manualy re-loading large tile sets -perhaps at all.

monks

cajomi
13.December2006, 06:18
What I am actual thinking about is another form of filter:
I have set the maximum real world size to 10000 km. That is a nice scale for a continet.
Now you define some zones and other parameters:
A breaking zone, where mountains appear + the max height, a vulcanic zone, the main wind direction, the climatic zone, permanent frost height,...
After that, GeoControl generates a continet. The zones, including for example "sedimentation", are stored with the terrain. When zooming in, the zones define the erosion form. So zooming in the mountain region would use a filter for mountain rock faces and mountain sedimentation, while a bit lower, most surface is build of sedimentation.

Such a way of generating would enable the build of large worlds. To keep control, the new vector tools will allow finetuning, whereever needed.

The time for caculation will be incredible, and may be, you need a lot of ram (the 3.5 GB for win 32 systems) and disc space, but this would be a great solution for developing game worlds.

To be not misunderstood: This is at time imagination.

GC 2 now can create 8192 terrains, mostly with 2GB ram (what was really hard work in memory management).

Arklon
13.December2006, 23:39
I wonder if it'd be possible to utilize the shader units of 3D hardware to substantially speed up the terrain generating/filtering process?

cajomi
14.December2006, 05:50
Vue already does that. Bu the disadvantage is, that for the more distant parts, the surface looses details.

Arklon
14.December2006, 22:53
Vue already does that. Bu the disadvantage is, that for the more distant parts, the surface looses details.
Er, I'm guessing you're talking about rendering a 3D scene with hardware... that's not what I meant. I was talking about using pixel shader programs that can be run on discrete 3D hardware, which can speed up things 20-40 times, depending on the hardware.

cajomi
15.December2006, 06:09
you mean graphic card caculation?

Arklon
15.December2006, 06:14
you mean graphic card caculation?
Yes. I'd imagine such calculations would only work on video cards that support FP16 blending (all Shader Model 3.0 and above capable cards, except for the GeForce 6200), though.

monks
16.December2006, 14:09
What I am actual thinking about is another form of filter:
I have set the maximum real world size to 10000 km. That is a nice scale for a continet.

Yes, that's a good size. ME-DEM's map at the moment is around 4000 Km. The map extends much as Europe to the east. I think the old map we have is around 12,500 Km across but we may or may not use that: real Europe may be better- I'm not sure how large that is.

Now you define some zones and other parameters:
A breaking zone, where mountains appear + the max height, a vulcanic zone, the main wind direction, the climatic zone, permanent frost height,...

Yes, ultimately this is really where all this is heading. I had a tinker with Fractal TerrainsPro a while back and one of the things I found that would be useful is to create continental shelves from a landmass- kind of like feathering. FT does generate nice continental shelves but only from an initial random fractal terrain.
What that would require is a radial ramp around the (arbitrary) selection falling off into
the sea with some variation on shelf extents. That might be tricky..dunno?
It would be nice to have a Continental Shelf zone as well. ME-DEM's map incorporates a
continental shelf already so all we would have to do is define that area in GC (with vectors
or whatever) as Continental shelf zone.

After that, GeoControl generates a continet. The zones, including for example "sedimentation", are stored with the terrain. When zooming in, the zones define the erosion form.

That's a nice top-down approach. GC users could build up a library of zones- with eventually subzones. Maybe? The possibilities are many. I think a bit of research into
real-world classification and taxonomy might be useful. imo if you are going to embark on such a big idea then the real-world is the obvious first place to look for references (wherever possible).

So zooming in the mountain region would use a filter for mountain rock faces and mountain sedimentation, while a bit lower, most surface is build of sedimentation.

Great- that sounds like what I was thinking.

Such a way of generating would enable the build of large worlds. To keep control, the new vector tools will allow finetuning, whereever needed.

Sounds splendid. A few features have to be in place to make this possible but the procedural zoom is the only feasable route that I'm aware of.

The time for caculation will be incredible, and may be, you need a lot of ram (the 3.5 GB for win 32 systems) and disc space, but this would be a great solution for developing game worlds.

Hehe; exactly. This kind of thing is not for the faint hearted. Even if your machine was of a
more modest spec you could still generate very decent sized game terrain. ME-DEM's map is 'only' 4000 Km acrosss and that is HUGE.

To be not misunderstood: This is at time imagination.

Pff! hehe- what say we continue this discussion over on the Terrain Summit boards? I've
started a thread which really wants to seek some discussion regarding procedural zoom
http://terrain.cg-arts.org/forum/index.php?topic=71.0
I know that GeoControl and World Machine Pro (some time next year) are two apps that may be capable of this process. L3DT can produce humungous terrains but it doesn't (yet) have such control.

GC 2 now can create 8192 terrains, mostly with 2GB ram (what was really hard work in memory management).

Cool. That's all I've got atmo. I'm waiting until after Christmas to upgrade- avoid the
Yuletide price-hike.

monks

monks
16.December2006, 14:11
Er, I'm guessing you're talking about rendering a 3D scene with hardware... that's not what I meant. I was talking about using pixel shader programs that can be run on discrete 3D hardware, which can speed up things 20-40 times, depending on the hardware

I think this is a great idea- I know that Joe Slayton was talking of a similar idea a while back. Maybe raise it over at the TS Arklon?
http://terrain.cg-arts.org/forum/index.php

monks

Arklon
16.December2006, 17:29
Actually, now that I think about it, I don't think FP16 blending capabilities are needed. You've got 8 bits for the red channel, 8 bits for the green channel, 8 bits for the blue channel, plus 8 bits for the alpha channel... 32 bits. Though, with FP16 blending-capable cards, you've got 64 bits (16 bits per channel). And with the new DX10 cards, 128 bits (32 bits per channel).