From BlenderWiki
[edit] Goals
The goal of this project is to add multi-axis devices support in blender. The first objective is to support the 6DOF 3D mouses like those from 3D connexion but we aim at a generalized interface for things like joysticks, game pads and other input devices.
We will use as starting base the available patch for windows. A branch in svn will be created soon.
We have 3 means of getting use of the devices in blender :
- an LGPL plugin to proprieraty drivers can be dlopened at run time (easiest solution for 3Dconnexion ones as it is already partly done, it also allow the older serial devices). If we expand this method to other devices, we will need to define a way for the plugin to announce the capabilities of the device it manages.
- HID application side driver, either by polling or with private event queue. This method is the most general, and as we use the discovery at handshake features of the HID protocol, we can support any device without additional code.
- Xinput. This method is X11 only, need user configuration of his system (most probably handled automaticaly by newer hw detection systems, tho), but there is a patch for this on blender forums.
[edit] Configuration
Once the device is attached to blender, we need to configure it, especially in the case of HID general devices. I propose we restrict ourself for now to the 6DOF case, as the upcoming 2.50 release will add a lot of configuration possibilities.
The patch put those settings in preferences. I find this solution akward. I would rather use a panel in the button panels, but there is a consistency problem, as those settings should be kept from session to session.
A feedback from others on this point would be great.
[edit] Using the device
Natural place to use the NDOF device is in the 3D view, but the device will not replace the mouse. Instead, it will be used to move either the selection or the camera view, leaving you free to use a mouse or tablet with your other hand. Which way it behaves can be modal, (my preference) or depend on if there is an existing selection.
Moving objects is a standard transform in blender and, as such, must respect existing conventions (rotate center ...)
Moving the view is a bit trickier.
See steve's comments on how the matrices are handled.
The movement can be free, or locked to a single axis. This mean we probably need an icon in the header for mode selection.
Using the device in 2D views is possible, if we look only at the X,Y,Rz axis. This is however a low priority i think, as a clear idea of what move is needed for each
[edit] Development
I was designated code owner of that module, and so will manage keeping in sync with trunk.
BF-committers can commit to the branch (after discussion on irc or mlist please).
People having no write access to svn but willing to participate can send me patches, that i can commit
as 3Dconnexion will provide manpower for the dlopen solution, i will focus on the HID part.







![[]](/skins/blender/open.png)
