BlitzTiles

Community Forums/Showcase/BlitzTiles

Krischan(Posted 2009) [#1]


I present you my project "BlitzTiles", the successor to the now discontinued project TerraTiles. It is based on it (huge outdoor 3D terrain, character steering, day/night shift) but I redesigned everything from the scratch and it is using a quadtree now instead of a unoptimized mesh (sorry for the double post, but this is complete different from TerraTiles).



EDIT: I updated the package, it is now possible to download a complete installation and separate maps here:

Main Program: BlitzTiles 1.02 (4.4MB)
MAP: Desert Mesa 1025x1025 (3.7MB)
MAP: Grand Canyon 1025x1025 (5.5MB)
MAP: Monkey Island 2049x2049 (5.2MB)
MAP: Middle Earth 2049x2049 (7.3MB)
MAP: Zillertal 1025x1025 (5.1MB)

Tutorial how to create real Terrains for BlitzTiles



BlitzTiles features:

- Third Cam perspective and freeflight mode
- reads Terragen heightmaps with 16bit precision
- realistic sizes by the Terragen file scale
- creates a tiled, quadtree-optimized mesh with seamless chunks (using QTS)
- cuts a larger texture to smaller textures fitting these tiles
- calculates the vertex normals out of the Terragen heightmap
- simulates a seamless night and day shift
- animated water / ocean
- moving and changing clouds
- starry night with star twinkle
- increasing sun brightness
- moon phases
- Island mode
- Loading bar
- many settings changeable through INI text files
- and it is FREE

The package contains three well optimized demo maps to show these features, additional there is a help file in CHM format included (Windows help) with a complete documentation of all INI settings explained, media files and the source. And I describe the creation of a new scene using L3DT in a tutorial. For the sake of completeness I added the original source of TerraTiles with some functions not used in BlitzTiles but they can be still interesting for your own projects.

Here are the screenshots of the three maps:







You can use BlitzTiles for different projects, for Roleplaying, Egoshooter or just outdoor 3D games. Certainly there is place for improvment but I reached the limit of my skills now (but it is running nice at this point, approx. 300-400FPS, sometimes 700-800). If you think you can improve it then DO IT because I publish this project under a modified BSD license and the code is free!

One possible improvement could be to add fractal subdivision close to the player to increase the detail level or even add texture splatting close to it and use BlitzTiles just for average / far distances. Or leave it like it is and use it as a base for you own projects.

I've been working a whole month on this project and I still think that it is not finished. But I wanted to share it with the community NOW. I'm working on large outdoor areas in Blitz3D since two and a half year (since i started with Blitz3D) and this is my replacement solution for BlitzTerrains. I hope it is successful and you like it.

And now finally the download of version 1.01 [7zip SFX Archive, 17.7MB]: blitztiles101.exe

Please notice that you'll need additional two components to run BlitzTiles, this is due a license change between Version 1.00 and 1.01:


1) eole's QTS Quadtree Terrain System, modified by me (put this qts.bb into the "inc" folder of BlitzTiles), original by eole:

qts.bb



2. The 3D dwarf Model made by "psionic", extract the contents of the dwarf.zip into the "models" folder of BlitzTiles:

Download psionic's 3D dwarf model

EDIT: forgot to mention there is a fourth scene available:



Download it here (5.5MB 7zip SFX): http://www.christianhart.de/bb/blitztiles/map_grandcanyon.exe

And there is a tutorial How to create real Terrains for BlitzTiles

Last edited 2011

Last edited 2011


