History

Adjust size and offset of grab balls to better align with hand controllers.

(cherry picked from commit d97a8c2e7eace2494d3142e8187022a33aedc060)

Anthony J. Thibault committed 10 years ago

Commit bcd31e31 parent 20ed77d6 files · +15 −9Browse files

Unified · Split

6 files
  1. libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +4 −3
  2. libraries/shared/src/GLMHelpers.cpp +2 −0
  3. libraries/shared/src/GLMHelpers.h +2 −0
  4. plugins/openvr/src/OpenVrHelpers.cpp +5 −4
  5. scripts/system/controllers/handControllerGrab.js +1 −1
  6. scripts/system/libraries/controllers.js +1 −1
libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp+4−3
@@ -376,9 +376,10 @@ void HmdDisplayPlugin::updateFrameData() { · 375 unmodified lines
376376 }
377377
378378 // this offset needs to match GRAB_POINT_SPHERE_OFFSET in scripts/system/libraries/controllers.js
379− //static const vec3 GRAB_POINT_SPHERE_OFFSET = vec3(0.1f, 0.04f, -0.32f);
380− static const vec3 GRAB_POINT_SPHERE_OFFSET = vec3(0.0f, 0.0f, -0.175f);
381− vec3 grabPointOffset = GRAB_POINT_SPHERE_OFFSET;
379+ static const vec3 GRAB_POINT_SPHERE_OFFSET(0.075f, 0.175f, 0.039f);
380+
381+ // swizzle grab point so that (x = upward, y = inward, z = forward)
382+ vec3 grabPointOffset = glm::vec3(GRAB_POINT_SPHERE_OFFSET.x, GRAB_POINT_SPHERE_OFFSET.z, -GRAB_POINT_SPHERE_OFFSET.y);
382383 if (i == 0) {
383384 grabPointOffset.x *= -1.0f; // this changes between left and right hands
384385 }
libraries/shared/src/GLMHelpers.cpp+2−0
@@ -34,7 +34,9 @@ const vec3& Vectors::UP = Vectors::UNIT_Y; · 33 unmodified lines
3434 const vec3& Vectors::FRONT = Vectors::UNIT_NEG_Z;
3535
3636 const quat Quaternions::IDENTITY{ 1.0f, 0.0f, 0.0f, 0.0f };
37+const quat Quaternions::X_180{ 0.0f, 1.0f, 0.0f, 0.0f };
3738 const quat Quaternions::Y_180{ 0.0f, 0.0f, 1.0f, 0.0f };
39+const quat Quaternions::Z_180{ 0.0f, 0.0f, 0.0f, 1.0f };
3840
3941 // Safe version of glm::mix; based on the code in Nick Bobick's article,
4042 // http://www.gamasutra.com/features/19980703/quaternions_01.htm (via Clyde,
libraries/shared/src/GLMHelpers.h+2−0
@@ -58,7 +58,9 @@ glm::quat safeMix(const glm::quat& q1, const glm::quat& q2, float alpha); · 57 unmodified lines
5858 class Quaternions {
5959 public:
6060 static const quat IDENTITY;
61+ static const quat X_180;
6162 static const quat Y_180;
63+ static const quat Z_180;
6264 };
6365
6466 class Vectors {
plugins/openvr/src/OpenVrHelpers.cpp+5−4
@@ -299,10 +299,11 @@ controller::Pose openVrControllerPoseToHandPose(bool isLeftHand, const mat4& mat · 298 unmodified lines
299299 static const glm::quat leftRotationOffset = glm::inverse(leftQuarterZ * eighthX) * touchToHand;
300300 static const glm::quat rightRotationOffset = glm::inverse(rightQuarterZ * eighthX) * touchToHand;
301301
302− static const float CONTROLLER_LENGTH_OFFSET = 0.0762f; // three inches
303− static const glm::vec3 CONTROLLER_OFFSET = glm::vec3(CONTROLLER_LENGTH_OFFSET / 2.0f,
304− CONTROLLER_LENGTH_OFFSET / 2.0f,
305− CONTROLLER_LENGTH_OFFSET * 2.0f);
302+ static const float CONTROLLER_X_OFFSET = 0.0381f; // sideways
303+ static const float CONTROLLER_Y_OFFSET = 0.0495f; // forwards
304+ static const float CONTROLLER_Z_OFFSET = 0.1371f; // upwards
305+ static const glm::vec3 CONTROLLER_OFFSET(CONTROLLER_X_OFFSET, CONTROLLER_Y_OFFSET, CONTROLLER_Z_OFFSET);
306+
306307 static const glm::vec3 leftTranslationOffset = glm::vec3(-1.0f, 1.0f, 1.0f) * CONTROLLER_OFFSET;
307308 static const glm::vec3 rightTranslationOffset = CONTROLLER_OFFSET;
308309
scripts/system/controllers/handControllerGrab.js+1−1
@@ -111,7 +111,7 @@ var NEAR_GRABBING_KINEMATIC = true; // force objects to be kinematic when near-g · 110 unmodified lines
111111 var CHECK_TOO_FAR_UNEQUIP_TIME = 0.3; // seconds, duration between checks
112112
113113
114−var GRAB_POINT_SPHERE_RADIUS = NEAR_GRAB_RADIUS;
114+var GRAB_POINT_SPHERE_RADIUS = NEAR_GRAB_RADIUS * 1.5;
115115 var GRAB_POINT_SPHERE_COLOR = { red: 240, green: 240, blue: 240 };
116116 var GRAB_POINT_SPHERE_ALPHA = 0.85;
117117
scripts/system/libraries/controllers.js+1−1
@@ -21,7 +21,7 @@ getGrabCommunications = function getFarGrabCommunications() { · 20 unmodified lines
2121 // var GRAB_POINT_SPHERE_OFFSET = { x: 0.1, y: 0.32, z: 0.04 };
2222
2323 // this offset needs to match the one in libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp
24−var GRAB_POINT_SPHERE_OFFSET = { x: 0.0, y: 0.175, z: 0.0 };
24+var GRAB_POINT_SPHERE_OFFSET = { x: 0.075, y: 0.175, z: 0.039 }; // x = upward, y = forward, z = inward
2525
2626 getGrabPointSphereOffset = function(handController) {
2727 if (handController === Controller.Standard.RightHand) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t