3dConnexion releases joystick driver for 6 DOF 3d controller

I’m super stoked to let you guys know that 3dConnexion just released the open beta driver for their 6 DOF 3d controllers. Me and a few other people have been asking them to make this possible for quite a long time and for the past six months we’ve been participants in a closed beta (I’ve been mostly testing it with TD). Now it is open for anyone. If you already have a 3d mouse you can download the beta here [url]http://www.3dconnexion.com/supported-software/anywhere.html[/url] If your not familiar with them I think the entry level Space Navigator is around $100 (for navigating in 3d enviroment with one hand I found that no joystick or game pad compares).

Below is my TD component and 3dxware configuration profile for navigation in Touch.

cheers
Keith
TouchDesigner.xml (20.4 KB)
CameraControl5.toe (167 KB)

hello,

i just grabbed the 3DxWare 10 Beta 8 (Windows 64-bit) and tried installing it. I get an error- setup detects that version 10.0.8 of 3dconnexion 3DxSoftware is already installed. Did anyone else run into this? I use this driver in all my apps, I don’t really want to install and uninstall drivers every time i need to switch to touch designer…

Just wondering… probably a question for 3Dconnexion

Thanks!

Grady

Just uninstall the old driver and then install the new one. All the functionality (configurations) of previous versions is in the beta.

ahhhh

thanks

I’m looking to get my 3DConnexion Space Pilot (circa 2006) to run in TouchDesigner88, particularly for animating cameras and other objects.

In Touch I lay down a joystick chop, I have two choices:

1 - 3D Connexion KMJ Emulator (doesn’t function, is it relevant here?)
2 - SpacePilot (this works, i can affect 6dof and 6 buttons, great)

I found a file ‘CameraControl5’ uploaded by keithlostracco a few years back. I switched the joystick chop from KMJ to SpacePilot… my input is live, but the output is chaos. All channels in the objects are changing rapidly, though I’m not touching the device at all.
I’ll try to see if I can tame the chops in there.

If there are additional setups out there or advice on 3DConnexion input in 2014 I thank you in advance.

I found the same with that sample - it’s probably not a problem with your hardware.

But since the SpaceNavigator works as a joystick, you can roll your own.

Here’s what I use. If you make something better (I really wish I could store camera positions and go to them then nav from there), please share.

Bruce
SpaceNav.toe (8.69 KB)

Not sure what is happening. I just downloaded and tried the component posted above and it worked fine for me.

There is a setting on the joystick chop called deadzone maybe you’ll need to adjust that?

Also are the transform values in the in the joystick chop reading reading .5? If not then that could be a problem… You would need to adjust one of the proceeding math chops that scales and translates those values…

Hmm I’ll take a look at it closer I use a newer version now which I can post.

Bruce that project should work for you. I’ll look into it.

Also recently I found a way to change seamlessly from an animated position to controller by using the camera blend comp. Super simple and works great.

I’ll just post a newer version.

So here is my updated version of the 3dx controller comp. A couple of things to note:

I’m using the older 3dx beta driver, the newer driver doesn’t allow you to modify axis or direction, you may need to negate or exchange ty,tz,ry and rz depending on your needs. Channels can be swapped in the joystick chop and they can be negated by modifying the appropriate values in the negate CHOP to -1 (Camera_UI/3dx_Control/negate)

There is now mouse flying control functionality which is turned off by default. It can be enabled by unlocking the “mouseCtrl” CHOP. WSADQE for translation, left click the viewer for RX,RY and right/middle click for RZ. The mouse must be above the view window to be active. One caveat seems that “S” key is stuck on when Touch starts. I think this must be a Touch bug or something wrong with my particular keyboard. That is why the mouse controls are disabled by default.

You can also use the sliders to transform the camera when the “ControllerCross” is set to one. When you drag the slider back to 0 the camera will be 3dx/mouse controllable again starting from that position/orientation. The slider is called cross but it is more of a switch there is no in between really. Although this can be set up differently and does cross smoothly.

The difference between this tool and just directly connecting the joystick channels to a speed chop and exporting a camera is that the transformations are accumulated in the parent component. This allows for the forward/up/side axis to always be relative to the view not to world space. So forward is always forward no matter what direction you are viewing not translate z.

If this component still has problems with chaotic movement let me know and I’ll see what I can do.
3dxControl2014.7.toe (58.5 KB)

1 Like

Thanks for looking into that, but yes - still insane here. :mrgreen:

