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.