(Masthead) The Antic Cyber Graphics Software and the Pre-History of Autodesk 3D Studio and Discreet 3ds max

Cyber Control

Cyber Control was an add-on Atari ST “desk accessory” for CAD-3D created by Tom Hudson. Cyber Control contained a text editor and script interpreter based on the BASIC language that could control CAD-3D’s renderer. With Cyber Control, the user could learn to write fairly simple, re-usable BASIC programs that could produce more sophisticated animation from CAD-3D than was possible by hand. Cyber Control scripts could also be used to create 3D geometry (see the section on Darrel Anderson’s design disks), and create and manipulate cameras and lights.

By the time Tom Hudson was developing the second version of CAD-3D, he obviously had Cyber Control in mind; indeed it was released merely six months after Cyber Studio’s debut. He explains in The Catalog:

As CAD-3D 2.0 grew into a powerful animation system, I realized that truly complex animations would require a scripting language for proper control. I purposely designed Cyber Control as a BASIC-like language so anyone could pick it up quickly.

When activated in CAD-3D 2.0, Cyber Control takes over full control of all functions, creating and manipulating objects and cameras (yes, three different ones). Its primary use is as a cinematic motion-control script language, but its flexible nature makes it an ideal “front-end” for CAD-3D so you can write your own BASIC-like programs that use CAD-3D as a “graphic engine!”

CyberControl’s script editor with sample BASIC code and a rudimentary dialog box for entering parameters into a running script

Tom explains the development process:

It was pretty much from scratch. I had an expression parser that I had developed in college for a final project that I dusted off and used to handle all the various mathematical expressions; the rest was all specially coded for Cyber Control.

The desk accessory interface I used in my GEM products was a lot of fun. I found out about it one day while looking through the GEM manual and decided to try using it in DEGAS. I was worried that it wouldn't work because GEM on the Atari ST seemed to be kind of hit-or-miss on implemented features, but it did work. DEGAS used it for access to the various bitmap buffers, and CAD-3D went far beyond that.

The CAD-3D accessory interface used the GEM communications pipe. A desk accessory could tell CAD-3D what to do using a simple 16-byte (eight word) message. Basically, CAD-3D exposed just about every function it had, allowing plug-ins like Cyber Control to take complete control over the application.

I can’t think of any other people who used the interface for commercial products beside me, but I assume some did.

One of the most important features of Cyber Control was that it freed up the camera to move through and around the 3D scene, whereas someone manually creating animation in CAD-3D 2.0 was limited to viewpoints outside the scene looking in. Making camera movement practical to choreograph in Cyber Control was solved by providing tools for calculating 3D motion paths. The user defined locations in space they wanted the camera (or another object) to pass through -- often by visually placing little marker cubes throughout their scene in CAD-3D -- and Cyber Control calculated the points in-between. The motion paths could have sharp corners (linear) or be smooth (spline).

Cyber Control also included rudimentary tools for automating the relative rotation of hierarchically linked objects. The user could define a set of objects to link, including pivot points (joint location). After subsequently specifying rotation commands on individual objects, the user could call a function that propogated the changes to the object’s children. All the calculations were performed relative to the objects’ state as stored on disk, so the script had to reload the geometry for each frame of the animation. For a good example, see the walking characters on the Cartoon Design Disk: Cyber Control’s hierarchical tool keeps the arms and legs together as they swing through their respective motions.

CAD-3D scenes with Cyber Control-generated shadows

Like images and animations, Cyber Control scripts were shared and exchanged amongst members of the user base, particularly on CompuServe. One of the most popular scripts that emerged from the community created all the “shadows” you see in the animations on this site. Those shadows are actually automated duplicates of the geometry that have been flattened in a direction that approximates (sometimes better than others) the direction of the light source. CAD-3D’s lights were not otherwise capable of producing shadows.

Postscript: Cyber Control after the Atari

Although the Cyber Control language ended up being central to producing 3D animation with the Cyber software, a script language did not become available for 3D Studio until relatively late in that product’s evolution. Like CAD-3D 2.0 before it, 3D Studio had a totally open API, but the development focus for 3D Studio was on creating plug-in products and—for that matter—finding friendly, graphical ways of accomplishing everything that had required a script for CAD-3D.

The core of the Cyber Control language was eventually recycled and extended by Tom, Kyle Peacock (ex ANALOG) and myself as a series of plug-in script languages for Release 4 of Autodesk 3D Studio. The first of these languages was the key-framer scripting language Keyscript, which shipped with 3DSr4. Keyscript was followed with an add-on product, The Script Extensions, that added language modules for modeling, image processing, shading, and file I/O.

3ds max has a sophisticated script language that has no relation to Cyber Control, although the pattern of maintaining an extensive software API began here.

Interpreter

A program that reads a sequence of instructions (another program, or script) and executes them in sequence.

Bitmap buffers

The term “bitmap” is commonly used (arguably incorrectly) to refer to any kind of digital picture. A bitmap buffer is simply a place in memory set aside to hold one or more pictures.

Application Programming Interface (API)

A feature of a program that enables another program to communicate with and control it.

BASIC

A computer language designed by Dartmouth computer scientists in the 1960s to be easy to learn and use (intended for students as an introduction to computer programming); virtually every general computer system since has had at least one variant of BASIC implemented for it. The language has evolved into various forms over the decades, perhaps most notably those produced by Microsoft starting in the late 1970s.

Desk Accessory

Different operating systems have used different approaches to managing types of programs that hang around (“stay resident”) while the user is working with an application. Often these co-existing programs are intended to complement applications in some fashion. In the Atari ST’s TOS operating system, such programs were called “Desk Accessories”, because they were often accessed from a drop-down menu on the desktop display. The comparable feature of a modern operating system is a “service” or “daemon”.

Face

A set of three or more vertices connected to represent an arbitrary surface (or more commonly, a facet of a surface). Faces are a ubiquitous building block of 3D computer graphics.

Vertex

A point in space, defined by numbers, of two or three dimensions. Vertices are a fundamental building block of 3D computer graphics.

GEM and TOS

The operating system of the Atari ST-series of personal computers was called TOS (Tramiel Operating System), which was a superset of Digital Research’s GEM (Graphical Environment Manager) system. In short, it was responsible for the Macintosh-like features (windows, drop-down menus, the mouse pointer) in most of these Antic software products.

Path

A path is a mathematically-defined (usually drawn by the user) route through two or three-dimensional space that the computer will use for some purpose. In 3D computer graphics, paths are most commonly used either to dictate the movement of an object within a scene or to provide a flexible axis on which the object’s own geometry is built.

Spline

A smoothly curving path (in two or three dimensions) through space calculated from three or more fixed points, often specified by the user.