3d tiled world
Blitz3D Forums/Blitz3D Programming/3d tiled world
| ||
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. |
| ||
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. |
| ||
yeah my demo has 65 textures on it and ir runs ok. they are minly 128's though |
| ||
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. |
| ||
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 |
| ||
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? |
| ||
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 |
| ||
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. |
| ||
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 |