Beebug


Real-Time Graphics System

Author: Geoff Bains
Publisher: Silicon Vision
Machine: BBC B/B+/Master 128

 
Published in Beebug #50

Graphics packages for the Beeb always seem to attract attention, and the Real-Time Graphics System from newcomer Silicon Vision is no exception. The graphic and animated Geoff Bains articulates.

Real-Time Graphics System (Silicon Vision)

Probably more Beeb users have bought their machine for B of graphics capabilities than for any other reason. One package that over the past year and a half has proved the value of the Beeb's display and speed is the 3D Graphics Development System from Glentop Publishing (see review in Beebug Vol.4 No.5). This package has now been enhanced by the author to produce the Real-Time Graphics System. This not only allows complex 3-D wire-frame objects to be created, but permits these to be animated at high speed.

Much of the new package is similar to the old. However, the Real-Time Graphics System is supplied on a 32K ROM (supplied as a single ROM on a carrier board) and no less than five discs. Not only do you literally get more for your money (ROM, five discs and a manual), but the capabilities are much improved too. The Real-Time Graphics System is not just 3D design and display software, but a complete real-time animation language.

There are two distinct parts to the Real-Time Graphics System. The first is the object model design software. This is largely unchanged (in operation, at least) from the previous package. The second is the real-time animation of 3D objects.

The designer is menu-based with constant checks against operator errors. Every move must be selected twice, first from a master menu and then again from a submenu which includes a backstep option. This gets very tedious. However, it does mean you are unlikely to accidentally wipe out a model full of data.

The system deals exclusively with wire frame projections on the screen. Such models are created in terms of 3D co-ordinates for each vertex of the object. These are entered into a table along with data to specify whether it is a move-to or draw-to point, a dotted or solid line and the colour used.

This is the hardest part of using the system. Entering any remotely complex object is not simple, and usually calls for the intervention of graph paper. It is a shame more help in this direction could not have been added. Something along the lines of Design Dynamics' Interactive 3D would be most useful. However, as we shall see, the way the model editor works reduces the data that has to be entered in this way.

Once the data is entered it can be listed, saved to disc, or edited in a simple step through fashion. The model can then be viewed. The viewing display is a mode 4 screen with a menu and data display down one side leaving a square display area. On this screen the model can be viewed in any position, from any angle, at any magnification, and with any perspective viewpoint.

With a suitable viewpoint selected and the other parameters set up as required, the view can be dumped to disc ready for dumping to a printer (an Epson compatible dump routine is included). The software usefully prompts for a single character to follow the core name of 'CADpnic' for the saved screen. This means it is easy to cycle your model through a series of transformations saving a film frame at each stage.

The data for any small model can be translated and scaled or even rotated about an axis to form a 'solid of revolution' before saving it as a 'macro'. Just as assembler macros are used to build up complex assembler programs, So these are used to build up complex models. The data for simple shapes such as circles and squares is all you need enter into the data tables for many models. By judicious use of these shapes, the user can build up a more complex model with all the hard work done by the software.

When you have finally built up the shape you want and viewed it from every conceivable angle, you are ready to make use of the Real-Time Graphics System's other half. The ROM contains a number of routines to make use of the model data, and this is where the real-time nature of the software really comes in.

The ROM contains routines to plot perspective views of a model viewed from any angle and with any scaling or translation, all at breakneck speed. The Real-Time Graphics System ROM also has the facility to swap automatically between two mode 4 or mode 5 screens (there's no room for two screens in modes @ to 2), drawing on one while displaying the other, and allowing very speedy and flicker-free real-time animation.

To draw a view of the model, the requisite viewpoint, scale, perspective value, and translation must be supplied to the ROM routines. This is where the system falls a little short. The Real-Time Graphics System communicates with Basic (or machine code) via a parameter block containing all the values defining the view of the model. To change the viewpoint the relevant value is changed either directly (a tedious process, but the only realistic one from assembler) or by using Basic variables such as xrot%, yscl%, and so on (only a little less inelegant).

Wwhen the Basic variables are used, a star command must first be issued to tell the system to get the new value from the Basic variable store and pass it to the system parameter block. This process can be made automatic but that slows down the calculation and drawing of the model a little as all parameters are transferred, unchanged or not.

By method of directly passing parameters would be infinitely preferable. Something like *XROT 30 to give the value of 30 degrees to the X-axis rotation would be much easier to deal with and avoid the need for a wasteful Basic program header required to 'declare' all the Basic variables for the benefit of the ROM.

However, things are made easier by the numerous sample programs given with the Real-Time Graphics System. After a study of these, the technique of using the system soon becomes clear. The demonstration programs include several stages in the development of a program to make a pyramid perform a complex revolving dance. Each aspect of the abilities of the Real-Time Graphics System are introduced one at a time.

The final result, which makes use of the system's own integer variables, automatic parameter transfer, reduced window size for faster clearing and dual screen operation, is very impressive. It is fast and smooth, reminiscent of the Aviator and Elite school of machine code games.

Things become more difficult with several models on the screen at once or with a more complex model. The limiting speed of the system is soon found. However, this is bound to occur with this kind of software. It is a generalised program for all applications and so it cannot take advantage of the short cuts, used by games for example, in specific cases.

For more specific use, the primitives used by the system are also available to the user. As well as the individual commands for each aspect of a model's transformation from 'raw' data to a perspective projection, the actual 3D co-ordinate calculating routines are accessible (though only via the parameter block system), and commands are provided to select between dual screens for both drawing and display.

A set of 3D co-ordinates is passed to the system via some Basic variables, the relevant star commands issued to complete the transformation (having set up the parameters for that, of course), and a *CALC command issued. Further Basic variables then contain the transformed 3D co-ordinates and the projected screen co-ordinates for use as required.

For writing your own display routines or (from assembler) for passing data to a plotter or external display board, nothing could really be simpler.

The whole package is supported hy a 100 page manual which confirms the package's history. This is split into two parts, the first dealing with the 'old' software - the model editor and associated programs - and a new section dealing with the real-time display language.

The first section is largely the Glentop package's manual (with all its faults) reproduced in a cheaper form. The second section is much better with far more in the way of useful examples and plenty of explanation of the demo programs. However, the whole documentation is lacking direction. It is only when you have read the whole work that you begin to see what the package is capable of and how to go about applying it to a problem. Then you can go back and learn the nitty gritty of actually using it. You get there in the end but it is hard work.

Nevertheless, this is a truly powerful piece of software. Although several aspects of the software reveal it as a program for 'programmers', it can, with effort, be used by comparative newcomers. For anyone interested in wireframe modelling or fast animation on the Beeb there is no other software to rival it.

Vital Statistics

Product: Real-Time Graphics System
Supplier: Silicon Vision, 47 Dudley Gardens, Harrow, Middlesex HA2 0DQ. Tel: 01-422 2274
Price: £79.95

Geoff Bains