nrasool(Posted 2009) [#2]
Hi Christian

Congrats by the way, this looks very very nice, and thanks for giving it to the community. I will check it out later on tonight. The screenshot do look beautiful


slenkar(Posted 2009) [#3]
thanks, this is great


Doiron(Posted 2009) [#4]
This is most impressive. Terragen integration alone makes it very interesting, but the project as a whole at a quick glance looks great.
The framerate keeps constant, the day night cycle with haze, cloud layers and halos is top notch, and it also makes good use of multitexturing. The code is very elegant and the package very comprehensive too.
It's the best example seen so far for B3D for sure, and in my opinion it can't get so much better.


ImaginaryHuman(Posted 2009) [#5]
Looks really nice, probably one of the best looking landscape's I've seen in blitz. The level of detail in your images looks great, although it looks like I see antialiasing, so did you use fullscreen AA or are the images reduced from their originals?


puki(Posted 2009) [#6]
This is all very exciting.

I award you a very rare "puki" Star of Merit.


ardee(Posted 2009) [#7]
Absolutely stunning, the sense of scale provided by the landscape is amazing, the best I've ever seen. Bravo and thanks for sharing. I'm away to walk a few more kilometers around the mountains.


ZJP(Posted 2009) [#8]
After "playing" with the demo, one word: INCREDIBLE
Very good work Krischan.
Thx ;)

JP


Nate the Great(Posted 2009) [#9]
wow. the detail is amazing... do you mind if I use one of the terrains for a little demo? Im not selling it or anything, just demonstrating to some people the power of blitz 3d. I will certainly give you credit :)


RifRaf(Posted 2009) [#10]
Looks great, certainly one of the most massive landscapes ive seen.. Try populating that with props :)


puki(Posted 2009) [#11]
Heh, I have only just got around to running it. Very nice. It even comes with a chm file - woof woof - sausages.


puki(Posted 2009) [#12]
It seems to work okay with Fast Extension.

Anaglyph 3D works (near distance) and shadows also work.


Gabriel(Posted 2009) [#13]
If you think you can improve it then DO IT because I publish this project under the GNU license and the code is free!

So everyone who uses this has to make their entire project open source?


Loktar(Posted 2009) [#14]
this is friggin amazing. I wish this was released a few years ago.. the games I would of made... Great work man, the clouds, night/day, everything is top notch.


Krischan(Posted 2009) [#15]
Thanks to all. To the questions:

Imaginary Human
although it looks like I see antialiasing, so did you use fullscreen AA or are the images reduced from their originals?
My nVidia driver did that with the setting "Quality".


Nate the Great
wow. the detail is amazing... do you mind if I use one of the terrains for a little demo? Im not selling it or anything, just demonstrating to some people the power of blitz 3d. I will certainly give you credit :)
Do it :-)


Gabriel
So everyone who uses this has to make their entire project open source?
As described in the GNU license FAQ, yes:

If I use a piece of software that has been obtained under the GNU GPL, am I allowed to modify the original code into a new program, then distribute and sell that new program commercially?

You are allowed to sell copies of the modified program commercially, but only under the terms of the GNU GPL. Thus, for instance, you must make the source code available to the users of the program as described in the GPL, and they must be allowed to redistribute and modify it as described in the GPL.

These requirements are the condition for including the GPL-covered code you received in a program of your own.

Another point is that you must respect the license agreement of "eole" for the QTS code (which I modified for BlitzTiles) or write your own quadtree algorithm, the dwarf model (if you're planning to use it) and for some modified textures from Spiral Graphics (credit them or make your own).


LineOf7s(Posted 2009) [#16]
So everyone who uses this has to make their entire project open source?

As described in the GNU license FAQ, yes


This is a very nice piece of software, and thankyou very much for releasing it how you have... but that's quite a 'catch', and it's important everyone makes an informed decision.


Krischan(Posted 2009) [#17]
but that's quite a 'catch'


What's the alternative?


puki(Posted 2009) [#18]
What's the catch if you don't open source a project that utilises this. What happens?


Krischan(Posted 2009) [#19]
I doubt that you will go to jail like an evil copyright terrorist pirate of proprietary software but if you get caught: the free software community could be informed and know that you deprive them a masterpiece of software and - even worse - ignore their ideals and therefore you'll suffer digital stoning :-) You could lose potential customers.


Its up to you: be or


skidracer(Posted 2009) [#20]
awesome stuff!

What's the alternative?


It's called public domain, MIT or BSD licenses allow your software to be commercially exploited by people wanting to make stuff called money.

No developer is going to take your software seriously as GPL simply forces them to make their project free. GPL make sense for an OS like Linux, for applications that don't take 20 years to be half finished it's simply an ambiguous political statement.

If you can't profit from your hard work and don't want to see anyone else profit either you have picked the correct license.


_PJ_(Posted 2009) [#21]
It looks bereautiful from the screenies... very impressive indeed.

I'm gonna download it and have a play around right now :D

I don't think there's anything wrong with a licence agreement suggesting that any products made with BlitzTiles cannot be sold, or that redistribution must include the BlitzTiles source code, but for the entire project to be open source? That does seem to me to be a little 'strict'.
Perhaps 'forcing' a logo or link to appear in any project using BlitzTiles might be better?


Krischan(Posted 2009) [#22]
If you can't profit from your hard work and don't want to see anyone else profit either you have picked the correct license.

These other licenses are not in my intention, I checked many license models earlier but the GPL was the best one I found. I don't want to make money - I want to share the software with the community and the improvements of it shall be shared, too.

I'm not sure if it is covered by the GPL V3 when I say: As the author I can still authorize an exception for your project if you ask me.

But I'm no lawyer, I'm a programmer :-)


Nate the Great(Posted 2009) [#23]
hey krischan. I was just trying to mess around with it and get a little car to drive around the terrain, but everything got weird when I tried to create a camera over the top of the BT_camera. All I can see are the clouds and the car model I am using... is there something I need to know about how it works to get this to work?


Krischan(Posted 2009) [#24]
I need more details. If you press "O" and "G" do you see the ground and the ocean patch? Does the terrain appear when you press "TAB"? Can you provide a Screenshot ("BACKSPACE")?

The Sunpivot, the Moonpivot and the Skypivot gets attached to the BT_Camera all the time in the function "BT_UpdatePositions". Perhaps your terrain position is messy. Did you use one of my terrains or did you try your own work?


Nate the Great(Posted 2009) [#25]
I was using the Zillateral terrain. Sorry I can't get a screenshot anymore but it was basically just the sky textures moving and thats all I could see.

It just seems like whenever I try to move a camera or an object I add to the scene, it jerks right back to where it was before. :( oh well ill mess around with it some more.


Loktar(Posted 2009) [#26]
Ill have to read up on GPL more. But it seems like if I used this as a separate module or a function/class unto itself that I would only need to release that actual part of the program. For instance if you use a modified/recompiled DLL covered under GPL in a project I would assume you only have to make that source freely available but not the whole project that uses it. Could be wrong though gives me a reason to read up more on these license agreements.

Its funny though about 3 weeks ago I went to Big Omaha, and the president of 37Signals was speaking there. He had a good point.. WTF is up with everyone thinking everything should be free? You should get something from your hard work, and if you release a product you should charge for it, if its a good enough product.

For something like Blitz tiles I would of paid for it a few years ago when I was still actively using B3D for projects and you as the author still would of been helping people out more by selling it, even more so because you are allowing them to use your work with theirs and get something for it. Now under this agreement it might put people off because they can spend a bunch of time incorporating it and then get nothing back but a fuzzy feeling.

But in the end its your code, and it is a nice product. Just my two cents.


ImaginaryHuman(Posted 2009) [#27]
So, I am curious how the terrain works, you said you are using a quadtree, so I presume you store different levels of detail or something in each level of the tree and then show the coarser levels further from the camera and the detailed levels closer? Your entire landscape is one big huge unique mesh, right, with no repetition?


Gabriel(Posted 2009) [#28]
I don't know of any licenses which force you to publish changes to the library itself but don't have any kind of viral effect on the rest of your code. If you want people to be compelled to publish changes, you probably don't have a lot of options, short of writing your own license from scratch.

Ill have to read up on GPL more. But it seems like if I used this as a separate module or a function/class unto itself that I would only need to release that actual part of the program. For instance if you use a modified/recompiled DLL covered under GPL in a project I would assume you only have to make that source freely available but not the whole project that uses it. Could be wrong though gives me a reason to read up more on these license agreements.

The GPL has no such exception, though you might be thinking of the Lesser GPL. The Lesser GPL has an exception for dynamically linked libraries, but since Blitz3D statically links everything, that wouldn't help. You would have to be able to compile the library to a standalone DLL and then link dynamically to that. I don't think it's possible, but I'm happy to be corrected.


Brucey(Posted 2009) [#29]
The Lesser GPL has an exception for dynamically linked libraries...

You can also add an exception of your own, if you wish, which can allow you to link statically. For example, wxWidgets uses this license feature. (FLTK too, I believe).


Yasha(Posted 2009) [#30]
I'm not sure if it is covered by the GPL V3 when I say: As the author I can still authorize an exception for your project if you ask me


The thing to remember is that GNU's GPL text is a recommended licence, but nobody forces you to use it in the exact form the FSF wrote it. The exact conditions of the licence you release your product under are always yours to tweak or completely rewrite to any extent. The reason people prefer GPL, MIT, BSD etc is mainly because we all already know what they say and nobody has to spend hours with their lawyer poring over the text again. If none of these fit exactly what you want, just write a new licence, or add extra Ts&Cs to an existing licence template.

In any case, thanks!


GaryV(Posted 2009) [#31]
Like others have noted, this is very nice. However, the license makes it completely useless.


Krischan(Posted 2009) [#32]
OK after thinking about it I want to change the license agreeement to a less restrictive one but it doesn't seem to be that easy. BlitzTiles uses some parts of other people/organizations and I have to respect their licenses, too.

Here the three major agreements in detail:

1. QTS Quadtree Terrain System
This is a legal agreement ("License Agreement") between you And Poursin Nicolas.

You are permitted To:
- Create for free or commercial games
- Free Tool

You are Not permitted To:
1) Sell, resell it
2) Use it, in commercial tool
3) Modify the products And sell it
> BlitzTiles is a free tool, so it matches the permission.


2. Dwarf Model by psionic
This model pack is available for use in freeware, shareware, commercial games/software with the following restrictions:

- You may not sell/re-sell this model pack or claim it as your own.
- You may not redistribute this pack in some other model pack through a website or on a compilation CD of any kind, without my written consent.
> BlitzTiles is a free tool and no single model pack, so it matches the permission.


3. Three Textures by Spiral Graphics
If you are a "Free User" (someone who has not purchased an appropriate Genetica license and instead uses free or demo software):

a. You may use the preset and pack textures in both commercial and noncommercial projects such as games, movies, publications, and artwork. You will not owe us any fee for this activity.

b. You may modify our textures to whatever extent you see fit. You will not owe us any fee for this activity.

c. You may redistribute our textures, but must clearly and visibly link to our website as the source of the textures. If you do not wish to credit our website, then you may instead become a Paying Customer by purchasing a license for Genetica, at which point your rights will be governed by point 1 above.
> BlitzTiles is a free tool using some modified textures from them and has a link in the help file to their website, so it matches their permission.


So which license would match these criteria? I could re-release BlitzTiles covering only my OWN work under the BSD excluding the above work and refer to their license agreements. So you can use BlitzTiles but if you want to make a commercial app/game you must ask them for their authorization, too (at least QTS or write your own Quadtree algorithm). The three textures can be replaced by own work, the dwarf model too (but should be no problem) but QTS has its own, restrictive license agreement as is needed by BlitzTiles to run, even if I rewrote and optimized it in large parts.

It is too easy to say that it is useless with my current license without answering these questions or making suggestions how to get out of this dilemma. You can blame me for my GPL license, but you must blame the others, too...

As a consequence, BlitzTiles Download is no more available until a new license and/or package is set up.


Sung(Posted 2009) [#33]
*OUTSTANDING WORK!!*

Congratulation to this Krischan.


Yasha(Posted 2009) [#34]
QTS isn't GPL-ed, is it? If it is that might make it more difficult to come up with a separate licence for the rest of your work.

Releasing the functions that are your work under a separate licence from those that aren't is a good idea. Although a compiled result can only have one licence, that's up to the Blitzer making that result to resolve with the authors of the various components - you can just stick the pieces in separate include files and apply a different licence to each, no problem (your own EXE doesn't need to have permission for commercial use, since it's a demo, does it?). The Blitzer can then either seek commercial permission for the individual function packs, or replace them.


Krischan(Posted 2009) [#35]
OK finished. I created a new package and modified a BSD license, now you can use it in your free AND commercial applications without releasing your whole source. I only ask you to tell me what you created with BlitzTiles and to share your BlitzTiles improvements with the BlitzBasic community again if you are willing to, but these are no prerequisites - it is up to you.

Additional I replaced the three 3rd party textures with my own work, removed the dwarf model out of my package and added the "qts.bb" containing the modified version of eole's QTS Quadtree Terrain System compatible with BlitzTiles to the first post of this thread. So my package consists only of my own work now and I was able to modify the license. I've put two text files in the empty folders "inc" and "models" with instructions how to get the two missing components needed to start blitztiles.bb or terratiles_pre-quadtree.bb.

Please delete the first Version "blitztiles100.exe" and all its contents and use only the version 1.01 or later from now or overwrite older files with those from version 1.01. It is the same package, only with a different license and missing 3rd party media.

I hope you're happy now - I lost my saturday. Time to get drunk.

PS: the modified license text:
Copyright (c) 2009, Christian Hart. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION). HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

A final request by the author:

The author would be happy if you let him know what you created using BlitzTiles, just out of curiosity (check the contact page in this help file how to contact him) and asks you to improve the code and share the improvements with the BlitzBasic community again like he did before. There is a lot of work in this project and the author decided to give it away for free, so set a good example if you are willing to.

But these two conditions are no prerequisites for using this code in your own free or commercial applications. The decision is up to you.



Nate the Great(Posted 2009) [#36]
I lost my saturday.


Saturday just started here.. how can it already be over for you? In fact, I just woke up and checked the blitzblog lol.

Thanks for this though. Its the best terrain I have ever seen in blitz.


Loktar(Posted 2009) [#37]
Wow man.. thanks Never would of thought you'd change the agreement.

Not only is he great.. but also merciful!


MikhailV(Posted 2009) [#38]
@Krischan: Impressive work!
How you think about LOD system (1-2 additional low-detail levels for every sectors, pre-calculated of course)?


Ferret(Posted 2009) [#39]
This does not work for me.
I get a "Texture does not exist" error and i cant find wich one.

The screens look impresive, i realy want to see this in action.


Krischan(Posted 2009) [#40]
Mikhail: I dunno how to weld the quadtree chunks. You?

Ferret: I downloaded the package again, created a qts.bb from the first post here and copied the dwarf.zip contents to the models folder - and everything is working. What configuration do you have (CPU, RAM, GFX, OS)?


skidracer(Posted 2009) [#41]
It could be ferret needs to update his Blitz3D for dds support.


MikhailV(Posted 2009) [#42]
@Krischan: It's simple. Leave edges of chunks without changes that there were no incorrect connections. Unite internal triangles!

p.s. I can draw image if it difficult to understand.


MikhailV(Posted 2009) [#43]
... and image :)



p.s. lod0 - [original mesh tris qty] * 0.26, lod1 - [original mesh tris qty] * 0.07


Ferret(Posted 2009) [#44]
Sorry, i should check for updates before asking questions.
I was wondering what a .dds file was, never heard of it before :)

Updating now.


Ferret(Posted 2009) [#45]
It works :), got a nice framerate to.

Great work Krischan.


Grey Alien(Posted 2009) [#46]
Wow impressive! Nice screenshots.


Chroma(Posted 2009) [#47]
Man this is sweet! Gonna try this out for my flight sim as the terrain engine. :)


Chroma(Posted 2009) [#48]
Krischan, I'm trying to use .dds textures for the texturemap and colormap but it's giving me a MAV at this line in the QTS_Texture() function. Any ideas why this line of code don't like a .dds texture?

rgb=ReadPixelFast(Int(Floor(vx*cfactor)),Int(Floor(vz*cfactor)),cbuf)



Krischan(Posted 2009) [#49]
Not really. The line you posted is dependent on this command structure:

Input: Colormap Image 2^n+1 (ex. 1025x1025) - each texel represents one vertex RGB color.

- loaded AS IMAGE to the Global BT_ColorMap in the Function BT_InitGame()
- BT_Colormap assigned to Function call QTS_CreateTerrain() in BT_InitTerrain()
- again assigned in Function QTS_CreateTerrain() to Function QTS_Texture()
- cbuf% is the Imagebuffer placeholder of the Image in the global BT_Colormap

Not very complex. So I think your Image size doesn't match the total vertices dimensions 2^n+1. The x/y image coordinates gets calculated out of the actual Vertex coordinates in these lines:

vx=VertexX(surf,v)+(QTS_HeightMapSize/2.0)
vz=-VertexZ(surf,v)+(QTS_HeightMapSize/2.0)

I think you should debug the results of vx/vz and compare if they match the image dimension or exceeds it.

Question: why do you use a DDS Texture for the colormap image when PNG24 is sufficient (never gets loaded to VRAM)?


Chroma(Posted 2009) [#50]
No idea. But the colormap and texture maps are .jpgs. What PNG24 are you talking about?


Chroma(Posted 2009) [#51]
I orginally thought it might be more efficient to use .dds textures. But if you're saying there's no benefit then I'll move on to my next to-do list item.


Krischan(Posted 2009) [#52]
In my very first versions I used DDS but stopped working on it because I couldn't write to loaded DDS textures using Blitz3D (dunno if it is possible using Blitzmax). But I had to write to textures to avoid the ugly tile seams (now I just copy one side of a texture block with the opposite side of the adjacent block - take a look at the part below "BT_UpdateBar("Align Texture Seams",y,BT_Tiles-1,80,90)" - and all seams vanish).

Move on, its a waste of time. PNG24 is color/pixelperfect for the colormap but you won't notice any difference using a high quality JPG. It makes no sense to use a DDS format if you only load it as a (2D) image as a storage for vertex colors.


Chroma(Posted 2009) [#53]
Hm...I guess I need more practice. Now that I have the Pro version of L3DT, I'm having trouble getting anything anywhere near as nice as your maps... :(


Chroma(Posted 2009) [#54]
Hmmm...I'm getting as far as putting in the .hdr values of width height top left right bottom etc....and it loads a tiny 128x128 map that is mostly green. I'm following the tutorial very closely too.

Any suggestions Krischan?


Krischan(Posted 2009) [#55]
128 is the Wilbur default size for binary surfaces. In my tutorial I explained how to get and enter the values of the exported map out of the HDR file, including a screenshot. See page 5.


Chroma(Posted 2009) [#56]
Actually I went with exporting the terrain from 3DEM in .ter and importing it into wilbur as a .ter. Worked good.

But my newest question is scale. If my terrain is 10Km x 10Km and the colormap is 1025x1025 and I break the terrain up into an 8x8 segment....how many blitz units in size is each segment?


Krischan(Posted 2009) [#57]
To export the terrain from 3DEM direct into TER is actually a bad idea. Larger terrains will be cut and resampled by 3DEM automatically with a bilinear filtered seam around - ugly!!! Better try my description in the tutorial and you won't expirience detail loss and get no seams...

Your question: it always depends on the source size of the terrain in width/height, not the scale, you must distinguish between these two values! If you have a heightmap with 1025x1025 then your colormap must match this size. The (horizontal) scale value doesn't matter for this case. One Texel = One Vertex! 10x10km describes the scale, but even a 128x128 terrain can be scaled up to 500x500km or someting like that (very low detail then but the source size never changes)! Each segment in your example is 1024/8 = 128x128.

Take a look at my tutorial at the end:

A map with 1 arcsecond means: The earth has a circumfence at the equator of about 40,075.02 km, which is 40,075,020 million meters. 1 Arcsecond is 1/60 of 1 Arcminute is 1/60 of 1 degree. So one pixel in a map with a 1 arcsecond resolution is 40,075,020 / (360*60*60) = 30.922 meters. This is approximate the value of the horizontal scale of 30 used in Terragen. If you use other resolutions than 1 arcsecond recalculate the resolution again to get a realisitic dimension of your map!

So 30m desribes the distance between two points/texel/vertices on the source map or easier: the "size" of one point in space. So 30m is really coarse for a RPG but fine enough for a flight sim. You must get a sense of scale to create these realisitic environments. It took me some time to understand but after that I was really impressed how large our planet is in reality and how easy you can set up realistic environments as i described before :-)


Chroma(Posted 2009) [#58]
Mine actually came out really nice but I went the .ter route because I couldnt' get the .bin import to work.

So you're saying each segment is 128 units? Ah so 30 units in between each vertice then? Ok there has to be a formula without going into all the arcseconds stuff lol. :)

I'm using all the default setting you're using. And I'm breaking the terrain up into 8x8 segments. Just trying to get a handle on how big each segment is in blitz units so I can apply AABB checking.

I'm also looking into LOD by way of storing a second set of meshes in MeshTileLOD() and substituting in the lower mesh based on distance/AABB checking.


_JIM(Posted 2009) [#59]
The link is broken :( Any chance to have it back up?


Krischan(Posted 2009) [#60]
Fixed it. I changed my hosting provider and the file had upper case letters and I think Linux doesn't like that :-)


PowerPC603(Posted 2009) [#61]
This looks very nice, but I cannot run it.

I've downloaded both the qts.bb file and the dwarf and I've setup everything correctly.

I'm getting a MAV in the BT_LoadTexture function when it tries to load the texture "detail2.dds".

EDIT:

Nvm, I've gotten it to work after updating Blitz3D.
I was still using V1.90.


grindalf(Posted 2009) [#62]
This is awesome stuff, Im currently useing it for a project.
Thanks Krischan


beanage(Posted 2009) [#63]
Has anyone an Octtree implementation?


Xaron(Posted 2009) [#64]
Wow, Christian, that's excellent work!

Hast Du sehr gut gemacht! :)


Smurfpuss(Posted 2009) [#65]
how fast woulde it be if grass was added?
and trees?


Guy Fawkes(Posted 2010) [#66]
Idk, but i'd LOVE to see that!


stayne(Posted 2010) [#67]
Man I just hate to see this thread sink into oblivion. Bump for the masses. Is anyone doing anything with this? I'd love to see it if so.


Chroma(Posted 2010) [#68]
BlitzTiles is a spectacular piece of work. As is BlitzSky. I wish this was ported to OGL + BMax or Xors3D + BMax. That would be the ****.


SLotman(Posted 2010) [#69]
This would be great if ported to miniB3D... but it's a LOT of code, really a insane job to do... :(


jfk EO-11110(Posted 2010) [#70]
I was busy, so I just saw this. Thanks a lot for sharing!


Guy Fawkes(Posted 2011) [#71]
I simply REFUSE to let this thread die :)


Hotshot2005(Posted 2011) [#72]
Blitz Tiles is Amazing but are they still selling it?


Guy Fawkes(Posted 2011) [#73]
It's FREE =D

It uses the GPL License =D Free for all commercial & non-commercial games =D


Krischan(Posted 2011) [#74]
It doesn't use the GPL license - it's a modified BSD license - please read the whole thread again :-p 100 times :-D But yes, it's free.


Guy Fawkes(Posted 2011) [#75]
@krischan, whats ur email mate?


Krischan(Posted 2011) [#76]
Update! No, no, it isn't the miniB3D version :-D

A few days ago I've been watching LOTR in TV again and I asked myself, how the "original" locations from Tolkiens map would look like in 3D. I've been searching the whole internet for usable (height)maps and finally found the MERP project for Oblivion. Their base map is not exactly like Tolkiens original maps but you can get a good feeling for the area. And my BlitzTiles is perfect for the atmospheric ambiente :-) Unfortunately, I had to resize the map down to 2049 resolution, which is over 10000 in the original! Blitz3D couldn't handle a larger map.

But now start together with Gimli in the misty mountains range facing the sundown westwards over Eriador. Can you spot the shire and Hobbiton? Oh wait, I didn't add this...



Grab it here and have fun there: Download (7.3MB 7zip SFX)

But wait! There is more. BlitzTiles is now able to SAVE the world as a B3D file and I added a simple viewer using my BlitzSky. It is still experimental but gives nices results at this point:

Download BlitzTiles Update 1.02 (0.1MB ZIP)
Just unzip and overwrite all files in the root of the BlitzTiles folder. BT will create a B3D subdirectory and after the scene has been rendered you will find a "terrain.b3d" in the corresponding subfolder and you can view the map very easily starting the viewer.bb and change the map name variable:

Middle Earth total view in the viewer


Last edited 2011

Last edited 2011


Blitzplotter(Posted 2011) [#77]
This is gobsmackingly impressive, I used to try and render landscapes in vistapro on the miggy some 15 odd years ago. My gps plotter does altitude as well, now to generate some landscapes from gps data, that'd be sweet!


Doggie(Posted 2011) [#78]
Must be missing the textures


Krischan(Posted 2011) [#79]
I updated the package, it is now possible to download a complete installation and separate maps here:

Main Program: BlitzTiles 1.02 (4.4MB)
MAP: Desert Mesa 1025x1025 (3.7MB)
MAP: Grand Canyon 1025x1025 (5.5MB)
MAP: Monkey Island 2049x2049 (5.2MB)
MAP: Middle Earth 2049x2049 (7.3MB)
MAP: Zillertal 1025x1025 (5.1MB)

Tutorial how to create real Terrains for BlitzTiles

@Doggie: ?!? can you explain? It's working fine here and I added everything you need.

Last edited 2011


Blitzplotter(Posted 2011) [#80]
Hi Krischan,

{EDIT} Ran in debug mode - found the problem - I needed to extract the middle earth file into the maps directory - works now! Great work, you might want to include the middle earth map file within the maps directory so that blitz tiles complies without a memory violation.

Maybe my fault for not reading install intructions - if so sorry. I'd a very quick glance at the tutorial, great detailed instructions.

[End Edit]

Last edited 2011

Last edited 2011


Doggie(Posted 2011) [#81]
I get a MAV in qts.bb right where it reads terragen data
seekfile(file,20):QTS_Size=ReadInt(file)


Krischan(Posted 2011) [#82]
Did you install the map(s) in the "maps" subfolder, too? Take a look at the blitztiles.ini, first entry. For example:

[BlitzTiles]
Scene=middleearth

There must be the corresponding map "maps\middleearth\" folder with

- middleearth.ini
- middleearth.ter
- middleearth_colormap.jpg
- middleearth_preview.jpg
- middleearth_texture.jpg

I deleted my folder and I get the same error message like you so this should fix it.

@Blitzplotter: yeah, I thought about that but I wanted to keep the main program separated from the maps. But hey guys, each of you has 100 billion neurons, use some of them :-D


Blitzplotter(Posted 2011) [#83]
You've done a great job krischan, it is an idea to make people work a little to use your code, and it is testament to your logical file structure to populate the map directory with. A. Map file. I have a directory checker function I might thread into your sweet code that may prompt a humble user to slap a map file i the relevant slot ,I do love your program ! I. Need everyone of my .5 billion neurons to integrate my gps app with your tile thing, however life and work kicks back in in less than a week so chance'll be a fine thing! One of my recent change log entries was Feb 11!

Last edited 2011


Krischan(Posted 2011) [#84]
Feel free to create a 1.03 version with this addition but don't put too much effort in it - if I have time I think about converting this project to miniB3D, clear up some errors and perhaps speed up the terrain chunk generation. BlitzTiles is nice but not very useful right now (or has anybody used it beside Chroma?).

Last edited 2011


Doggie(Posted 2011) [#85]
OK. Thanks. Had neglected to make sure the files copied in correctly. Weird thing was the program shut down with file does not exist on "CloseFile f" so I rem'ed it out and it's working fine. Have to play around with it.

DOG

Last edited 2011


Blitzplotter(Posted 2011) [#86]
Tried invoking my readfile function but was getting MAVs so have gave up for now - As long as the maps directory is populated with a map it works great!


Ian Thompson(Posted 2011) [#87]
I would love to see a miniB3D version at some point too Krischan.


Krischan(Posted 2011) [#88]
At the moment, I'm experimenting with warner's minib3d terrain functions. Here are two screens showing my efforts in miniB3D from today (VERY early stage). The view is towards the "Matterhorn" mountain in Switzerland. I'm using a 1024x1024 heightmap and a 4096x4096 normalmap, the "shadows" are calculated with simple DOT3 shading with the normalmap applied to the mesh which gives a nice day/night cycle.




Now I need to convert my Terragen loader. And I'm still not sure how to split the tiles here. But it's running very fast without splitting already.

Last edited 2011


Ian Thompson(Posted 2012) [#89]
Looks great, very Skyrim'ish!


NoOdle(Posted 2012) [#90]
Wow fantastic work! Very impressed :)


Guy Fawkes(Posted 2012) [#91]
<3 I LOVE THE MIDDLE EARTH MAP! =D


Guy Fawkes(Posted 2012) [#92]
Krischan, when I try to use the sun and the moon combined with FastExt, for some reason, the sun/moon has a weird white quad in front of the camera.... Its weird. How do I fix it?


Guy Fawkes(Posted 2012) [#93]
Krischan, when I try to use the sun and the moon combined with FastExt, for some reason, the sun/moon has a weird white quad in front of the camera.... Its weird. How do I fix it?


Guy Fawkes(Posted 2012) [#94]
Sry for the double post... i accidently hit submit twice


stayne(Posted 2012) [#95]
Last post in this thread rez.

http://blitzbasic.com/Community/posts.php?topic=87026#1013396


Guy Fawkes(Posted 2012) [#96]
Thanks alot, Stayne! :)


MadJack(Posted 2012) [#97]
These screenies are all very well, but most 3d games happen from an on-the-ground perspective.

How does this lib handle that issue?


Guy Fawkes(Posted 2012) [#98]
Is there a way to use the fastext lib to give a glow to both the sun AND the moon? is there a way around this terrible quad glitch? ><


Guy Fawkes(Posted 2012) [#99]
Anyone know if I can use QTS terrain and blitztiles in my commercial project?


stayne(Posted 2012) [#100]
You have a commercial project in the works yet you don't have enough common sense to read the License.txt file? Scary stuff kiddo.


Guy Fawkes(Posted 2012) [#101]
I checked... U dont understand what Im asking... Im asking if "QTS" is royalty free.. NOT BlitzTiles. I RESENT ur comment, sir :<


Guy Fawkes(Posted 2012) [#102]
Can anyone else answer my question instead of misreading my question? -.-


Kryzon(Posted 2012) [#103]
Yes, they both allow you to use in free or commercial games without paying royalties.
You're not allowed to make a commercial tool with QTS, only a commercial game.

You need to have a BlitzTiles.TXT file in your game folder that contains a copy of the full copyright notice of BlitzTiles, it's required in the license.

Optionally, e-mail the author (Krischan) about any improvements you made to the BlitzTiles library and in what projects you've used his library. Again, this is optional.


Guy Fawkes(Posted 2012) [#104]
Thanks, Kryzon! :)


Yue(Posted 2012) [#105]
=)


Yue(Posted 2012) [#106]
Hello, a question, you can stop time?, Ie move the clouds and all that, but that the sun is always in a position to get him into this Scena.


Guy Fawkes(Posted 2012) [#107]
Please re-translate that. i dont understand a WORD ur saying..


Yue(Posted 2012) [#108]
Please re-translate that. i dont understand a WORD ur saying..


As I can do to make the sun stand still?, Meaning that the clouds move but there is no day and night, if not one day, and only move the clouds.


Guy Fawkes(Posted 2012) [#109]
Guys. do u understand a WORD? Can someone PLEASE make sense of this?


Yue(Posted 2012) [#110]
=(


Krischan(Posted 2012) [#111]
Hint: take a look at the BT_UpdateScene() function, the vars time and/or BT_SunAngle take care of all the movement there, clouds, sky, light etc..

But that's not hard to find out by yourself if you read the well commented source...


Ross C(Posted 2012) [#112]
Whoa, lay off the guy. He doesn't speak English as his first language. I don't understand a word you say sometimes.


Yue(Posted 2012) [#113]
Hint: take a look at the BT_UpdateScene() function, the vars time and/or BT_SunAngle take care of all the movement there, clouds, sky, light etc..

But that's not hard to find out by yourself if you read the well commented source...


Thanks!!


Guy Fawkes(Posted 2012) [#114]
Im just trying to help.... jesus.... i dont speak any other language besides english. how am i SUPPOSED to help?


Drak(Posted 2012) [#115]

i dont speak any other language besides english. how am i SUPPOSED to help?




If you can't offer any help then you shouldn't. Obviously his question was not directed at you, anyway. It was directed to the author or someone who knows how the program works.

In your posts up higher in this thread you were asking for help, too. So, if you don't understand it then you shouldn't be expected to answer questions about it.


Guy Fawkes(Posted 2012) [#116]
Look, I'm sorry, ok? I was only trying to help... :( Anyways. Can we PLEASE get back on topic?


And came someone PLEASE help fix that stupid quad glitch with the FastExtensions? Thanks! :)

Last edited 2012


Yue(Posted 2012) [#117]
Krischan, when I try to use the sun and the moon combined with FastExt, for some reason, the sun/moon has a weird white quad in front of the camera.... Its weird. How do I fix it?



If I remember correctly, there is a version called Blitz Sky, in that there is a problem when attempting to use with FastLibs, now well in the land BtlizTiles version, the version of Heaven will not have that problem, the difference is that the moon does not looks so bright. So as a solution you must use version BlitzTiles Sky and Sky Blitz.

>>> http://www.blitzbasic.com/Community/posts.php?topic=87026

Last edited 2012


Guy Fawkes(Posted 2012) [#118]
Thanks alot, Yue :) And uh, sorry if I offended u. I didnt mean to :)


Yue(Posted 2012) [#119]
@Thundros

HideEntity BS_MoonBright2 BlitzSky Run + FastLibs =) or Find BlitzSky.bb EntityBlend BS_MoonBright2,5 and change EntityBlend BS_MoonBright2,1 =)

Last edited 2012

Last edited 2012


Yue(Posted 2012) [#120]
=)

http://youtu.be/Gx2Qx-Cv-VQ


Guy Fawkes(Posted 2012) [#121]
Can someone make it so that we can import a terragen file just like this, only with an import menu?


stayne(Posted 2012) [#122]
Gonna have to code your own editor Thundros.


Guy Fawkes(Posted 2012) [#123]
I already did... I just need to know how to import a full TER file, textures and all.


Krischan(Posted 2012) [#124]
Take a look in the terratiles_pre-quadtree.bb, there is a function called "LoadTerragen". For the import menu: I COULD make it but I put all my efforts in my new planet generator now. Please code it yourself and like I said before - BlitzTiles is well commented.


Guy Fawkes(Posted 2012) [#125]
I already made the import menu. I just need the function to PROPERLY load ter files the EXACT way BlitzTiles does


Blitzplotter(Posted 2012) [#126]
Still looking forward to playing with this some more, unfortunately is going to have to wait until my current study year finishes - September!!! AAaarrgh.

Last edited 2012


Krischan(Posted 2012) [#127]
You might have noticed that TERRATILES is exactly like BLITZTILES, with the difference that Blitztiles is using a quadtree instead. So I assume that you either didn't take a look at this easy and commented function or you don't understand it. In both cases, I can't help (SYS 64739 ;-).




Guy Fawkes(Posted 2012) [#128]
Does this texture each mesh of the terrain? And doesnt this have that problem with the invisible lines in the middle of each terrain?

Last edited 2012


Guy Fawkes(Posted 2012) [#129]
Actually, theres a MAJOR difference. can u pull out all the functions needed from blitz tiles, to load the terrain, and texture it?


Guy Fawkes(Posted 2012) [#130]
Bump :)


Guy Fawkes(Posted 2012) [#131]
Anyone?


Yue(Posted 2015) [#132]
Not Found

The requested URL /bb/blitztiles/grandcanyon.exe was not found on this server.


PhotonTom(Posted 2015) [#133]
The link is wrong (the text is correct) it should be map_grandcanyon.exe


Yue(Posted 2015) [#134]
Hello, I do not understand use the google translator .

Whenever I try to download I get this notice.

"Not Found

The requested URL /bb/blitztiles/grandcanyon.exe was not found on this server."


RemiD(Posted 2015) [#135]
@Yue>>you can use the links at the top, they are ok here...

Main Program: BlitzTiles 1.02 (4.4MB)
MAP: Desert Mesa 1025x1025 (3.7MB)
MAP: Grand Canyon 1025x1025 (5.5MB)
MAP: Monkey Island 2049x2049 (5.2MB)
MAP: Middle Earth 2049x2049 (7.3MB)
MAP: Zillertal 1025x1025 (5.1MB)




Krischan(Posted 2015) [#136]
Fixed.


Yue(Posted 2015) [#137]
Hi Thanks for fixing.
I have a new problem, I think I'm doing something wrong.

The steps I make are the following.

run Blitztiles.bb
Here I created a file in the B3D, Desert.b3d directory.

Run the viewer.bb.
Here are the disadvantages:

I can not carry out any task on the terrain mesh.

For example if use TurnEntity Mesh, 0, 1, 0, only one picture field moves.



TurnEntity

If I try scalar field does not work, if I want to put collisions either,

Not that I'm doing wrong.

Greetings


Krischan(Posted 2015) [#138]
You are using the very *experimental* B3D save mode which uses a custom BB3D write function. It writes all 8x8=64 separate meshes into one single, large B3D file. Unfortunately it doesn't behave like a "normal" mesh - I don't have a solution for this.

Hint: check the B3D file format specifications and the function "WriteBB3D" in the blitztiles.bb as I think that the file is not 100% complatible with Blitz3D because I'm not sure if all needed variables are written to the B3D file:

http://www.blitzbasic.com/sdkspecs/sdkspecs/b3dfile_specs.txt


Yue(Posted 2015) [#139]
Thanks You!, Fix here.

Function WriteBB3D( f_name$,tiles%,scaler#=1.0 )
	
	file=WriteFile( f_name$ )
	
	b3dSetFile( file )
	
	b3dBeginChunk( "BB3D" )
	b3dWriteInt( 1 )	;version
	
	b3dBeginChunk( "TEXS" ) ; list all textures used by the mesh
	For x=0 To tiles-1
		
		For y=0 To tiles-1
		
			b3dWriteString( "X"+x+"Y"+y+".bmp" ) 	;texture file
			b3dWriteInt( 16+32 )					;flags
			b3dWriteInt( 2 )					;blend
			b3dWriteFloat( 0 )					;x in tex 0 (hu?)
			b3dWriteFloat( 0 )					;y in tex 0
			b3dWriteFloat( 1 )					;x scale 1
			b3dWriteFloat( 1 )					;y scale 1
			b3dWriteFloat( 0 )					;rotation 0
		
		Next
	
	Next
	b3dEndChunk()	;end of TEXS chunk
	
	For x=0 To tiles-1
		
		For y=0 To tiles-1
			
			b3dBeginChunk( "BRUS" )
			b3dWriteInt( 1 )					;1 texture per brush
			b3dWriteString( "X"+x+"Y"+y )		;name
			b3dWriteFloat( 0.5 )					;red
			b3dWriteFloat( 0.5 )					;green
			b3dWriteFloat( 0.5 )					;blue
			b3dWriteFloat( 1 )					;alpha
			b3dWriteFloat( 0.0 )					;shininess
			b3dWriteInt( 1 )					;blend
			b3dWriteInt( 2 )					;FX
			b3dWriteInt( i )					;brush index
			i=i+1
			b3dEndChunk()	;end of BRUS chunk
			
		Next
		
	Next
	
	i=0

b3dBeginChunk( "NODE" 
b3dWriteString( "Scene_Root" ); Node Root
b3dWriteFloat( 0 )	;x_pos
b3dWriteFloat( 0 )	;y_pos
b3dWriteFloat( 0 )	;y_pos
b3dWriteFloat( 1 )	;x_scale
b3dWriteFloat( 1 )	;y_scale
b3dWriteFloat( 1 )	;z_scale
b3dWriteFloat( 1 )	;rot_w
b3dWriteFloat( 0 )	;rot_x
b3dWriteFloat( 0 )	;rot_y
b3dWriteFloat( 0 )	;rot_z
	
	For x=0 To tiles-1
		
		For y=0 To tiles-1
	
			b3dBeginChunk( "NODE" )
			b3dWriteString( "X"+x+"Y"+y )
			b3dWriteFloat( 0 )	;x_pos
			b3dWriteFloat( 0 )	;y_pos
			b3dWriteFloat( 0 )	;y_pos
			b3dWriteFloat( 1 )	;x_scale
			b3dWriteFloat( 1 )	;y_scale
			b3dWriteFloat( 1 )	;z_scale
			b3dWriteFloat( 1 )	;rot_w
			b3dWriteFloat( 0 )	;rot_x
			b3dWriteFloat( 0 )	;rot_y
			b3dWriteFloat( 0 )	;rot_z
			WriteMESH( BT_MeshTile(x,y),i,scaler )
			b3dEndChunk()	;end of NODE chunk
			
			i=i+1
			
		Next
		
	Next
	b3dEndChunk()	; Node Here.
	b3dEndChunk()	;end of BB3D chunk
	
	CloseFile file
	
End Function



Yue(Posted 2015) [#140]
It seems that the above is not a solution to the problem, because the mesh is created with all its triangles. Whereas if the arrangement is omitted, tris renderings are often less depending on the angle of vison camera.

But I think I have the solution, I export the terrain without the root scene I export posterioormente another in accordance to establish collisions on the ground, which make invisible.


Yue(Posted 2015) [#141]


Sorry, this does not work here, apparently the ground is very small in my project mars, my question is: I have to make my model rover many smaller?


Yue(Posted 2015) [#142]
Ok, no problem here. :)

I just want you to know that I'm using his powerful library in my project
: D



Guy Fawkes(Posted 2015) [#143]
EXCELLENT QUALITY, Yue! GOOD job! =D