Virtual reality software development with MacOS X
I love my Macs, but I've always been more of a unix programmer. I did buy CodeWarrior to do some simple stuff with MacOS 9 during my first year of graduate school, but it quickly became apparent that the type of software development I did just wasn't feasible with the traditional MacOS. Things were just too different, and I really didn't like how a simple programming error could crash the entire system. That was fine, as I used my Mac for plenty of things other than software development.
When Apple announced MacOS X, I was elated. I finally had a strong command-lien with a gorgeous interface! I've been a MacOS X user since the Public Beta, and I find that I can been more productive with MacOS X than any other operating system. I can work on code in Emacs, rsync and ssh source to IRIX machines, run some X11 tools, and still fall back to MS Word and Adobe Photoshop when needed.
Macintosh hardware has not been used much for VR. Well, hardly at all. This page details some of my own experiences. My initial efforts were an early version of ImmersaView for the GeoWall project.
Apple has provided a great suite of development tools, and I especially love how every boxed copy of MacOS X includes them! There are a few other tools that I find very useful:
Since MacOS X is based on FreeBSD, it has all the hard-core goodies under the hood. There are POSIX threads, POSIX shared memory and semaphores, BSD sockets, and a lot of other really good stuff. There are compatibility issues.
MacOS X IPC support is a little schizophrenic. SysV IPC is present, but the kernel restricts it significantly. Any serious use requires increasing kernel settings. These values now appear to be in /etc/rc.
# increased by css 2002-09-22 # sysctl -w kern.sysv.shmmax=4194304 # sysctl -w kern.sysv.shmmin=1 # sysctl -w kern.sysv.shmmni=32 # sysctl -w kern.sysv.shmseg=8 # sysctl -w kern.sysv.shmall=1024 sysctl -w kern.sysv.shmmax=41943040 sysctl -w kern.sysv.shmmin=12 sysctl -w kern.sysv.shmmni=320 sysctl -w kern.sysv.shmseg=96 sysctl -w kern.sysv.shmall=1024000
POSIX IPC is present, but only in the named formed.
I found UNIX Network Programming Volume 2: Interprocess Communication to be extremely useful for understanding POSIX IPC. I have a patch for the book's source code that allows it to compile on MacOS X.
As a VR developer, I usually spend my time on application development. I want to make sure that my app can do what I need it to. Scene graphs really help in this regard. I have extensive experience with Open Inventor and SGI Performer, but only the former is any bit of a choice on MacOS X. I created a patch to compile SGI Open Inventor on darwin systems, although it looks like most of these changes have now been directly integrated into SGI's main source code repository. Coin3D is an open-source library with a lot of extra features and better MacOS X support. I'm a big fan. :)
The question remains, what else is needed for VR development on MacOS X? The biggest issue is that of hardware. Simply put, the graphics cards need more punch. There needs to be better stereo support. The blue-line method means a line has to be drawn on the screen in blue. It would be better to have a hardware DIN-3 connector that provides a direct stereo TTL signal.