value range obtained by SI_MOTION_EVENT

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

Moderator: Moderators

Post Reply
Posts: 2
Joined: Thu Jul 18, 2019 7:38 am

value range obtained by SI_MOTION_EVENT

Post by tsk_2jyo » Thu Jul 18, 2019 8:31 am


I'm new to start developing software for my hobby application.
For starters, I tried to execute demos in SDK, (a) Demo3Dx_3DxTest, (b) Demo3Dx_3DxTstMFC and (c) Demo3Dx_TestSiapp.

There is a sentence 'The normal range of the device axes is approximately +/- 350. '
in 'Data Supplied' section of SDK document, and yes, for (a), I can recognize +/- 350 value when I move the sensor cap onto almost maximum position for each axis.
But for (b) MFC and (c) C# demos, the value at maximum position is from about +/- 2000 to 3000 for each axis. (It's hard to find maximum value of each orientation on (b) and (c) because value increases further when I move the sensor cap as following: firstly move the cap to the bottom then the TY shows the value around 2080, secondary move the cap to TX or TZ orientation with keeping the bottom position of cap then it increase up to around 3000. For (a) -350 of TY value is kept when I move the cap like above.)

Why and by what configuration difference in the demo program cause these difference?

- Device: SpaceNavigator USB (FW:4.31)
- OS: Windows 10 Home, 64bit
- Driver: 3DxWare64_v10-6-0_r2972
- SDK: 3DxWare-SDK_v3-4-0_r14759

I do not change any settings by driver's GUI.
So, the positions of slide bars in the GUI show 'center' position for all (a), (b) and (c).


Posts: 2666
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA

Re: value range obtained by SI_MOTION_EVENT

Post by jwick » Thu Jul 18, 2019 10:15 am

The current hardware does not produce values greater than +/- 350. This may change with future hardware.

It isn't a uniform space though. There are mechanical limits inside the device, that you can feel if you push/twist the cap to its extremes. This causes it to not be able to reach the extreme values along all the directions at the same time. The device is a very uniform sensor in the "normal range" that stays away from the mechanical limits.

If you are wondering about the max values your application might receive, you can't (except the max numeric value of the data type). The user is always free to go into the GUI, or into a cfg file and change the scaling, up or down, to their personal taste.

If your application has hard limits, it needs to check for those after it gets data from the device. For example, a robotics application would not want to drive the end-effector through the floor, or in an otherwise uncontrollable way.

Some of the demos use unmodified scaling. Some use higher scale factors. These scale factors are independent of the GUI slider positions.
It's all in the cfg file being used for the application.

Post Reply