Next Up Previous Contents Index
Next: Electric Malcolm Up: The Autodesk File Previous: Equipment List

Low Rent 3D


Here's the first concrete proposal to add three-dimensional capability to AutoCAD, from September of 1983. We did not embark on the mad rush to 3D that this proposal urged. Instead, we deferred implementation of 3D until AutoCAD 2.1, which we previewed at COMDEX in 1984, 14 months after this paper was written, and shipped, and shipped again, and shipped yet again, in May of 1985, 17 months later. The 3D Level 1 that we shipped in version 2.1 was, in some ways, more limited than that proposed herein. It would be interesting to know how history would have unfolded if we'd done this.

Low Rent 3D

Proposal by John Walker -- September 5, 1983

If Autodesk is to prosper, it must continually enhance its products and introduce new products. This becomes especially true as other people introduce competitive products. To maintain market share and keep the price up, adding capabilities to the package is the foremost technical contribution that can be made.

With the features scheduled for the 1.40 release, plus the items which we hope to have in 1.5[Footnote] (notably dashed lines, double walls, and some form of attribute collection and dissemination), we will have accomplished most of the goals inherent in a 2D drafting system.

Many of our competitors (MCS, Nelson Johnson, ESC), have or will be introducing 3D packages around the time of COMDEX. If we do not have a credible response to queries about 3D, we may be in trouble selling our package. While all drafting is 2D, and almost all users will spend all their time with AutoCAD working in 2D mode, 3D is important more from a marketing perception standpoint than a technical one.

First, there is the natural tendency to evaluate a package from the features it has, and a package limited to 2D cannot look as good on a cursory examination as a 3D package. Second, many companies will reason, ``look, all we need is 2D today, but who knows about tomorrow; we better buy a package that has 3D just in case rather than get stuck with a dinosaur''. Note that this applies even if 3D is an expensive option that they don't buy at all: just knowing it's there may clinch the sale. Third, 3D demos beautifully and is an extraordinary sales tool. The impact of rotating an object in 3 space at COMDEX is many times that of zooming in on a flat drawing.

What I advocate here is a particular way of adding 3D to AutoCAD. I think that (from my very limited knowledge of the 86 version internals,[Footnote] remember) it can be done in a limited time without disrupting the other development in progress concurrently. This is a prime consideration--we cannot afford to stop other development while somebody rips the package apart and changes everything for 3D. The method imposes restrictions on the use of 3D which I feel are acceptable, and puts no large barriers in the way of removing the restrictions in the future. Virtually none of the work done in installing this package will have to be discarded when we go to full 3D.

OK, loudmouth, so what is it you're proposing anyway?

The idea for Low-rent 3D is to allow 3D representation of objects but restricting these objects to lie in one or more planes in 3 space. The planes are completely arbitrary, and are not restricted in any way. These planes map into our layers. For each layer you get to define its origin point (e.g., where the coordinates 0,0 on that layer are in the master X,Y,Z space) and the orientation of the plane (by 2 other points, angles off the axes or whatever).

When you're drawing, you're simply adding entities to that layer in terms of the coordinates in that layer, and that's how they go into the drawing database. There are no changes to EACQ or entity-generating commands.

When EREGEN generates an entity, it generates vectors as currently done. It passes to CLIP the endpoints of a vector to draw in the plane of residence of the entity. There are no changes in EREGEN.

When CLIP receives the endpoints of a vector, it maps them from the coordinates in their layer of origin to their true 3 space coordinates. CLIP is of course rewritten to do a 3D clip and perspective (or isometric or whatever) transformation onto the screen. I suggest that at the same time we enhance CLIP to support multiple views on the screen--merely additional projections from a table.

Since everything is ultimately turned into vectors in a flat plane (the screen), the refresh file doesn't change, and you can pick items on the screen as always. There are no changes in the refresh file, entity selection, or EID-related commands.

So, basically what we're changing here is this: We add a plane location for each layer in the drawing. We provide a command to let you specify (and move) this plane (probably heavily oriented to things like ``I want a plane just like that one but with Y 10 greater'', but maybe with a different syntax). This same plane specification mechanism is used to specify the viewing (image or screen) plane. For the viewing plane, we also need to specify a clip depth and transformation (perspective, isometric, how many vanishing points and where, etc.). We rewrite CLIP to, from real endpoints and a layer number, generate the true 3D coordinates and clip and project that vector on the viewing plane. We enhance GRID and cursor tracking from the digitiser to map through the transformation so that movement in the entry plane displays correctly on the screen.

And that's it.

Now notice just how modular this all is. We should be able to whip it off and integrate with little more trouble than any of our other development projects. And with nothing like the grief of ``Well, we start by changing all the entities, then...''

But will it be useful? Yes, I think so. Look at most of the 3D demos you see in the literature or in our competitors' handouts. Think about drawing them in a system like this, and I think you'll agree (I exclude solid modeling systems, of course). Most 3D objects are built up of planar pieces, and I think can be represented in a system like this with little pain.

There is one addition I'd like to propose for this package at the inception: the concept of extrusions. With every layer would be an extrusion depth. If zero, this would have no effect. If nonzero, then when CLIP processed a vector, it would actually generate internally and clip 4 vectors, one in the plane, one in a parallel plane offset by the signed extrusion depth, and two connecting the two vectors in the planes. What for? Look at the gear on the cover of PC World. It's also neat for things like city skyline modeling. Obviously it can reduce the number of planes you need for lots of things.

Finally, I'd like to point out how little of this needs to be thrown away when we go to a full 3D (space curve wire frame) package. We add Z coordinates to all the entities and rip up EREGEN (e.g., I want this text written on that cylinder over there). But we end up passing 3 coordinate pairs to CLIP, projecting them, and viewing them, and all the code we do for that is used unchanged. We still need to specify viewing planes, so all our code for that gets reused. We will of course leave the low rent 3D package in, as it will, I think, serve as a friendly bridge between the second and third worlds.

It's my feeling that the magnitude of the task we're talking about here is comparable and very likely less than implementing the major additions packages we have underway or recently completed (crosshatching, circle generation optimisation, line types, fillets, etc.). And no other single addition will so well enhance the perceived value of AutoCAD, or its ability to sell itself at shows. Just think of the difference in our COMDEX literature of ``Now with 3D'' versus ``Now with crosshatching and dashed lines''. I think we should discuss this and if no major technical barriers are seen, go for it with a goal of introduction at COMDEX and shipment within 30 days thereafter. We can then let the market response tell us whether we should invest the work immediately for a full 3D package.

We can probably get away with a stiff price increment for this thing. If people pay $500 for the piddling dimensioning code, I think an extra $1200 for 3D is not inconceivable. I have absolutely no idea, however, how many we might sell or what the price/sales curve would look like. If Nelson Johnson is to be believed (!), though, hundreds of people are willing to spend $400 for a 3D package that is completely useless. And that with little advertising on just a few machines. So I think this can be a powerful revenue generator as well.


This drawing is a direct descendent of the first three-dimensional demo drawing that Duff Kurland put together for the introduction of 3D Level 1 at COMDEX in 1984.

Next Up Previous Contents Index
Next: Electric Malcolm Up: The Autodesk File Previous: Equipment List

Editor: John Walker