17. The Softimage Siggraph Sprint
In June of 1988, when I visited the company, Softimage consisted of Daniel Langlois, Mike Sweeney, and another developer. I was given a demo of the software, and we spoke at length about the future direction and goals of the company during an after-lunch stroll on St. Laurent street, where an outdoor market was taking place.
What was then called Softimage 4D Creative Environment was written in C, and consisted of a GUI, a polygonal modeler, and Mike’s rendering software, all running on the SGI/IRIX platform. Daniel was planning to introduce the software at Siggraph 1988, in six weeks time, and they had no animation software. Was I interested in joining the company to develop the missing “Motion” module?
At that point in time, having recently completed the development of the Neo-Visuals animation software, I was uniquely qualified to take on this task. The company’s vision — animation software for artists — resonated with me and I accepted the offer.
So began a development sprint with Siggraph as the deadline.
I had to design and implement a 3D animation system and all the associated user interface from scratch. I also took on GUI development as the original developer of that code had left the company. One of the features I added early on was a Lisp Machine inspired status bar at the bottom of the screen which displayed the current operation and mouse button hints.
The company only had one SGI workstation (I think it was a Personal Iris) and several ASCII terminals connected to it. So I reverted to my MIT hacking ways and began working nights when the office was empty and the workstation available.
The company office was located in downtown Montreal, above a popular night club, so some memories I have of those days include programming in the dark to the beat of the music from downstairs while the entire office would slowly fill up with whatever white fog they used in the club, as it seeped up through the old wooden floors. When I would leave the office some time after midnight, I had to squeeze by the party people lined up outside, waiting to get into the club.
I completed the software in five weeks, with a week to spare.
The “Motion” module allowed for the key-framed animation of models, lights, and cameras. There was an interactive curve editor with Bezier-style handles, and even a constraint mechanism to establish and maintain geometric relationships between objects. My explanation of the animation curves being mathematical functions led to the introduction of the term “f-curve” in animation jargon.
We were all set for our debut at Siggraph 1988 in Atlanta.
Design & Code
I often start a new class hierarchy by making the root as general as possible, and then seeing how I can implement the more specific functionality. Whether they need to be subclasses or can be expressed in terms (in this case) of init-fn
, update-fn
, and data
.
For the pathmaker and sweep animators, I have chosen the latter route, though I may change my mind. I don’t know if the use of (data anim)
in update-sweep
is a clean interface. I am making an ad-hoc data structure from a list, which is nothing more than a quick hack from when I was developing the code.
I’m also not sure whether the animators should add their generated shapes to the scene, or whether that should be done elsewhere.
In the spirit of prototyping, I will leave this as is for now, and not over-think it.