Getting translation range

Post questions, comments and feedback to our 3Dconnexion Windows Development Team.

Moderator: Moderators

Post Reply
gjaegy
Posts: 9
Joined: Thu Mar 22, 2007 8:32 am

Getting translation range

Post by gjaegy »

Hi,

I would need to get access to the max/min values of the translation values returned.

I have noticed that those values change if the user change the speed in the configuration panel.

So is there a way of getting access to it? I need to have a normalized translation (-1.0 / 1.0) so I need this range value....

thanks for any help!
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hi gjaegy,

It depends on how much work you want to do.
Here are some options:

1) Use HID or DirectInput. That (currently) takes the driver out of the path and anything the user does in the 3Dx control panel is ignored.

2) You could create a config file for your application that has a predefined data range and has sliders that don't do anything. Of course, users can switch to a different config file.

3) You could use the Sync API to undo anything the users do in the GUI. That is likely to frustrate and anger your users.

4) Or, you could just clamp the data values you receive. This is my suggestion. That allows your users to change the slope of the data to their preference but not overrun whatever internal data range you are guarding.

It is important to know that the device is NOT used in a +/- 1 range like a joystick. The data becomes very ragged along the edges from device to device. It is also neither good for the device nor the user's hands to make them use it through its full physical travel. The normal operating range of these devices is in a sweet spot of about 75% of it's physical range. Singularities happen outside that range. For example, if they push fully in one direction rotations are not possible.

Jim
3Dx Software Development
gjaegy
Posts: 9
Joined: Thu Mar 22, 2007 8:32 am

Post by gjaegy »

Hi,

thanks for the answer. Anyway I don't think any of these solutions is appliable.
1) Use HID or DirectInput. That (currently) takes the driver out of the path and anything the user does in the 3Dx control panel is ignored.
Too much work
2) You could create a config file for your application that has a predefined data range and has sliders that don't do anything. Of course, users can switch to a different config file.
I don't want the customer to have to do something special
3) You could use the Sync API to undo anything the users do in the GUI. That is likely to frustrate and anger your users.
What is that ?
4) Or, you could just clamp the data values you receive. This is my suggestion. That allows your users to change the slope of the data to their preference but not overrun whatever internal data range you are guarding.
as the range changes are huge between the "slow" and "fast" settings, clamping the values would require any to define a limit value, which could be 10 when speed is set to slow or 1000 when set to fast.

Would it be a big deal for you to add a "range" member to the sensor object? I guess no, and from what I have seen in the forum, I am not the only one interested in that feature...

Thanks,
Regards,
Gregory Jaegy
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hmmm. I'm not sure how a range method could work. The user can change the range behind your back at any time. You would have to look up the range constantly.

If you make a config file, you can control the range of the sliders. The config file will get loaded automatically when your application runs.

The Sync API is part of the previous SDK. I see you are using the COM SDK. It doesn't apply.

Jim
gjaegy
Posts: 9
Joined: Thu Mar 22, 2007 8:32 am

Post by gjaegy »

Yes, I am using the new COM interface now.

I don't want the customer to have to create a profile for the application, as it may be a complicated step for some of them (even if it seems very simple for you and me/IT professionals/young people).

As I said, I absolutely need to know the range. Checking this range each frame is not a problem for me, it is what I need to do anyway.

Just get the translation and divide by range -> normalized value.

Actually I need both the normal translation values for the main camera move, and the normalized one for an additional feature which should not depend on any speed settings, so I think the profile is not the solution.

Any hope to have this added in the next version? Is that such a big issue for you to have this range readable by the developer? I am sure you have a floating point value that you scale the sensor translation values with, before sending them to the COM component... so please just give us the ability to read it !

Thanks for your help.
Cheers,
Gregory Jaegy
Post Reply