|
Submitted by , posted on 10 May 2001
|
|
Image Description, by
Currently I am working on an engine to display planetal systems. Whole
planets can not yet be calculated correctly, but the LOD algorithm already
works quite well with small stones. In all screenshots except the bottom
right one you see a scene with 5000 stones (each of them having a different
shape). Each stone consists of up to 3200 triangles, which means the scene
consists of 16 million triangles. If I look at the scene like in the
topright image,
I get 18 FPS with average 50000 triangles rendered per frame (not counting
triangles that are clipped away) on a PIII 1GHz and ATI Radeon SDR.
The bottom right screenshot shows the scene in wireframe (you can see the
LOD). Itīs only 1500 stones, where I get about 55 FPS with average 18000
triangles per frame. The rather low framerates come from the fact that no
two stones are equal (at least theoretically) and that each stone rotates
around a random axis and around the planet (and all those transformation
matrices must be calculated...)
So, how does it work? I use functions f : RxR -> RxRxR that means from 2D to
3D to represent the stones, where the surface of the stone is the image of
the function (I could calculate the normals through derivation of the
function even though I do not use this method so far). You may think of
these functions as the inverse texture mapping function (The texture mapping
function maps the 3D vertices to 2D texture coodinates, my functions map 2D
texture coordinates to 3D vertices). All I need to do now is calculate a
tesselation for the texture, and then the function makes a 3D tesselation.
So far the 2D tesselation is equal-distant over the texture, and so I cannot
display big meshes like planets yet. I am currently working on a 2D
tesselation depending on the position of the camera in order to make a
planet consisting of several million polygons.
You may download a demo at the download page on www.crowsoft.de itīs just
300 kB.
The program there still has some bugs, like for example 32bit mode doesnīt
work with most video cards. Moreover I heard that it doesnīt work with
Savage cards and with some drivers on ATI Radeon cards (even though the
program was developed on a ATI Radeon... thatīs DirectX). Ah yes, it
requires DX8, and no port for OpenGL is planned (this is due to a small DX
vs. OGL war at our university :-)
Joachim Hofer
|
|