|
|
Next Generation
Terrain rendering
Volumes instead of Heightfields
Here are some screenshots, which show the project I'm currently
working on. It's a first preview of a Landscape Engine with Hierarchical
Voxel Spacing.
The main idea is to put voxel boxes of different sizes around the
observer; all with same resolution, but different scale. From this
Voxelvolumes is then a triangle-mesh generated, to render the scene
hardware accelerated. So, here on the images, the volumes are all
64x64x64 voxels. The Landscpape in each of the upper Images consists of
5 of this boxes with scale factors 1,2,4,8 and 16 ; so the size of the
displayed Volume is (64*16)^3 = 1024x1024x1024. If the visitor moves,
the inner (smallest) Box has to be updated most often, the higher sized
ones only if necessary.
It is possible/necessary to update the voxelvolumes while runtime; the
update is too slow for animations, but fast enough to walk through
fractal landscapes with infinite size without any preprocessing.
The landscapes may consist e.g. of thousands of boxes and spheres which
are added/subtracted from the voxelvolume. Updating of the voxelboxes
has therefore to be done in an extra thread. Another advantage of this
design is that almost all data, of the voxel-volumes and the geometry,
can be reused, if a box needs to be recalculated. The current
implementation is a little bit slow, because it is not yet optimized for
speed.
Currently all triangle-data is just stored in vertex-arrays, but
because the farer triangles are only updated rarely, they could be
stored in the graphic-card memory as displaylists. e.g.
The calculation for transforming the voxels in polygons is done very
simple, so no marching cubes was necessary for this. Afterwards, the
mesh is smoothed several times to remove the Lego-Look, and connected
Triangles are searched to generate Strips for faster rendering.
All Screenshots were taken on an AMD 1500+,GF4 4400, Linux/Debian
The program self is written in C++ and uses OpenGL as HAL.
[
little presentation to explain about the theory ]
[ screenshot mirror: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
|
A Voxel based 3D-Engine,coded
in 1996 by |
|
For new sound, the MUSIC.WAV - File can be replaced by another 2MB - 22khz - Audio File. The Engine runs in Protected-Realmode ( switches in Protected mode - set 4GB Segment Descriptors and goes back to Realmode; then the 4GB could be accessed from Realmode ) , so no Memory-Manager should be present , when the Program is started . ( so Win95 should choose the safe-command-Prompt - Option at startup ) |
|
|
OpenGL |
OpenGL |
3DED for WIN32 This Editor supports:
|
DOS - Version of 3DED
3D-Jump'n Run
This Game Editor is a Sample for a
3D- Jump'n Run Game ( The Source includes the Editor and a Subroutine to
show the Scene ) . The Texture routines are written in ASSEMBLER
and linked in the Pascal code . It can be contolled by Mouse and
Keyboard. The Engine is very simple ( the Scene could not be rotated )
but very fast ( The Texturefunctions are written in Assembler ).
It was done in 1995 by me.
|
|
1K-3D-Engines
These Engines demonstrates, what
coud be done, with alround 1K-Sourcecode. They use the Pulsar - technic
to render the Scene. It is steered by mouse and was codedby me in
Pascal . If you have Problems with the Runtime-200 Error, try this Fix. ( Happens above 266 Mhz )
( 1998 )
|
|