Spacenav Win32 aka AerionInput

The Spacenav Win32 project provides a free, not yet fully compatible alternative to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called "Space Navigator", "Space Pilot", "Space Traveller", etc) for the Windows 32 platform. It also supports a new 3D-Input device called GlobeFish or Aerion developed by the Bauhaus University of Weimar which this project is the main driver for.

History

This dirver was written as a study project whose aim was to create a driver for a device very similar to the SpaceMouse of 3Dconnexion in a short time frame. This device is the GlobeFish or Aerion developed by the Bauhaus University of Weimar, see here (english) and here (german).

This device needed a 'driver' or a user space software which makes the USB data available to applications. Implementing something similar to the 3DConnexion user space driver promised good portability of applications to the Aerion device and its own driver. Trying to make the driver binary compatible to the 3DConnexion driver was quite obvious. Although this is not really true for the current state of the project it has been proved to be possible by running Blender with its 3DConnexion-plugin with spacenav-win32. In fact, the driver was developed with Blender being the only client. Other client applications were tested with no avail.

Several preconditions, namely an existing library to read USB data from the device, the type-safety and rapid development results made it reasonable for the author to write the entire project in managed C# .NET which is admittedly a rather 'exotic' language for a device driver.
A port of the driver to a libusb-win32/C++ Environment is a good idea, help for that is very welcome.

This part of the project has an accompanying technical documentation which describes the development process, the UML design and all classes in detail. You can download it here (only in german). There is a standalone API documentation available here (english).

Download

Of course you can also get the code directly from the subversion repository. In order to do that, use the following command:
svn co https://spacenav.svn.sourceforge.net/svnroot/spacenav/trunk/spacenav_win32

Supported Devices

Aerion or Globefish (working), a 6-Degree-of-Freedom Device developed by the Bauhaus University Weimar

3DConnexion SpaceNavigator (tested and working, something with the axis mapping is still wrong)

3DConnexion SpaceTraveler (will be tested)

3DConnexion SpacePilot (untested)

3DConnexion SpaceExplorer (untested)

possibly even more USB based 6-Degree-of-Freedom-Devices

Binary installation

install .NET Framework 2.0

copy the Blender Plugin included with the driver in the install folder (3DxNdofBlender.plug) to your Blender\plugins\ directory (create if not there)

there is no possibility to install this library parallel to Closed-Source driver as it claims the same classes in the registry - so they are mutual exclusive if you want. The library installed last will be used - so if you install the Closed-Source driver after this one, the Closed-Source driver will be used.

Dependencies

HIDLibrary.NET http://sourceforge.net/projects/hidlibrary/ (included in the binary Release, working copy in SVN)

Compatibility

Tested and running:

Windows 2000

Windows XP 32bit and 64bit, also works for 32bit apps on Windows 64. (Tested).

Vista 32bit

Tested and NOT working:

Windows 98 SE because lack of Unicode support

Untested on Windows 95, will not work there, also untested on Windows ME (Unicode support??)

Driver is running at native 64bit if 64bit client application used due to .NET Framework (untested - please submit reports!).

Compiling

use VS 2005 (or later) to compile

import installer/progid_device_register.reg to your registry

Configuration

use AerionInputConfig to change application specific profiles

a new Application supporting these profiles registers itself by calling LoadPreferencesName() the first time with an application specific string argument (e.g. "Blender")

now you can choose this string from the field "application profile" in AerionInputConfig and change the settings for this application

settings are applied when LoadPreferencesName() is called by the app, so restart the app if in doubt

Recommended settings for the axes and filter functions:

for use with Aerion and Blender

X/Y/Z translation/rotation scale: 1.0

translation X axis is inverted, so use -1.0

translation/rotation threshold: 5

filter function: square

for use with 3DConnexion SpaceNavigator PE and Blender:

X/Y/Z translation/rotation scale: 0.2

translation/rotation threshold: 10

filter function: cube

Known Bugs

As an oddity the library is not binary compatible with the original driver for .NET components - because you cannot load this library with the type library importer classes as for example NASA WorldWind does (because there is nothing to import - this project is already .NET). So there are some issues with that I want to provide a example solution for (based on WorldWind most likely).