Anybody interested in a fancy terrain system?

Community Forums/Developer Stations/Anybody interested in a fancy terrain system?

Skitchy(Posted 2004) [#1]
Depending on the interest (or lack thereof :) shown in this post, I'll either release it or not. I just don't want to spend ages giving it a fancy GUI/manual/website/etc. if nobody really wants it.

So here's the philosophy :
I was thinking about how to put roads and other non-repeating things onto a terrain, and it occured to me that terrains one the whole are very boring. Most of the time you just get different tiled textures based on height with blending in between : snow on the high points, then a bit of rock, then some dirt, and the obligatory grass at ground level.
What I then did was come up with a way of using one ENORMOUS square image (bigger than 8192x8192) as the texture. This allows you to just paint a plan view (top down) of the entire area, with as much variation and as many roads, dirt tracks, cobbled streets, quarries, flower beds etc. etc as you want.
As for setting the height of any point on the mesh, the system just uses a single enormous greyscale heightmap (lighter pixel=higher land) that is the same size as the texture.
The MAJOR advantage with this is that you can have the texture and then draw the heights over the top in your paint program eg. if you had a aerial photograph of your town, you could draw over the flat roads in a single shade of grey. The resulting terrain would have all the roads in exactly the right place, and precisely texture mapped.

Obviously, using one big texture in a game would be very silly, so I found a way around that - and in the process I kept finding out great things about what I'd just done :

1) LOD can be *precalculated* by the system and implemented with an *amazingly* simple function in the game code.
2) Flat areas are reduced to 2 polygons. Yes, I just said 2. :)
3) It complements Blitzs culling system beautifully.


Using it will be like this :
1) Load your enormous plan-view image
2) Load your heightmap
3) Press go

Loading terrains into Blitz will be something like :
t.typeterrain=LoadSkitchyTerrain(filename$,collision_id)

Updateing the LOD :
UpdateTerrainLOD()

Scaling will require a special function:
ScaleSkitchyTerrain(t.typeterrain,x#,y#,z#)


I also have a further idea for a REALLY simple way to put objects such as trees onto the terrain, but I haven't coded it yet (would take all of 5 minutes) ;)

So, what do you think?


Sir Felgar(Posted 2004) [#2]
I would be interested - providing the performance is good enough! Is the required LOD customisable like Blitz terrains?

I assume you are splitting the terrain mesh into tiles with appropriate LOD, but what about the texture image? 8192 x 8192 would require almost 200MB of texture memory(!), are you dynamically streaming chunks of this in realtime?


SabataRH(Posted 2004) [#3]
I think it's a great idea.. Just had a test with blitz's terrain system and found they are very crippling to the overall preformace.. A system such as your proposal would be welcomed! if it proved to outdo the native terrains in blitz. :)


Skitchy(Posted 2004) [#4]
I'll sort out a demo :)


SabataRH(Posted 2004) [#5]
Skitchy, i couldnt find an email addy for you.. Email me please I have an idea I'd like to discuss with you.. :)


ashmantle(Posted 2004) [#6]
Anyway if you're using such big textures, it will take diskspace anyways.. and how would this effect download size? ^^

I would much rather like a tiled-texture terrain using vertex alpha to blend between different textures.


NobodyInParticular(Posted 2004) [#7]
I would probably be very interested in such a system...


wmaass(Posted 2004) [#8]
I'd love it for creating golf courses. Go for it.


Skitchy(Posted 2004) [#9]
My e-mail is :
skitchy@...

I was thinking of perhaps integrating it with some kind of tree system, and I must say I was quite impressed by TreeD :)

@AshMantle : This isn't really the kind of feature that would ever be disk-space friendly. More detail=more bytes ;) Having said that though, there is no need to include the heightmap in the finished game, and the textures can be as compressed as you like - I'm saving as .bmp for now but I might include .png as well if it goes public. From there you can batch convert to whatever you want :)


Doggie(Posted 2004) [#10]
Have to see the demo. Do you get better resolution so grass looks like grass instead of just a green color? If it improves the overall appearance of the terrains resolution, makes them look more detailed and thus more lifelike, then bring it on.


big10p(Posted 2004) [#11]
Sounds promising. ;) But, like Sir Felgar, I'd like to know how such a huge texture is managed re: video mem. I'm not too worried about disk space, though.


Forbidden(Posted 2004) [#12]
Sounds Great. .. Need to see a demo, I been working on this for a long time, I tryed to make large pictures and place them ontop of terrain. I then crashed photoshop about 10 times. =(


sswift(Posted 2004) [#13]
My own terrain system isn't very popular. It'll have to be better than my LOD based terrains to have any hope of selling. I considered writing a better system, but considering the weak reception fo the one I have now, which ain't too bad, I'm hesitant to create another.


Gabriel(Posted 2004) [#14]
I been working on this for a long time, I tryed to make large pictures and place them ontop of terrain. I then crashed photoshop about 10 times.


Yeah, I was kinda wondering how you make an 8192x8192 image as well, because Photoshop spent about 20 minutes rattling the hard drive before finally giving up and dying when I tried to save one. And that's with a gig of ram, 100 gig of free space on a fast hard drive.


Nacra(Posted 2004) [#15]
Well, maybe the source heightmaps and textures could be broken up into tiles, just to make the development easier. But Skitchy must have built these large images already.

And I'm also pretty interested in a system like this. I'd like to build detailed, static terrain just like Skitchy describes. Aerial photos? Yeah!


Paul


Skitchy(Posted 2004) [#16]
Well, the 8192 textures weren't a problem to make. I used ULead PhotoImpact (from a cover disc!). Thing is though that they seem to crash Blitz on about 9/10 tries :(
4096x4096 is fine though - works every time.

I'm pretty sure it must be a (lack of) memory issue. You can still make an enormous terrain with a 4096 image though, so it doesn't really matter. Sorry - I didn't intentionally mean to mislead anybody but this thing is in *VERY* early development so specs change as I experiment with it. :)

Thanks for the insight SSwift - I didn't know you'd already written a terrin system. I'll have a look - if it's better than mine I might just buy it :)


sswift(Posted 2004) [#17]
8192x8192 = 67 million pixels, 268 million bytes in a 24 bit image with alpha.


Ricky Smith(Posted 2004) [#18]
@sswift - I really like your terrain system - the only reason I havent bought it yet is I havent got to the stage in a project where I need it. It could well be that many people are in the same sort of situation - the same goes for your shadow system - its a definite buy for the near future so I hope you keep on producing these really great libraries and in the long run I'm sure you'll find you sell loads.


(tu) sinu(Posted 2004) [#19]
gimme gimme gimme :)
seriously though, i'd like a tool like that.


Micha(Posted 2004) [#20]
Sounds good :)

I´ve played around with Blitz Terrains but what i really need is a highly detailled Terrain, that´s almost infinte.
Well not infinite , but much larger than blitz Terrains can be.

@sswift i downloaded your demo and was impressed by it.
But as Smiff i´m also at a point where i play around with other things and have no really a need for implemeting a large landscape right now. Will come to that point when every other parts of the game are working :)


Al Mackey(Posted 2004) [#21]
hmmm, I've got a question.. Will it have a way to make a terrain that has more than 8 bits of detail, height-wise? For a game I'm planning, I need terrains that can have fine detail, but also realisticly high peaks for mountains. There's too much stepping with 8-bit terrains when the height difference is that great. I've been suffering through Blitz's internal Terrains, and I've looked at Sswift's system as well, but I was already planning on making my own. If yours won't do more than 8 bits of percision, I'd at least be interested in seeing your precaluclated LOD code.