About me

Vladimir Nabokov

Books
Programming
Biochemistry
Aim | Communicate

Search
 


 

 

   
Letters from Terra - Life in water warmed by sunlight
 
 

     
 
 

     
3D engine using BGI graphics - click for more screenshots
 
 
     
Early 3D work

My 3D project has been one of my longest running obsessions, and has been the source of infinite frustration as well as the almost inexpressible satisfaction I have in viewing the progress I have made since the original BGI graphics version, pictured left. The 3D engine is one of the few projects that is based entirely and exaustivly on my own code and formulations, invented by myself and verifyed mostely by crude experiment (measuring objects at distance using finger widths) and, most importantly, by trial and error. Amazingly, the original 3D engine for perspective, manipulation of polygons and rotations is still intact, although the latter has ben converted to assembler for the Pentium FPU to aid frame rate. The project devoloped from a simple attempt to display solid polygons in an unconvincingly lobachevskian curving 3D world, into using much fast quadrilateral polygons in MCGA; and on my assumption of the use of assembler, the introduction of a simple (and very fast) form of texture mapping of my own invention, which I emplyed in several small programs, including an embryonic space sim. The algorithm controlling perspective has been revised numerous times, and I became quite preoccurpied some time ago with finding the exactly correct mathematical method for modelling particles in a 3D world projected on a 2D screen. It was surprisingly difficult to convince myself that a linear model was what was required, and the latest version of the engine demonstrates the immediate intuitiveness of this system. The original 3D engine was built into a small (and rather whimsical) demonstration for distribution that is available for download; but sadly the source files for the further revisions have long been archived into obscurity, and I have not been able to obtain working demos of the many evolutionary stages between the saltatory screenshots you can see on that page. In many ways, the 3D engine has always been my purest project: despite aspirations of creating an RPG or a simple first-person shooter, the main satisfaction has been creating a home made and entirely accurate 3D environment, and optimising the code to allow me to run it on my motely selection of computers. The 3D engine indeed was my introduction to the world of optimised coding - previous projects, such as Trooper I or Faculty were graphically simple and sprite based to the degree that code was usually required to slow them down; and the abstract, purist code I learnt to write whilst working on this project I am convinced formed the basis for my later work with the MCGA and SVGA graphics engine, as well as the inspiration to continue with developing the working texture mapper and a fast, smooth intuitive 3D world. Available for download are the original 3D demonstration, a simple demo of a space shooter that nicely shows off the older texture mapper, whilst also revealing its limitations and inaccuracies in tha matrix engine that have been solved in the latest version, and a simple 3D cube demo that was used to test the engine. In addition, a more advanced version is available for download for comaprison, making use of the genuine (if still bugged) texture mapper, lighting effects, and fast assembly procedures. Source code and images are included with all programs, and I've taken some screenshots for your viewing pleasure.

 
 
Letters from Terra | Updated 15th December 2004 | By Jonathan Ayling