3d tiled world

Blitz3D Forums/Blitz3D Programming/3d tiled world

Isaac P(Posted 2004) [#1]
does anyone have any ideas on a 3d tiled world that would not be slow. Im thinking like a top down type game where you are free to roam on a flat 2d world, but id like this world to be of considerable size.. Id like to be able to use maybe 50 different textures for the tiles. I hve a system in place atm but it doesnt work very well.


Gabriel(Posted 2004) [#2]
I don't see a problem, as long as all the tiles which share a texture also share a single surface. 50 surfaces shouldn't be too problematic, and they may not all be on screen at once anyway.


Ruz(Posted 2004) [#3]
yeah my demo has 65 textures on it and ir runs ok. they are minly 128's though


AbbaRue(Posted 2004) [#4]
I am working on one myself. I call a tile function that creates a 27 x 27 unit tile.
I then place the tiles in rings of 8 tiles. around my location.
Each ring uses tiles 3 times larger then the preveous ring.
Thus the level of detail is 1/3 less for each ring out.
With 8 rings I get over 80,000 units out. If each unit represents 1 meter I get over 80 km of view out.
That gives me about 55,000 polys. With debug on I get about 345 fps on my system.
I figure I have power enough left to add another 50,000 polys. worth of trees and other objects.
My only problem I am seeking to fix is: I need to sew the tiles together
at each new ring so the verticies line up without leaving seethrue gaps.
Since each ring is 3 times larger only 1/3 of the verts line up.
If you have an idea of how to fix the seams between rings of tiles maybe we can help each other out.
My goal is to create a very large world with the present viewing area generated in real time.
Thus a whole world thousands of km. in size could be explored in real time, by rendering small areas at a time.

I have tried a number of other methods but this one gives the most versitility and highest frame rate.
Being able to see for 80km in any direction is awsome, as well.


Eole(Posted 2004) [#5]
Hi all !

Look at this :-), It's a static terrain mesh system base on QUADTREE and geomipmapping ...

I work on it, to use it in the TerradEd (see User Creation Forum )

You can try it http://www.3dgametool.com/Nico/QTM_Demo.zip




AbbaRue(Posted 2004) [#6]
After seeing Eole's example I was just thinking.
If someone could devise a formula that could produce terrains like that on the fly
that would be very efficient.
That would mean making mesh tiles with a varying number of verts.
Then use smaller textures to make up the larger texture for each mesh.
Any ideas on how to do this?
One idea is to start with the same high detail mesh and then remove verts that are not needed.
Anyone know a good way to remove verticies from a mesh in real time?


Eole(Posted 2004) [#7]
I don't realy understand that you want , but I think you talk about a Terrain LOD ... But I think Blitz a not any powerfull to make a Dynamic Terrain Lod with it (the terrain blitz are dynamic, but they aren't really like a mesh).... and the TRaingle creation are not enough good to do it ...

Actually there is more Algo to create a Dynamic Terrain, ROAM and QuadTree

If you want go to www.vterrain.org


Isaac P(Posted 2004) [#8]
Eole all i want to do is create flat tiles for the floor.. It will be from a top down perspective so only a few tiles will ever be seen at anyone time. But i want the world to be of considerable size.


Eole(Posted 2004) [#9]
But it's very difficult to have a lot of tile in the same time in memory, because Blitz doesn't like to have so many object to manage ....

Or if I'm understant (I speaking a very bad English), all your tiles are flat, so you just create a type to manage you tile with x and z coordinate, and a type to know with texture are aplly to it

After, juste use a simple code that check if x,z are in the camera view, and juste copy a flat tile from memory to the position and texture it, if x,z are not in the camera view and there is a flat tile in this position free the entity

exemple with speudo code

type Ttile
field tile_id
field mesh
field x,z
end type

type texture_tile
field tile_id
field pt_texture
end type

global Msh_FlatTile = Create_FlatTile()


function Update( Cam)

for Tile = each TTile

; just play with the angle :-)to do it
if tile\x and tyle\z in camera view
if tile\mesh=-1
tile\mesh= copyeentity( Msh_FlatTile )
Texture_tile( tile\mesh)
positionentity tile\mesh,tile\x,0,tile\z

endif
else
if tile\mesh>-1
freeentity tie\mesh
tile\mesh=-1
endif
endif

next

end function

function Create_FlatTile()
.
.
.
end function


function Texture_tile(mesh )


end function