A simle program (coming in 2-3 variants) which renders a large terrain thanks to a C++ class which, given a set of points on a rectangular mesh of heigh-samples, gives a nice triangulation (the scheme it that of an "adaptive quadtree"). The example just uses a simple rule toselect more point near, less point far from viever, but this can be configured easily for various needs. 1 chunk of terrain in 513x513 point, which is rairly large... . this is a "simplified" alternative to the Algorithm by peter lindstrom et al. , bu the triangulation sheme is the seme... it's practically just the 'vertex dependency' correctin part, which, anyway is useful ehen there is no time to wait for long calculation for decinding which points from the mesh need to be included in the triangulation to give a perfect visual result, that "Continuous Level Of Detal" stuff. The rendering is distributed into 40 cycles, so the terrain rendering can go in "background" in a game of other. multichunk supported:example2
- IT WORK VERY FINE NOW. 1048x1048 TERRAINS EASILY DONE. PRESIMLIFICATION USED MUCH BETTER.
- Since it's not important to update the terrain LOD in rel-time ( like 30 times in a second, even because it could not be on most PCs because it is a too much heavy procedure), so the first 2 examples propose a "practical" implementation, because the cumbersome procedure on a large 513x513 mesh, is done DIVIDIED into some 40 sub-stages: so to make the partial stages light to process, allowing to do terrain LOD update in "background". In an adventure or flight game, this results in a never-interrupted real-time framerate even on older PCs or cheap PCs: so, the terrain's LOD in updated every 2 seconds but meanwhile there are no framerate discontinuities, and one can wals around the terrain smoothly. For a GIS software instead, it is useful because one can 'fly around' with the camera smoothly. OpenGL usage is optimal, thanks using thoose "vertex array" function to send the triangles. wireframe is not omptimized, in fact it is slow, and only for tests or dydactical purposes.
- first varaiant only renders a single chunk based on an 513x513 mesh used as "raw" information to build a terrain with few triangles: you choose where it must be more detailed. example shows more detail closer to the camera
- there is also a multi-chunk example. an 4x4 lattice of 513x513 (that refers t the amount of "raw" height-data) alloes to visualize a large detailed terrain, and let implement dynamic loading with few or no glithes. USE MULTI-CHUNK TERRAIN ONLY IF YOU ARE QUITE SURE TO KNOW WHAT YOU ARE DOING. "Stiching" of the chunks is not implemented, maybe in the future I will ad a function which allowes to do in easily..
- also an example will come which just does the procedure with a small 128x128 terrain and show the triangulation, doing all graphics with pure SDL library, with 3D graphics all software-rendered... or directly 2D graphics to draw the triangles, just to show the method in its simplest and most naive implementation
- there is a version (now only single-chunk) which does a pre-simplification of the heghtmap, so it keeps a set of fix points which preserve the shape of mountains and so... near the camera of course, points keep to be considered more densely depending on distance too. Alltogater this works very well.
Be the first to post a review of Terrain Rendering Simplified!