Terrain Screenshots

Started by
138 comments, last by JD 19 years, 9 months ago
Good morning all you game coders, What a wonderful morning here in South Africa. Up so bright and early. Well let''s start. Where can I begin. I hope this will be an inspirational thread for most Terrain Engine Coders. I hope we can discuss full blown techniques here and help out beginners such as myself. http://www.lachdannan.za.net/images/terrain_texture.jpg This is a screenshot of my very new terrain engine. This is the topics I would like to discuss here. 1) Post some links to some very explanitory Terrain Texturing Tutorials 2) Post some links of very in depth and easy to follow LOD and ROAM Tutorials 3) Where and how do you guys get your Textures? 4) LAST BUT NOT LEAST. POST your screenshots of your terrain engines. Thanks guys. Gamedev is a very good resource for everyone starting out and a very good inspirational place to come. GAMEDEV the future of GAMEDEVELOPMENT ---DirectXSA--- Lachdannan Corp. www.lachdannan.za.net
Advertisement
Screenshot 1 - The terrain as it stands.

Wireframe shots of the LOD when it was using the bintree algorithm that ROAM uses. I switched to using D3D PMesh simplification (it''s less restricted and I didn''t have to write my own!)
Screenshot 2a - Lowest detail
Screenshot 2b - Not-quite-lowest detail
Screenshot 2c - Little-higher-than-not detail
Screenshot 2d - High-as-a-kite detail

Screenshot 3 - Single texture, looking into sun.

These are an old screenshots. I''m working on a totally different way (non-heightfield based) of doing terrain than that, though, so it''s not very representative of what my terrain will end up as. But it''s a semi-decent screenshot.

I hated the texturing in it, though (hence the name of the first URL).

A quick rundown of what''s in that shot:

1. Geo-mip mapping (or geomorphing or Chunked LOD, I don''t remember which technique it is -- the one with the quadtree of levels). However, I used a different breakdown of LOD detail (I didn''t break it down regularly, instead I used the Progressive Meshing algorithm to remove the least-different points).

2. Sky generation - it actually looks pretty good, though not necessarily in that screenshot. No clouds yet, though. Done according to the Preetham paper, though I had to do tons upon tons of tweaking to get it right.

3. Huge draw distance - I''m going for 2 km (1.2 miles) draw distance.

The only problem with the terrain (Besides the heightfield limitation) is the sheer size of it. It''s HUGE on-disk. But it DOES take a full 5 minutes to get to the far side of it.

That''s all. Enjoy


---

Actually, to answer the questions you asked:

1. Terrain Texturing Tutorials (say it 5 times fast!) - Uh. Well, There are a few on the Gamedev.net resource page. Try there.

2. There are som LOD tutorials at that site as well. Here''s a ROAM tutorial for you. You have to register with Gamasutra, but it''s free. And there are tons of articles on terrain there too.

3. Uh, I do google searches for "free terrain textures" and look through page after page until I find some. But eventually I''m going to wander around the greater Indianapolis area with a digital camera and take pictures of the surface types I need, and make them tileable in Photoshop.

4. Done already


Okay. This time, that''s really all.


I think.
just something about lod and hardware.

i prefer geomipmapping so far, but you usually just find the "common" way of spliting your quads into 4 smaller ones.

-----|  /|| / ||/  |----------|/|/||---||/|/|-----  


that means every lod step means 4 times or a 1/4 of the geometry. didnt like that, so... they typical diamond-whatever-its-called way can be used.

----- -----|  /| |\ /|| / | | | ||/  | |/ \|----- ----------|\|/||-|-||/|\|-----  


so now each step will only double or half the number of triangles and in theory youre more likely to get away with a lower lod.

geomipmapping needs linking pieces (i dont really like the skirts solution). actually you can use the same like for the "normal" approach, as as you can see two lods (1-2, 3-4, 5-6,...) will always have matching edges.

