Skip to content

Instantly share code, notes, and snippets.

@peterfpeterson
Last active June 20, 2022 18:51
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peterfpeterson/aec736a8e205b45d0bf3 to your computer and use it in GitHub Desktop.
Save peterfpeterson/aec736a8e205b45d0bf3 to your computer and use it in GitHub Desktop.
Configuring 3Dconnexion spacemouse for paraview

Configuring a space mouse was way harder than it should have been. Here is the way to reproduce a "working" version.

Step 1

Ignore the proprietary driver at 3dconnexion and the open source ones from spacenav. They are useful for custom programs, but useless for paraview which currently uses VRPN to lower their maintenance.

Warning: VRPN does not work if you have one of the drivers running at the same time.

Step 2

Install and configure VRPN

  1. Download a version. I just built the head of the git repository.
  2. Configure the build with -DVRPN_USE_HID=True, build and install.
  3. Copy the vrpn_minimal.cfg to /usr/local/etc/vrpn.cfg. The one that comes with the source code has lots more options to enable/disable, but one line is sufficient.
  4. sudo /usr/local/bin/vrpn_server -f /usr/local/etc/vrpn.cfg

Step 3

Profit!

  1. Download and build ParaView. This time the extra flags are -DPARAVIEW_BUILD_PLUGIN_VRPlugin=True and -DPARAVIEW_USE_VRPN=True. Adding -DPARAVIEW_AUTOLOAD_PLUGIN_VRPlugin=True is probably a good idea too.
  2. Startup paraview and follow these instructions. There is tiny bit of information missing:
  3. When you create the VR Connection you need to specify id=0 and name=channels
  4. When you add and Interaction the order of the drop-downs is RenderView1, OrientationAxesInteractivity, and Space Navigator Grab. A configured version of the state for paraview v5.0 is spacenave_vr_state.pvvr.
  5. Don't forget to press the Start button. Also, paraview doesn't like to shutdown unless you press Stop.

There is also an abstraction called VRUI that ParaView can interact with. I have not tried that.

<VRPluginState>
<VRConnectionManager>
<VRPNConnection name="vrconn" address="device0@localhost">
<Analog id="0" name="channels"/>
</VRPNConnection>
</VRConnectionManager>
<VRInteractorStyles>
<Style class="vtkVRSpaceNavigatorGrabWorldStyle" proxyName="RenderView1" proxy="1934" property="OrientationAxesInteractivity">
<Analog role="Move" name="vrconn.channels"/>
</Style>
</VRInteractorStyles>
</VRPluginState>
vrpn_3DConnexion_Navigator device0
@auer1329
Copy link

What 3DConnexion device did you use? I can't get a connection from vrpn_server to my SpaceMouse Pro Wireless (wired or wireless) or my SpaceMouse Compact

On Windows (3DX drivers deactivated, no reaction to SpaceMouse):
vrpn_HidInterface::reconnect(): Device not found

On macOS (no drivers, SpaceMouse moves mouse pointer and zooms):
no message in vrpn_server, vrpn_print_devices says something like VRPN endpoint bad listen socket (have to look up the exact message)

Do you have any idea how I could get this working?

@peterfpeterson
Copy link
Author

I only got this working on RHEL with a plain old SpaceMouse. The instructions I wrote are for the case of when I format my hard drive I could reproduce it. It's been a while, but I believe I (mostly) used the instructions in VRPN, but the important bits are in step 2 above (put the config file in a good location, and sudo to start the server). I would guess that mac would be similar, but can't help with windows.

@msolive1985
Copy link

Thank you for sharing. It works, but you can only move the camera regarding the multiple options from the menu. After adding another Spac Navigator (e.g. one exclusively for the contrast and the other for the orientation), both rotate the camera. It is impractical as it seems you need to start/stop the vrpn_server constantly. Not sure if this is because of the Paraview configuration or maybe a setting I am forgetting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment