Terra Tiles
Community Forums/Showcase/Terra Tiles
| ||
Here is one of my current projects: Terra Tiles - a terragen-to-meshterrain loader with a scenery engine (day/night system) and a dwarf you can steer over this terrain. As input there are only two files necessary, the terragen terrain and the matching megatexture - other parameters can be changed in the INI file or the program will calculate it automatically. The dwarf steering is similar to the game "Gothic", but it is possible to switch to a freeflight mode, too. There are many parameters to change described in the readme.txt. I added three demo maps to the package, they are completely different to show the potential of this demo. FEATURES 1. Terragen-Loader It is possible to load any terragen file, it must be quadratic with a resolution of 2^n+1 (not: 512x512 but 513x513!). The terrain can be resampled from a higher resolution to a lower resolution with a bilinear filter (ex. 513x513 -> 129x129). The terrain gets cut automatic considering uv-coordinates, chunk normals and texture transitions by a given tilesize parameter (ex. source map 513x513, 4096x4096 megatexture -> 16x16 tiles with 32x32 vertices and a 256x256 texture part each). In the demo, there is a 513x513 terrain with a 20 meter per vertex distance resolution, so the island has a square footage of about 100kmē, in realistics dimensions. 2. Realistic day/night system Using gradients, smart quad blending and a sky dome (a patch with a bulge in the center), a realistic? but at least very nice day/night transition is simulated. The terrains gets lighted by 2-3 light sources according to the time of day and with vertex shading nice light effects appear across the whole day. Additional, there is a starry night scene and a moon (you can even define the moon phase). 3. Character Steering You can steer the dwarf like in the game "Gothic", the cam can be rotated around the character 360° with the mouse. There is gravitation and the dwarf scale is relative to the terrain scale. In freeflight mode you can cover larger distances in seconds. Switching the modes positions the dwarf to the cam position and vice versa. 4. Minimap The minimap is to locate the player on the terrain. The map is a real snapshot of the terrain made with an orthogonal cam from bird's eye view, layed on a quad with the player as a red dot. SCREENSHOTS Screenshot: Monkey Island 07:15am, sunrise in the east ![]() Screenshot: Other Island 07:15am, sunrise in the east ![]() DOWNLOAD Download Demo (3.5MB 7zip SFX) http://www.christianhart.de/bb/terratilesdemo.exe The demo is running fine but is not optimized yet, there is no LOD/PVS and the steering of the dwarf is the very first version, especially jumping is not finished. But you can test your own terrains / megatextures with this demo and change parameters in the INI file (but be careful - there is no plausibility check of them - the application can crash) Source and Media will be released as soon as they are cleaned up, optimized and commented completely. |
| ||
I'm really impressed with your day/light cycle and how it effects the lighting. Terrain is pretty huge and smooth too! Great work! Your gallery submission gets a 5/5 from me. |
| ||
I had a play with it, it's pretty nice, interesting in wireframe too. The lighting is good but I was a bit confused by the per-vertex sort of `baked in` shadows - ie as the sun moves around some sides of hills stay dark while the other sides are light - a bit odd, but I guess you're not doing realtime shadows. |
| ||
Don't be confused, its an illusion. I don't calculate realtime shadows here, Blitz does it for us with two light sources (directional and point light). The shadow quality increases with the vertex amount, I tested it once with a 2049x2049 map (5 FPS there, LOL) and it looked really nice - but was unplayable. So the lighting is a mix of a prerendered shadow map combined with the megatexture and realtime light. I prerendered the shadowmap in the same angles like the lightsources are placed later (in L3DT: Setting "noon" which is 180° / 40° and matches with about 12:00am). For real shadows you have to calculate the shadowmap every single angle change and this will slow down the whole scene dramatically (or use a lower resolution which looks bad). So I think it is a good compromise here and still looks nice, even at night. |
| ||
Whoa, nice job! |
| ||
Why are you using both directional and point lighting? Ambient lighting is the only second light source that I would alter in conjunction with whatever is being used as sun/moon light. I noticed the dwarf was multi-lit, but this is somewhat unrealistic and unnecessary. More use of dynamic ambient lighting is required. I would understand the second light source if it was casting negative light. It is okay to throw dynamic, negative (black/dark), lighting to compensate for Blitz lighting through geometry which the light cannot reach in real-life (if you are trying to compensate for the directional lighting). |
| ||
Also, I couldn't work out whether you are, or are not, changing the sunlight colour. If so, then it was not dramatic enough. I always dynamically change the sunlight colour - ie when it is setting and rising it should be deeper orange/red - it has a nice effect on landscape and objects when you do this. As the sun rises, then you can drop it from it's red/orange, through yellow, to white or near white and then dip the colours again at sunset. |
| ||
With only directional light, the terrain FX for sunrise / sundown is not "dramatic" enough, it looks too flat so the point light strengthens the whole lighting. I was experimenting a long time with the lights and the combination of Ambientlight not greater than 128, and a directional light and an additional point light changing its color and range gave the best results to me. There are many parameters to balance, and they are changed according to the sun angle, including sunlight color. It is is not perfect, it is the first presentable version. There are lot of tweakings possible, ex. my gradients for sunlight. You can take a look at all my data fields, the first data represents the percentage between 0.0 and 359.9° (a whole day) where 0.0/100.0 is midnight and 50.0 is noon, and a smooth gradient between the r,g,b colors is being calculated (1440 steps, 1440 = 60 minutes x 24 hours). You will notice that the percentages and RGB values are set very roughly, you could spend days to tweak them all until they look very realistic. I think they look cool enough. ; ------------------------------------------------------------------------------------------------- ; Color Gradient Source (Percent,R,G,B) ; ------------------------------------------------------------------------------------------------- .Ambient Data 0.0, 16, 32, 64 Data 15.0, 16, 32, 64 Data 25.0,128, 96, 64 Data 35.0,128,128,128 Data 50.0,128,128,128 Data 65.0,128,128,128 Data 75.0,128, 96, 64 Data 85.0, 16, 32, 64 Data 100.0, 16, 32, 64 .Sunsize Data 0.0, 0, 0, 0 Data 10.0, 32, 32, 32 Data 25.0,192,192,192 Data 35.0, 96, 96, 96 Data 50.0, 96, 96, 96 Data 65.0, 96, 96, 96 Data 75.0,192,192,192 Data 90.0, 32, 32, 32 Data 100.0, 0, 0, 0 .StarLight Data 0.0,255,255,255 Data 20.0,128,128,128 Data 25.0, 0, 0, 0 Data 50.0, 0, 0, 0 Data 75.0, 0, 0, 0 Data 80.0,128,128,128 Data 100.0,255,255,255 .MoonBright Data 0.0,255,255,255 Data 15.0,255,255,255 Data 20.0,192,192,192 Data 25.0, 32, 32, 32 Data 50.0, 8, 8, 8 Data 75.0, 32, 32, 32 Data 80.0,192,192,192 Data 85.0,255,255,255 Data 100.0,255,255,255 .Light1Range Data 0.0, 0, 0, 0 Data 20.0, 8, 8, 8 Data 25.0,128,128,128 Data 30.0, 64, 64, 64 Data 50.0, 32, 32, 32 Data 65.0, 64, 64, 64 Data 70.0,128,128,128 Data 80.0, 8, 8, 8 Data 100.0, 0, 0, 0 .Brightness Data 0.0, 0, 0, 0 Data 25.0,255,255,255 Data 35.0,128,128,128 Data 50.0, 64, 64, 64 Data 65.0,128,128,128 Data 75.0,255,255,255 Data 100.0, 0, 0, 0 .ClsColor Data 0.0, 4, 8, 16 Data 15.0, 4, 8, 16 Data 25.0, 32, 48, 64 Data 35.0,100,150,200 Data 50.0,100,150,200 Data 65.0,100,150,200 Data 75.0, 32, 48, 64 Data 85.0, 4, 8, 16 Data 100.0, 4, 8, 16 .HazeColor Data 0.0, 12, 24, 48 Data 15.0, 12, 24, 48 Data 25.0, 64, 64, 64 Data 35.0,200,224,255 Data 50.0,200,224,255 Data 65.0,200,224,255 Data 75.0, 64, 64, 64 Data 85.0, 12, 24, 48 Data 100.0, 12, 24, 48 .LightCol Data 0.0, 0, 0, 0 Data 15.0, 0, 0, 0 Data 25.0,255,192,128 Data 35.0,255,255,192 Data 50.0,255,255,255 Data 65.0,255,255,192 Data 75.0,255,192,128 Data 85.0, 0, 0, 0 Data 100.0, 0, 0, 0 .OceanCol Data 0.0, 8, 16, 24 Data 25.0, 0, 32, 96 Data 35.0, 32, 64,192 Data 50.0, 32, 64,192 Data 65.0, 32, 64,192 Data 75.0, 0, 32, 96 Data 100.0, 8, 16, 24 |
| ||
Very, very impressive - for what looks to be a total environment solution. How many hours/days/months have I spent tweaking my environment, and it doesn't look as good as yours. I hope you're going to release this in some form - payable? |
| ||
Nope, no money. I'm a fan of open source. Gimme some time to clean up the messy code. |
| ||
That's really generous of you, if I had done what you have done, I would defly sell it. |