3D Connexion space mouse

I tried to search for a solution but without a success. How can I connect and use the Connexion 3D space mouse with the 3D Slicer?


The Plus toolkit supports Connexion:


There is a Slicer example at the bottom of that page.

Dear Isaiah,

I found this page but I didn’t understand where the PlusServer is. Sorry for being that dumb.


Isaiah Norton slicer@discoursemail.com ezt írta (időpont: 2018. szept. 12., Sze 19:45):

Dear Isaiah,

I’ve found the PlusServer and did the steps written in the link you provided. I removed the driver for the 3D connexion and started the PlusServer as written in the link but no movement was made using the 3D mouse.
Here is a log:
|INFO|000.205000| Software version: Plus- - Win64| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(102)

|INFO|000.205000| Logging at level 3 to file: C:/Users/petnehazy ors/PlusApp-| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(103)

|INFO|000.207000| Supported devices: - 3dConnexion (ver: Plus-2.6.0) - AuroraTracker (ver: NDICAPI-1.7) - BkProFocusOem (ver: Plus-2.6.0) - ChRobotics (ver: Plus-2.6.0) - Epiphan (ver: Plus-2.6.0) - FakeTracker (ver: Plus-2.6.0) - GenericSerialDevice (ver: Plus-2.6.0) - ICCapturing (ver: The Imaging Source UDSHL-3.4) - ImageProcessor (ver: Plus-2.6.0) - IntelRealSenseTracker (ver: ) - Microchip (ver: Plus-2.6.0) - MmfVideo (ver: Plus-2.6.0) - NDITracker (ver: NDICAPI-1.7) - NoiseVideo (ver: Plus-2.6.0) - OpenIGTLinkTracker (ver: OpenIGTLink v3.1.0) - OpenIGTLinkVideo (ver: OpenIGTLink v3.1.0) - OptiTrack (ver: Plus-2.6.0) - OpticalMarkerTracker (ver: Plus-2.6.0) - PhidgetSpatial (ver: Plus-2.6.0) - PolarisTracker (ver: NDICAPI-1.7) - SavedDataSource (ver: Plus-2.6.0) - UsSimulator (ver: Plus-2.6.0) - VFWVideo (ver: Plus-2.6.0) - VirtualBufferedCapture (ver: Plus-2.6.0) - VirtualCapture (ver: Plus-2.6.0) - VirtualDiscCapture (ver: Plus-2.6.0) - VirtualMixer (ver: Plus-2.6.0) - VirtualSwitcher (ver: Plus-2.6.0) - VirtualVolumeReconstructor (ver: Plus-2.6.0) | in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(107)

|INFO|000.210000| Server host name: DESKTOP-57CUE9I| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(127)

|INFO|000.221000| Server IP addresses:,,,,| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(147)

|INFO|000.221000| Start remote control server at port: 18904| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(156)

|INFO|018.768000| Connect using configuration file: C:\Users\petnehazy ors\PlusApp-\config\PlusDeviceSet_Server_3dConnexion.xml| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(314)

|INFO|018.769000| Server process command line: "C:/Users/petnehazy ors/PlusApp-" --config-file="C:\Users\petnehazy ors\PlusApp-\config\PlusDeviceSet_Server_3dConnexion.xml" --verbose=3| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(205)

|INFO|018.959000|SERVER> System start timestamp: 1834

|INFO|018.959000|SERVER> Software version: Plus- - Win64

|INFO|018.959000|SERVER> Logging at level 3 (INFO) to file: C:/Users/petnehazy ors/PlusApp-

|INFO|018.959000|SERVER> Server status: Reading configuration.

|INFO|018.959000|SERVER> Server status: Connecting to devices.

|INFO|019.468000| Server process started successfully| in E:\D\PSNP64b\PlusApp\PlusServerLauncher\PlusServerLauncherMainWindow.cxx(213)

|INFO|019.963000|SERVER> Server status: Starting servers.

|INFO|019.979000|SERVER> Server status: Server(s) are running.

|INFO|019.980000|SERVER> Press Ctrl-C to quit.

|INFO|019.983000|SERVER> Plus OpenIGTLink server listening on IPs:,,,, – port 18944

|INFO|109.806000|SERVER> Received new client connection (client 1 at Number of connected clients: 1

|INFO|109.867000|SERVER> OpenIGTLink broadcasting started. No data was available between 0-89.872sec, therefore no data were broadcasted during this time period.

Plus just relays the coordinate transformation. It reads it from the mouse and sends to Slicer, where it is converted to a transform node by the OpenIGTLinkIF module. What you do with the transform is up to you. You may be able to move the 3D view camera or a surface model with the transform, or use it in a custom module to control other things as well.

1 Like

Hello all,

Did you manage to solve this issue? I’m facing the same problem with the space mouse.


  • I can connect and start the client using openIGTL
  • transform is static

Thanks for helping


I have the same issue with the spacemouse as @juanmaverde. Did you find a solution yet?

I can connect with plus and openIGTLink to Slicer, but the transform remains an identity matrix when manipulating the spacemouse. I tried both with and without the 3DX driver installed.

Thanks for your help!


I’m currently working on a standalone Linux bridge from libspacenav (https://spacenav.sourceforge.net/) to Slicer via OpenIGTLink: GitHub - henrykrumb/spacenav-igt: Use 3DConnexion SpaceMouse devices in 3D Slicer (IGTLink)

It doesn’t make use of PlusLib at the moment, but the same functionality could be integrated into the 3DConnexion class there as well (you’d need to distinguish between OS’s though, and the Windows driver works completely different).

If Linux is an option for you, you could try it out and maybe give me some feedback if it worked :slight_smile:

@henrykrumb Thank you for sharing!

We have played with this device a bit but it did not end up using much, as it was not very easy or intuitive to position objects with it. How do you use it? How is your experience so far?

Hi @lassoan , no problem :slight_smile:

I use the SpaceMouse to position and rotate the camera in the 3D view by directly associating the Camera with the transform in the transform hierarchy. This is quite convenient to inspect 3D objects from all sides, e.g. directly after segmenting a volume.

However, I went through a similar experience at first that the positioning was not super intuitive. I basically needed to tweak some of the values that directly fall out of the driver, such as the sensitivity which I had to reduce significantly. I also had to change the signs and order of the components in translation and rotation vectors, because the SpaceMouse coordinate frame did not directly align with RAS. Adjusting all of that, I now find the device quite usable for my purposes :slight_smile: