21. From Kyoto With Love Via Austin
Systeme Taarna was a tight Montreal-based, research-oriented, 3D graphics company founded by Pierre Lachapelle, one of the creators of “Tony de Peltrie.”
I approached Pierre about joining the team and he was receptive to the idea. I don't know what possessed me to do so, but I asked if I could develop my code in Common Lisp. He was equally receptive to that idea.
The company, consisting of Pierre and three or four developers, was focussed on 3D tools for character animation. The first project I proposed was to develop a system for facial animation, which I had some ideas about.
But actually the first project I had to tackle was to get Common Lisp running on their SGI workstations. Queue AKCL, which I ftp’ed and — after some hacking — managed to compile. I fired up Emacs and I was off building what in retrospect we’ll call LGS-2 — Lisp Graphics System 2.
The Taarna software architecture was very interesting. The loosely coupled suite of tools, written in C, descendants of the software which had animated “Tony de Peltrie,” was based on a shared memory system. It made everything very modular and decoupled.
I developed my CL code separately from the rest of the system, visualizing the results by writing out “obj” format geometry files which I then imported into the Taarna viewer.
I developed code for generative modeling, for layering deformations on a polygonal mesh, and for encoding facial expressions independently of the underlying mesh topology.
The Taarna offices were located in Old Montreal — a beautiful historic site on the St. Lawrence river — across a narrow cobblestone alley from the Notre-Dame Basilica. Coming to work each day meant navigating my way through busloads of tourists. I didn't mind at all.
Design & Code
I have been working on encoding plant attributes in a way that lends itself to genetic algorithms (and maybe even genetic programming).
This work-in-progress code shows the initial attributes I have been testing out in the new flora-animator
class.
The mutations currently consist of varying numeric values, as seen in mutate-number
and mutate-number-list
. The branching probability, for example, is a distribution function which initially promotes branch creation along the second half of the length of a branch.
I plan to add and test more attributes using this scheme. Genetic programming — where the structure of the attribute s-exp changes — is a bigger challenge. Not sure how to encode that yet.