All the controller feeds look fine:with a bit of effort I can almost zero out the controller1 channels, and it’s stable, so I doubt deadzone is the issue.

Then the controller null and Object3 are going crazy. Can’t see quite where it’s coming from. Specifically, all the values are swinging, but tz particularly is oscillating -40 to 40 or so - fast.

Bruce

Edit - if I take the ‘ControllerCross’ parameter past .14 or so, I have some form of (very clunky) control. if I go lower, the scene starts to cray cray rotate.

re-edit - my ‘Formula’ drop-down shows ‘Camera1’ twice. Some sort of loop?

strange must be some sort feedback loop happening that doesn’t happen in all cases. What are the values in the CHOP “controller1” reading?

Sorry, I closed down for the night - the controller1 object at the top was going crazy - all values swinging.

Couldn’t tell what was setting it.

Bruce

Thank you for looking into this for us, Keith.

I too have the same results with 3dxControl2014.7.toe
As soon as I activate my Space Pilot as a joystick device the values on ‘conroller1’ rush a bit then settle (picture attached). Object3 and CamTransform channels perpetually oscillate.

I’m willling to install older 3dconnexion drivers for thorough testing, if you are able to share those.

Okay it looks like a simple problem to solve!

For some reason your controllers are outputting values of 0 (when there is no input) in the joystick chop when mine outputs .5 . Just to verify, the joystick chop is changing values when you move your controller?

If so the solution should be simple. Bypass the math chop labelled “ctrl_math”, it scales the values coming from the joystick chop from 0 to 1 (.5 being no movement) to -1 to 1. Once it’s bypassed everything should work fine. Strange that some controllers have a different range.

Everything should work fine after that except that if your using the newest driver you’ll probably want to swap and negate the y and z translations and rotations.

Here is the version with the changes I think you’ll need.

Hopefully it works this time
cheers
Keith
3dxControl2014.8.toe (58.6 KB)

1 Like

Hi Keith.

This is what I’m getting with your latest file (download the movie, it’s blurry in the browser)

dropbox.com/s/6qioqhx7fsst8 … cam3dx.mp4

Just out of curiosity, which 3dx devices are you using?

I’m using the first generation SpacePilot, and old as it is, I’ve plugged it into a machine with with 3dsmax 2014 and maya2014 it behaves as expected on startup in those viewports.

The default behavior in maya (with some speed decrease) is pretty much the behavior I’m hoping to emulate in a Touch scene controller.

Did you build your Touch tool for similar behavior?
Thanks again for puzzling through this me.

Okay it looks all the transforms except for tz send out a default value of 0. tz (the second) seems to send output a value of 1 for no movement. Does it go above 1? either way you’ll need to scale this value between -1 and 1 in the bypassed math chop. You’ll just need to set the appropriate settings with “scope” parameter set to tz.

Basically all the values going into “math2” should be zero when not moving the controller.

Yes this works just like the controller does in Maya when in free mode (fly in any direction) and actually works more smoothly (with the filter).

hopefully that works

Keith, I feel like our controllers work differently. It’s a bit odd, but mine seems to be ‘absolute’. It sounds like yours is relative?

i.e. mine has a certain value per axis, and that increases or decreases as I move it. It does not work like I’d expect a joystick to work, and just output values as it moves.

I think that’s the problem?

Bruce

Hi Bruce that definitely sounds like the case. To clarify you mean that your controller changes value when you move it and holds that value? Then adds or subtracts to that when moving again in the same or opposite direction?

In my case the controller outputs the value .5 when I’m not touching it. When I move it outputs a value greater or less than that depending on direction and then it will jump back to .5 when I release it.

The simplest solution I can think of is to use a slope chop after the joystick chop (or select…) to detect rate of change. This should output 0 when not changing values and then output a positive or negative value when the incoming value changes depending whether it’s up or down.

Hope this helps.

That’s the case, yes. Probably why we’ve all been looking for off the shelf solutions to controlling cameras with it - it’s not the best system.

I was thinking I’d have to snapshot the values them compare, but I’ll try the slope system. I’m afraid I couldn’t even test your system enough to understand the features.

I jury-rigged something with a record chop, but maybe I’ll take the time to get some ‘presets’ going soon.

Thanks for the tries!

Bruce

for the crazy floatiness and driftiness in general-

i have found that running the 3DConnexion Control panel and pressing the “calibrate” button on the first page (sometimes over and over like for half a day) seems to calm the weird behavior of my spacepilot.