CAD and Haptics
My first real commercial job was at a startup called SensAble Technologies where I worked on FreeForm for around four years. FreeForm was a software and hardware system which simulates “virtual clay”. FreeForm is still available today, 20 years later, but it’s now sold by 3D Systems.
A very detailed model carved with FreeForm.
FreeForm was a complex application written entirely in C++ with close to a million lines of code. I worked on many aspects of FreeFrom from the UI to graphics to haptics. I was a member of the four-person architecture board, who advised on major initiatives in the codebase. We learned many lessons about design, architecture, code quality, performance and testing, plus user interfaces and the user experience.
FreeForm was often used to make toys built out of parts.
When you buy FreeForm you are also buying a haptic device called The Phantom. The Phantom looks like a pen or stylus on a robotic arm. The device contains sensors and motors which simulate real physical interaction. When when you push on the virtual model it feels real. When you “carve” the mode, you can feel the material being removed out from under you. It’s quite a striking effect, people tend to be amazed when they first use it.
FreeForm plus the Phantom cost around $10,000 at the time.
With computer graphics the goal is usually to refresh the screen at least 60 times a second, which means you have 16.7 milliseconds to generate the next frame. The Phantom however had to be updated at 1000Hz to generate realistic forces, so you only had 1 millisecond to calculate the output force!
We used a large number of performance tricks and optimizations to run that fast including the little-known Fiber API in Windows. Fibers are basically primitive co-routines, a language feature that’s hot today in Go and Python for example.
I worked at SensAble on FreeForm for just over four years. The same length of time as a college degree, but laser-focused on developing on one piece of software. It was a great way to kick off a career and I still keep it touch with many of the people I worked with there. In fact I worked with several of them later at MetaVR. I left SensAble in 2003.