Some funny three-dimensional computer graphics expirience of Todor Arnaudov (a.k.a TodProg, a.k.a. Tosh )
 
Version 0.72alfa for PC (June 2001) |
---|
*Tetragon primitives |
*Graph Mode 320x200x256 |
*Z-Sorting (slow and buggy) and imitation of "flat shading" |
*Frame Buffering |
*Can convert small BMP files into 3D objects |
*No multiobjecting |
*Has option for drawing simple 3D-objects |
*Simpler environment than 0.713 |
*Some experiments with 3D-objects, created by mathematical functions |
 
 
Version 0.713 for PC(Year 2000) |
---|
*Polygonal Rendering |
*Fixed vertices count (using tetragons) |
*Multi objecting |
*Filling (texture-mapping under construction...) |
*Deformations |
*Fast creation of simple 3D-objects by drawing |
*Used resolution 640x480x4bpp (there is experimental version for 640x480x8bpp,too) |
*Mouse and keyboard interface |
*Some experiments with 3D-objects, created by mathematical functions |
 
Do you remember 1992? That was a special year for me, at the age of 7-8.
I faced for the first time with DRIVING YOU CRAZY computer 3D-graphics when "Terminator 2" came out into Plovdiv moviehouses (early 1992) and in the summer, when the Bulgarian National Television was showing the episodes of the unforgettable series "The Captain Power and the soldiers of the future". [mankind's last hope ;-)]
The spectacular images in the two movies were "mind-blowing" for me in the year of 1992 [still are] and, from the distance of time, I think they were important POWERS from all those that directed me into computer creative working that I call "computer loving" or "Smetacholyubie" in Bulgarian, which means love in the creation with the machine.
However, some years had to pass before the real "creative fun-working" begin
Not just fun-"working", i.e. playing with arcade-machines,pocket games,TV-games; dreaming about computers, drawing sketches of "computer devices", reading books; programming on paper, inventing different kinds of codes on paper (e.g. how to code an image), drawing single pictures and amateur comicses with "Terminators"; watching with "love" computer exhibitions, writing stories, connected with computers, and so on.because, unfortunetely, I wasn't such a lucky boy to be able to have any, even 8-bit, programmable machine in the year of 1992.
The programmes discussed below, until I did not mention other, were created on my "Pravetz-8M", Serial Number 84011/1986. That's another exciting [me] thing, because that machine is, in many aspects, similar to those of the 60-ies computer-graphics pioneers in its calculating speed and Random access memory capacity. If you don't know what is Pravetz-8M, it is an Apple//e compatible with main CPU 6502/1.02MHz and secondary one Z80;high resoultion at 280x192.
About 63 KB of changable data storage are available, from which 47 KB are easily accessible; from them about 35 KB remain free after loading DOS; from these 35 KB at least 8KB must be reserved for one high-resolution page.At last, you've got about 27 KB of RAM remaining for the programme code and the data.
For the dessert, the graphical memory page is deeply non-linear and complex, because it was made to lighten the hardware implementation of the video adapter; of course, that decision has a by-effect: the programmer is much more troubled when writing low-level graphics (if he dares to) than, for example, when working with PC's VGA simple linear mode $13.
I recommend you visiting http://bulgariancomputers.freeservers.com for technical details about this and others Bulgarian computers.
The time passed and it was about 1996 or early 1997 when I invented one tricky "spatial" algorithm, which rotates a triangle.
It first "closes" an "open" triangle, then "opens" it, then "closes" it again etc. Mathematically, the programme changes the angle of one isosceles triangle and convert it from an obtuse angle to an acute angle and vice-verse. If the trick is made smoothly frame-by-frame with little step, the observer has feeling the triangle is rotating into the depth.
Around 1997, entire 1998 and early 1999 I've made many two-dimensional vector experiments with drawing, translating, scalling and transforming routines.
Some of the programs were targetted to be 3D, but they managed only to resemble to the spatials.
For example the pictures below were taken from a programme named "Paral gl 3D".
"Gl" stands for "GLAVA" (HEAD in Bulgarian). You maybe guess: "Paral" stands for "Parallelipiped" and the thing above is supposed to be "a head"...
By the way I love dating everything (when I do not forget to do it ;-) and I find it's funny to know when everything have been happend. So, the first version of this programme, the "pure Paral 3D", without its "gl extenstion", was written at March 2-nd 1998; the "gl" extension was added in October 1998.
Actually you can even see few 3D-looking images from my first "demo-like" program (on Apple// machine) named "Krasivo" (Something Beatiful). I do not remember when I've exactly made it; must be 1997 or late 1996.
These pictures, however, are "number play", a game where you're seeking for good function between several variables to make them draw a beautiful image on the screen; it wasn't a 3D-engine.
Another weak place in my researches then was that as I was trying to find algorithms to show 3D-objects on the screen, the third dimension did not has its clear and unambiguous place in memory.
But yet, some programmes were able to stray the observer with static, not rotating, spatial-looking strange images, which looked similar to polygonal ones, rendered by "hidden line removal" algorithms.
That below is maximum stylized "corridor shooter" view... It was named "KORIDOR 3D I.XI.1998"...
Down is "TRI DIMENTIONS" (yes, with "T"). It's dated for 5. February 1999.
 
"PLOS-3D" was trying to simulate triangle rotation using only
several parameters for addition and subtraction. "PLOS-3D+" was bad imitation of
pyramide.
Down, you can see stupid pseudo-rotation of a rectangle from the programme "NEW GENERATION 3D" %-). The new thing in it was that it uses "sqiurs", i.e. figures targetted to be "rectangles in space".
Next is "SUPER 3D 99". It was the first 2D-3D-experiment where trigonometry was used for rotation.
Although that system was far away from the goal, the trigonometry was an important step toward it.
You can watch the movies shown on this page (to watch them MOVING) by pressing the "down arrow" or, better, smoothly sliding the scrollbar of the window.
Many expectations were burden on the engine, but I knew that it is still not the goal - maybe only fundaments of the target "3D-building". Thus the system had a prefix "PROBA" (a probe).
The series "PROBA TRIGONOMETRIC-3D" was very exciting discover in the summer of 1999.
This kind of 3D-drawing is very simple, but very funny, too, when you invent it yourself.
Let's explain how it functions:
Meanwhile I managed to create simple texture routine that fills, in some cases right, tetragons, not only scalling images on rectangles.
It was slow for real-time use (with BASIC interpretator on 1.02MHz 8-bit CPU), but good for fun and for recording short movies with my proud in 6502 assembly (machine) programming: the algorithms of raster-animation shot-and-play system "Video in Real Time", I developed in 1998.
Down you can see frames, extracted from an animation, made by rotating a simple texture - the letter "T", projected on a rectangle, rotated by "PROBA TRIGONOMETRIC 3D".
The engine "PROBA TRIGONOMETRIC 3D" was a big advance in my researches, but it still was not my point: POLYGONAL engine; a system, where the object is defined as a string of connected points, which form polygons; that's a way we can create any spatial figure and do any transformation with it, for example to translate it through the space and to rotate it about any choosen axis in the three dimensional space.
That was the most tricky part of my 3D-exploration experience and I asked myself many days, how can I do that.
Sometimes I was making "visual experiments" with one box for shoes, trying to find the function which defines the dependence of the coordinates by the distance from the viewpoint and how the visual coordinates change with the change of 3D-coordinates.
And once, in one of the last days of the declining summer '99 the ideas about how to make the engine to work came CLEAR!!!
A straight line, directed to the depth (choosen for Z-coordinate in my engine), strive for the display point i.e. {Verticon, Horizon}.
For example, if we rotate around the x-axis (the horizontal), the x-coordinates will NOT CHANGE while we turn the object; only the Y (height) and Z (depth) will.
Thus to rotate the figure around several axes, we must do it axis by axis, not all at once.
The formule I used in the beginning to simulate the perspective transformations was not the best, the possibility to divide by zero was a problem in some cases, but as the program on the Pravetz was used with small spaces, TRIGONOMETRIC-3D worked fine for such a complex program in BASIC for an 8-bit machine.
Funny is, that in the very first versions I still wasn't well grounded in trigonometry, so instead of reverse trigonometry (for example ArcTangent), I was using a spinning "feeler" with low and high resolution.
Low resolution "feeler" finds the angle roughly and turn on the high resolution one, which finds more precisely the angle that the measured point form with the axis, around which we want to rotate it. Of course, that way of searching is either slow, strange and not very precise.
The frames below are extracted from the first recorded 3D-animation, rendered by the real spatial graphical engine TRIGONOMETRIC-3D.
Until the end of 1999 "TRIGONOMETRIC-3D" was growing up fast. A routine for drawing LANDSCAPES was added. The engine keeps the data for such type of 3D-object not like a polygons, but in a special memory-saving type. However that complicated much rotation of such structure and the engine was able only to translate wireframe landscapes.
To rotate the landscape, the programme first converts it into plain polygon form, which, however, consumes a lot of memory, thus the landscapes to be rotated should be small.
Down is exposed one little "fly" over a landscape, generated by TRIGONOMETRIC-3D on a Pravetz-8M and encoded in a video-file by "Video in Real Time". The resolution of 70x40 in monochrome is little overloaded with lines which causes some difficulties in recognizing the third dimension, but if you stare at the images-column that you're playing with the scrollbar, you will see the motion.
In late 1999 I had got my first IBM-PC-compatible thus I began to make "TRIGONOMETRIC-3D" on it. At the beginning in Borland Pascal 3, several weeks after I had got 7, so I began developing the engine (and so on) on Borland Pascal 7 (with some ASM x86, sometimes).
I tried to port one lame version of the engine for Delphi-4.
Thus I switched my main researches into C (eventually C++).
If you wonder how these bloody pictures from Pravetz-8M (Apple//) were transferred to my IBM-PC, I must tell another story. In fact other two stories. One is about the emulators, and another is about
"How to stick two wires - one if you have not two - in two different kinds of computers and the magic to happen: data from the first machine to be sent successfully through the wires - or the single wire, in case you haven't two"
The answer is, of course, easily, in case you know what the first computer will "throw" to the wire and
what the receiving machine will "catch" from what the first has thrown.
I had that information and some years before now (middle 2001, actually) my good old friend
Pravetz-8M began to "throw" data through one or two wires, sticked into the sound-output (input), where
usually the cassette-recorder (microphone) should be connected.
The programme is named "Transferrer-8M" (actually "Prehvurlyach-8M") but since
I guess the probability somebody non-Bulgarian who reads this section to know Bulgarian is
very little, and the interface and handbook of the program are in Bulgarian (and Yunashki),
you will not be able to use it.
If you like to play with wires and the speed, you may like to use the programme of Vidyo Ivanov, which is about 15-20 times faster
than mine and has an English interface, but 6 wires are required to work with it and SHE wants you to be careful with HER, because your
lonely old Apple-computer will want you to touch him in some intimate places, where
probably nobody haven't touch them since it went out from the native factory...
Probably you've found already such utilities, in case you've got alive Apple-2
which is still in good shape, has tenderly scratching floppy-drive(s) and
diskettes not erased by the time.
You can find the programmes, if you want, by following the links on my personal page,
or if you write me on some of the addresses shown.
But, maybe I told you about these programmes just for the glory of Bulgarian Younaks.
And... for funny effect for the Bulgarian casual readers of that section. :-]
Don't know. :o)
   
Back to welcome page
© Todor Iliev Arnaudov 2003
Personal webpage:http://www.oocities.org/todprog
Site about Bulgarian computer technologies: http://bulgariancomputers.freeservers.com
Last ENORMOUSLY ENORMOUS changes: 3. October 2003.
"The Sacred Computer" - electronic magazine of the Society "Mind", Association for Bulgarian Language Protection and Bulgarian [transcription] younatzih: http://eim.hit.bg