March 28, 2007

SpaceNavigator: An affordable 3-D controller for Linux

Author: Nathan Willis

3Dconnexion's SpaceNavigator is a compact, programmable USB input device designed for 3-D applications. It's a six-axis controller that senses tilt and rotation as well as x, y, and z linear motion. The product was released in November, and this month 3Dconnexion (a subsidiary of peripheral specialist Logitech) announced initial Linux support, including preliminary application functionality and a software development kit.
The third dimension in all its glowing blue glory. Click to enlarge.

The SpaceNavigator comes in two editions: a personal edition priced at $60, and the standard edition priced at $100. The personal edition is supposed to be used for non-commercial purposes only, although the application support appears to be identical. But the standard edition does come with one concrete advantage: two years of free telephone support.

Thanks to no-cost apps like Google Earth, Google SketchUp, and Second Life, consumers are regularly exploring three-space these days. The SpaceNavigator is a good fit for them, since its price point is less than half that of 3Dconnexion's next cheapest 3-D controller, the similarly equipped SpaceTraveler. More expensive offerings range well above $300, making them popular with 3-D artists and CAD designers, but outside the reach of home users.

Getting started

To get the SpaceNavigator running in Linux, download the 3DxWare for Linux package from 3Dconnexion's Driver Downloads page. If you use the Maya 3-D editor, you can download configuration plugins for versions 8 and 8.5 from the same page. The 3DxWare package contains an installation script, text instructions, drivers, and two demo programs. During installation, you can choose whether to start the SpaceNavigator driver at boot time or manually start it as needed.

After I ran the installation script and it exited successfully, I found that the driver failed to launch, complaining of the absence of It was not listed in any of the instructions or online help, but a little digging taught me that this is a dependency on OpenMotif; to save yourself the trouble make sure that libmotif3 is installed through your distro's package manager. You can then connect the SpaceNavigator and manually start the driver with sudo /etc/3DxWare/daemon/3dxsrv -d usb.

Up pops the beautiful OpenMotif-based configuration dialog box. 3Dconnexion's devices are not configured like typical I/O devices such as keyboards or trackballs; take a moment to read through the configurator's built-in help. The short version is that every application with which you want to use the SpaceNavigator requires a custom plugin -- and currently, the only application with such a plugin is the 3-D modeler Maya.

SpaceNavigator driver and demo apps. Click to enlarge.

This puts Linux reviewers in a bit of a bind, as there is no demo version of Maya for Linux, and licenses start at $2,000. Under Linux, I was able to test the device only with its two demo apps. One, xvalue, simply reports the motion data read from the device (a handy reference for tweaking the sensitivity settings), and the other, xcube, allows you to manipulate a simple 3-D cube.

I tested the SpaceNavigator on Windows and Mac OS X using SketchUp and Google Earth. For these apps, the SpaceNavigator is both easy and fun to use. I had never found much use for SketchUp before, but the 3-D control makes it simple to use. It only takes a matter of minutes to get accustomed to the controller, and it is infinitely easier to use than a mouse. The only potential source of confusion is the fact that the device is circular, so if it is sitting askew, your hand motions may be off-axis. Subtle ridges placed on the four compass points of the controller are intended to avert such misalignment, but when you are first starting out it requires conscious thought to make sure you point it in the correct direction.

Linux support

With such obvious potential, the hurdle to overcome in the Linux market is proper application support. As it is, adding support for a new app requires directly coding in support for 3Dconnexion's official driver. The company is quick to reply to inquiries on its public support forum, even going so far as to poll readers on which apps they want to see supported. So far it looks like the open source modeler Blender and Google Earth are leading the pack.

For broad adoption, however, a more generic driver solution is required. The device is directly accessible as a generic input device using the USB Human Interface Device (HID) protocol. As was discussed in the forum, the proper solution is to write an XInput driver, thus enabling all interested applications to pick up and use the device via the XInput API. The same technique is already used to handle other non-mouse input devices, such as pressure-sensitive graphics tablets used in painting apps like the GIMP and Krita.

Unfortunately, although the 3Dconnexion software development kit (SDK) includes useful C headers, it is licensed under strict proprietary terms that make it incompatible with GPLed software. A 3Dconnexion spokesperson said the company has no plans to develop a solution for GPL apps. The company is supportive of community-driven efforts to build an XInput driver, encouraging developers to post questions to the forums and promising it will be happy to assist. If you read the Linux support forum, employees are quick to respond to questions, and repeatedly solicit input from users. They can't officially bless the third-party Blender plugin, but they do direct users toward it. Thus it seems unlikely that a community-created XInput driver could make it onto the official driver downloads page, but who knows? Perhaps with a little persuasion, 3Dconnexion would come through with a solution for open source users.

Only in recent years has the category "consumer 3-D application" even existed. Until recently, 3-D controllers were of interest only to engineers and computer animators, and their prices reflected that. But now the list of 3-D programs for the home user is growing: Google Earth, World Wind, SketchUp, Celestia, Stellarium, Hugin, Second Life -- not to mention all the games. 3Dconnexion's SpaceNavigator is an affordable way to harness the flexibility of a 3-D interface. Let's just hope native X11 support happens sooner rather than later.

Click Here!