Physical throw shape

If you have questions or comments concerning any non-support related 3Dconnexion topic, please use this forum.

Moderator: Moderators

Post Reply
Hypersonic
Posts: 255
Joined: Mon Jul 12, 2010 5:58 pm

Physical throw shape

Post by Hypersonic » Fri Jun 22, 2018 8:14 am

While tweaking a 3DMouse for Overload I've stumbled onto the realization of the circular physical throw shape. The T.16000 joystick by comparison has a square physical throw shape.

I calibrated the 3DMouse so that a full left throw corresponded to a full 1.00 in the game. (0.36 OverallScale = 0.99, 0.37 Overallscale = 1.00) The problem with this is that you can not achieve both 1.00 X and 1.00 Y on the diagonal, rather it's 0.71 X 0.71 Y (in other words circular, sin & cos of 45.)

Yes I could increase OverallScale past 0.37, but then many of the high input values will be wasted as they'd all output 1.00.

Ok fine. Found out that I need at least 0.50 OverallScale to achieve 1.00 X and 1.00 Y at a 45 degree push angle. What this does is cut out the largest square that can be cut out of the circular physical throw shape. Moving outside of this square has the same affect as the nearest point on the square.

Games should allow the user to declare whether or not their input device throw shape is a 2Dsquare/3Dcube or 2Dcircle/3Dsphere. No need to normalize the already normalized input!

While testing a 3DMouse in Overload I've discovered that using 0.37 OverallScale actually doesn't affect top speed when moving diagonally due to how the physics works (not the same thrust/friction tug of war of Descent.) However, it does affect circle strafe speed because circle strafe involves constant acceleration, and you're directly controlling acceleration, not speed. (circle strafing using diagonal.)
With 0.37 OverallScale a tight circle strafe took 4 seconds.
With 0.50 OverallScale a tight circle strafe took 3 seconds.
With keyboard/joystick a tight circle strafe took 3 seconds.

In Quake 1 OverallScale 0.37 should be fine looking over how Quake 1 translates input into wish velocity (though I haven't verified with testing just yet.) In Quake 1 you actually don't control acceleration directly (that is a constant) rather you directly control a wish velocity that is accelerated to.
https://github.com/id-Software/Quake/bl ... ser.c#L326 How Quake1 normalizes
https://github.com/id-Software/Quake/bl ... lib.c#L383 VectorNormalize just returns magnitude (normalized a local variable?)

side notes:
-While OverallScale 0.5 might be enough for a square in a circle, it might need to be even higher for a cube in a sphere for full 3D.
-If the internal stoppers & cutouts were square instead of circles you'd then have a square physical throw shape.

Hypersonic
Posts: 255
Joined: Mon Jul 12, 2010 5:58 pm

Re: Physical throw shape

Post by Hypersonic » Sat Jun 23, 2018 6:34 am

I suppose that when extending to 3D the 3DMouse physical throw shape is actually cylindrical (the shape of the stoppers) rather than spherical.

The only way to get maximum input was to clamp the 3DMouse to prevent it from sliding on the table, so while doing the testing I clamped it by holding it with my other hand, like with the SpaceTec SpaceOrb 360.

Speaking of the SpaceOrb, AFAIK that didn't have stoppers, hence no physical throw shape. You just had to be careful not to apply too much force/torque causing the springs to permanently warp (lose their springy-ness.) That's another advantage of stiff-spring short-throw 3DMice; even with relatively high force/torque it isn't thrown all the way to the stoppers, so essentially no physical throw shape.

With loose-spring long-throw 3DMice when you bump against a stopper I'm thinking that might interfere with the full range of motion of another axis. For example, if you push hard forward into a stopper, the stopper probably impedes on the full range of motion of pitch control.

Also with loose-spring long-throw 3Dmice there is sort of a relativity conundrum. For the sake of illustration lets say the yaw throw is an extreme 90deg. When at rest say there's an 'N' on the forward section of the cap, a 'W' on the left, a 'E' on the right, and a 'S' on the back. So you yaw the cap to 90deg CW. Now what is pitch up? Is pitch up moving 'N' up and 'S' down, or is pitch moving 'W' up and 'E' down? I'm thinking 'W 'up 'E' down to maintain an absolute reference point, but I think one's instinct would try 'N' up 'S' down.

Hypersonic
Posts: 255
Joined: Mon Jul 12, 2010 5:58 pm

Re: Physical throw shape

Post by Hypersonic » Thu Jun 28, 2018 11:54 pm

I started playing with Windows game controllers and made a few throw boundary discoveries of the Space Navigator
Windows start -> Game controllers -> properties button
Exe: rundll32.exe

Translations: 0.37 scale
Rotations: 0.37 scale

-You can maximize 1 axis at a time, but not 2 or more simultaneously.

Translations: 0.5 scale
Rotations: 0.5 scale

-You can maximize Xtran/Ytran/Ztran all at the same time, but by doing so you lose almost all of the rotation range.
OR
-You can maximize yaw/pitch/roll all at the same time, but by doing so you lose almost all of the translation range.

Translations: 1.0 scale
Rotations: 1.0 scale

-You can maximize yaw/pitch/roll/Xtran/Ytran/Ztran all simultaneously.

So there is a bit of a trade off between full simultaneous outputs, and utilizing all input levels of each axis. I suspect that the stiffer the springs the lower the trade off would become.

Post Reply