So, black is the lowest altitude, white is the highest altitude.Ĭolor 0,1,0 is 256 higher than 0,0,0. What if we define R to be "high altitudes", G to be "middle altitudes" and B to be "low altitudes"? We already have these mixing properties at our fingertips: RGB color. In other words, we want to have our lunch and eat it too. It seems that our basic problem is not only one of altitude, but one of being able to somehow "mix" two (or more) levels of altitude into one single coordinate and at that, only have one heightmap. I've been thinking a bit about this problem myself, and I think I've come up with a slightly original, if wacko solution. It will be reducing the polygon count for the tiles, but since it is view independent it won't be reducing polys that are closer to the camera within a single tile. I figure my game won't be finished for another four years anyhow It's obviously not an optimal solution, and view dependent solutions will be much better at reducing polys. I am also assuming this solution will only work on higher end cards and faster machines. The thing that worries me most is popping artifacts, so then I'd like to try for a vertex shader that does morphing between the different levels of detail. This baked texture would be used when the terrain is far enough away that the LODs kick in. I'm not worried about the mesh reduction screwing up the textures that are applied when the vertices are changed because what I'd do is create one large texture that stretches over several tiles and has the textures baked into it, (similar to what is described in Charles Bloom's Texture Splatting technique for the base texture that is rendered for polygons that are further away). What I've been considering is different - it's basically allowing an artist to create a terrain completely in 3ds max (or any other 3d program) and export it, then run it through a process that cuts it up and pre-calculates LODs. (Actually the process is significantly more complex than this, but that's the summary of it). You then export the tiles (zones is what Nevrax calls them) and that's it. Then you launch an integrated terrain painting tool and paint textures directly onto the terrain. Patches let you create overhangs, caves, etc. Nevrax has a plugin for 3ds max which allows you to use patches to define the terrain. There's only one engine that I've found that gives the artist some freedom to do terrains, and that's Nevrax. I haven't found any terrain rendering that does caves at all, although there are games that do it. I haven't been able to find any terrain rendering code that handles this, or even attempts to. Simply cutting a hole doesn't work, you need the vertices to line up and the textures to transition from terrain to cave. If you use a seperate mesh for the cave, then there's the problem of having a smooth transition from the heightmapped terrain into the cave mesh. If you do caves as heightmaps, you are still limited to the confines of heightmaps. Both of which are viable solutions, with some limitations. Or the solution to create the cave as a mesh and cut a hole out of the heightmapped terrain and insert the mesh. Programmers will discuss solutions to overhangs and caves, such as using multiple heightmaps, one for the cave floor, one for the ceiling, etc. Heightmaps are good for algorithms, but on steep terrain the polygons stretch and give undesired results, and of course there's the limitation of overhangs and caves. There are few editors out there for terrain, and they are almost all heightmap based. Still, it annoys me that programmers (me included) create solutions that allow us to automatically generate terrain from heightmaps, and automatically texture terrain based on height or slope, and ignore the fact that it always looks generated. I've looked at the various terrain rendering projects for Ogre, and they are all very interesting and produce good looking results - kudos to the developers. The reason I'm considering this is because currently there aren't any tools that give artists the freedom to create terrain as they want it to look, with overhangs, caves and textures in the places they want. Then apply a mesh simplification process over the pieces, but only simplifying the internal vertices within a tile, and not the outer vertices that border the tile. I'm sure I'll get shot down on this one, but I've been thinking about taking a large polygon soup mesh and pre-processing step, break the mesh into tiles.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |