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?
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?