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



[prev]
Image of the Day Gallery
www.flipcode.com

[next]


 


Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.