for texturing a base map and 2-4 detail textures can already look quite nice. if you feel like burning a lot of fillrate you could either add normal maps for them or store a height map in the alpha channel.

random screens
screen1
screen2
screen3
screen4

screen5
screen6
screen7

dont take the last one seriously, nobody would brute force render a 4096x4096 terrain at highest detail (but its fun to see how many polys a rad9800 can push with cheap texturing).

[edited by - Trienco on May 30, 2004 4:54:57 AM]
f@dzhttp://festini.device-zero.de
Screenshot

That''s a shot from my old terrain engine. It was loosely based on the Gamasutra tutorial that somebody already linked to.

The texture is one large 4096^2 texture. It was created by blending 4 basic textures ( water, grass, mountain, snowy mountain ) into a single texture based on designer specificed height ranges. This was done offline.
Clicky
Clicky #2

Another old terrain engine. Covers 66x66km2 with per-meter detail using controlled noise (takes 6 MB in storage space ). It takes about 44 mins to go from one side of the map to the other with a car going at cruising speed. The terrain in the screenshot has a viewing-distance of 2 km I think. Uses a quad-tree with geomorphing and run-time generated chunks. Textured by having one grass texture, one rocky texture and one detail texture. The color textures are interpolated based on terrain slope only.

EDIT: As for other terrain resources, check vterrain's game-terrains page and search in the GDnet forums.

EDIT2: My hands are trippy...

[edited by - coelurus on May 31, 2004 5:24:52 AM]

[edited by - coelurus on May 31, 2004 5:25:39 AM]
i''ve posted these shots on other threads but as i''m quite proud of it i''ll post em again



another
and aother another

engine runs in d3d or openGL (currently openGL is faster, no LOD info in it yet planning on adding ROAM sometime soon. No sky yet but i''ve writen a perlin noise cloud program which i will make into a texture generator at some point i swear.
i is 1337
terrain rendering is a great place to start with graphics algorithms - i also messed around with a few some time back...

these are two screenshots from a roam-based engine i put together - of particular interest is the second screenshot, which shows a top view of the rendering.
its more whats not rendered that i find cool!

flymode
godmode

geniet!

---
craig(at)cod3rz(dot)net
---craig(at)cod3rz(dot)net
Clicky

Its a geo-mipmapped procedural terrain. Pretty much infinite. ("Pretty much" because at the high range of floats things start to explode)

Gots trees, plants/grass, rocks...and Butterflies!

Waramp.

Before you insult a man, walk a mile in his shoes.
That way, when you do insult him, you''ll be a mile away, and you''ll have his shoes.
Waramp.Before you insult a man, walk a mile in his shoes.That way, when you do insult him, you'll be a mile away, and you'll have his shoes.
to drillian:

how big is that landscape? You said it takes 5 minutes to cross it.

I am doing an airplane simulator for fun and I was impressed with your screenshots. What technique do you use? I am using ROAM at this point but I got alot of problems with popping and huge cpu usage. Any suggestions?

And last but not least, how did you generate that sky? my sky it''s just a blue color and yours looks pretty nice. Any tutorials or code on that one?

Joaquin
quote:Original post by creative1
I am doing an airplane simulator for fun and I was impressed with your screenshots. What technique do you use? I am using ROAM at this point but I got alot of problems with popping and huge cpu usage. Any suggestions?


I strongly recommend against using the typical ROAM error metric of checking the height of ''wedgies'' in screen space. The screen space projection costs way too much for reasonable sized terrains. What I am currently doing is determining likely error level in object space. If you take the ratio of distanceOfPlayerToNode-:-deltaHeightFromApexOfNodeToBaseOfNode in object space you can get a very decent looking LOD that requires ''much'' less CPU work.

I also recommend against using split/merge lists. I have had much better results using an exclusively split/based implementation.

As far as popping goes I tend to tweak the above object-space formula until popping is not really noticable. You could also simply smoothly interpolate the splits rather than immediately splitting.

This topic is closed to new replies.

Advertisement