Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for 3dconnexion input devices (SpaceMouse) #1808

Open
bliepp opened this issue Dec 19, 2024 · 5 comments
Open

Add support for 3dconnexion input devices (SpaceMouse) #1808

bliepp opened this issue Dec 19, 2024 · 5 comments
Labels
source:VTK type:enhancement New feature or request

Comments

@bliepp
Copy link

bliepp commented Dec 19, 2024

Is your feature request related to a problem? Please describe.
Right now the only input method I can use is mouse/keyboard navigation. However, I regularly use a SpaceMouse in other 3d Software, so switching input devices for different software is pretty inconvenient. I think F3D would really benefit from more advanced input methods specifically designed for spatial navigation.

Describe the solution you'd like
On Linux, there's the FreeSpacenav project. It offers a BSD-3 licensed library and is the de facto standard for using 3dconnexion devices on Linux (see OpenSCAD, Blender and FreeCAD). I have no idea on how it's done on Windows and MacOS, although I think 3dconnexion offers a SDK.

Contribution
I really don't think I can do this, as it's been a while since I used C/C++.

@Meakk
Copy link
Member

Meakk commented Dec 19, 2024

VTK does support 3dconnexion devices. See https://vtk.org/Wiki/VTK/3DConnexion_Devices_Support
It shouldn't be too complicated to integrate it in F3D.
However, none of the main contributors has this kind of device to work with but we're happy to support anyone who wants to tackle this issue.

@mwestphal
Copy link
Contributor

Hum, afaik current support is not great. There was an intent to improve it but it was never finished: https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7262

@mwestphal
Copy link
Contributor

Actually this was finished in ParaView directly: https://gitlab.kitware.com/paraview/paraview/-/merge_requests/5713

Not sure what that means for the VTK implementation, investigation needed

@mwestphal mwestphal added this to F3D Dec 19, 2024
@mwestphal mwestphal added type:enhancement New feature or request source:VTK labels Dec 19, 2024
@mwestphal mwestphal moved this to Investigate in F3D Dec 19, 2024
@bliepp
Copy link
Author

bliepp commented Dec 19, 2024

VTK does support 3dconnexion devices. See https://vtk.org/Wiki/VTK/3DConnexion_Devices_Support It shouldn't be too complicated to integrate it in F3D. However, none of the main contributors has this kind of device to work with but we're happy to support anyone who wants to tackle this issue.

As far as I can tell, the VTK implementation uses the official SDK (and hence needs the official 3Dconnexion driver) exclusively, which hasn't been updated for Linux in more than 10 years. It doesn't support any newer devices and is therefore not really usable, so the project I linked above became the default. I don't even know if it'll run on modern Linux kernels.

To support modern devices across all platforms, one cannot rely on the VTK implementation. The only reasonable way to implement it is to implement it separately for each platform (i.e. the 3Dconnexion SDK on Windows and Mac, libspnav on Linux). As I have neither worked with libspnav, nor the official SDK, I'm not entirely sure if I'll be able to implement it, but I'll do additional investigation over the holidays (although I don't have high hopes on this).

@mwestphal
Copy link
Contributor

VTK does support 3dconnexion devices. See https://vtk.org/Wiki/VTK/3DConnexion_Devices_Support It shouldn't be too complicated to integrate it in F3D. However, none of the main contributors has this kind of device to work with but we're happy to support anyone who wants to tackle this issue.

As far as I can tell, the VTK implementation uses the official SDK (and hence needs the official 3Dconnexion driver) exclusively, which hasn't been updated for Linux in more than 10 years. It doesn't support any newer devices and is therefore not really usable, so the project I linked above became the default. I don't even know if it'll run on modern Linux kernels.

To support modern devices across all platforms, one cannot rely on the VTK implementation. The only reasonable way to implement it is to implement it separately for each platform (i.e. the 3Dconnexion SDK on Windows and Mac, libspnav on Linux). As I have neither worked with libspnav, nor the official SDK, I'm not entirely sure if I'll be able to implement it, but I'll do additional investigation over the holidays (although I don't have high hopes on this).

I had no idea the official Linux driver was in this state, thanks for letting us know. In any case, someone with knowledge of these APIs would need to take this on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
source:VTK type:enhancement New feature or request
Projects
Status: Investigate
Development

No branches or pull requests

3 participants