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
376 }376 }
377 377
378 // this offset needs to match GRAB_POINT_SPHERE_OFFSET in scripts/system/libraries/controllers.js378 // 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);379 static const vec3 GRAB_POINT_SPHERE_OFFSET(0.075f, 0.175f, 0.039f);
380 static const vec3 GRAB_POINT_SPHERE_OFFSET = vec3(0.0f, 0.0f, -0.175f);380
381 vec3 grabPointOffset = GRAB_POINT_SPHERE_OFFSET;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);
382 if (i == 0) {383 if (i == 0) {
383 grabPointOffset.x *= -1.0f; // this changes between left and right hands384 grabPointOffset.x *= -1.0f; // this changes between left and right hands
384 }385 }
libraries/shared/src/GLMHelpers.cpp+2−0
@@ -34,7 +34,9 @@ const vec3& Vectors::UP = Vectors::UNIT_Y; · 33 unmodified lines
34const vec3& Vectors::FRONT = Vectors::UNIT_NEG_Z;34const vec3& Vectors::FRONT = Vectors::UNIT_NEG_Z;
35 35
36const quat Quaternions::IDENTITY{ 1.0f, 0.0f, 0.0f, 0.0f };36const quat Quaternions::IDENTITY{ 1.0f, 0.0f, 0.0f, 0.0f };
37const quat Quaternions::X_180{ 0.0f, 1.0f, 0.0f, 0.0f };
37const quat Quaternions::Y_180{ 0.0f, 0.0f, 1.0f, 0.0f };38const quat Quaternions::Y_180{ 0.0f, 0.0f, 1.0f, 0.0f };
39const quat Quaternions::Z_180{ 0.0f, 0.0f, 0.0f, 1.0f };
38 40
39// Safe version of glm::mix; based on the code in Nick Bobick's article,41// Safe version of glm::mix; based on the code in Nick Bobick's article,
40// http://www.gamasutra.com/features/19980703/quaternions_01.htm (via Clyde,42// 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
58class Quaternions {58class Quaternions {
59 public:59 public:
60 static const quat IDENTITY;60 static const quat IDENTITY;
61 static const quat X_180;
61 static const quat Y_180;62 static const quat Y_180;
63 static const quat Z_180;
62};64};
63 65
64class Vectors {66class Vectors {
plugins/openvr/src/OpenVrHelpers.cpp+5−4
@@ -299,10 +299,11 @@ controller::Pose openVrControllerPoseToHandPose(bool isLeftHand, const mat4& mat · 298 unmodified lines
299 static const glm::quat leftRotationOffset = glm::inverse(leftQuarterZ * eighthX) * touchToHand;299 static const glm::quat leftRotationOffset = glm::inverse(leftQuarterZ * eighthX) * touchToHand;
300 static const glm::quat rightRotationOffset = glm::inverse(rightQuarterZ * eighthX) * touchToHand;300 static const glm::quat rightRotationOffset = glm::inverse(rightQuarterZ * eighthX) * touchToHand;
301 301
302 static const float CONTROLLER_LENGTH_OFFSET = 0.0762f; // three inches302 static const float CONTROLLER_X_OFFSET = 0.0381f; // sideways
303 static const glm::vec3 CONTROLLER_OFFSET = glm::vec3(CONTROLLER_LENGTH_OFFSET / 2.0f,303 static const float CONTROLLER_Y_OFFSET = 0.0495f; // forwards
304 CONTROLLER_LENGTH_OFFSET / 2.0f,304 static const float CONTROLLER_Z_OFFSET = 0.1371f; // upwards
305 CONTROLLER_LENGTH_OFFSET * 2.0f);305 static const glm::vec3 CONTROLLER_OFFSET(CONTROLLER_X_OFFSET, CONTROLLER_Y_OFFSET, CONTROLLER_Z_OFFSET);
306
306 static const glm::vec3 leftTranslationOffset = glm::vec3(-1.0f, 1.0f, 1.0f) * CONTROLLER_OFFSET;307 static const glm::vec3 leftTranslationOffset = glm::vec3(-1.0f, 1.0f, 1.0f) * CONTROLLER_OFFSET;
307 static const glm::vec3 rightTranslationOffset = CONTROLLER_OFFSET;308 static const glm::vec3 rightTranslationOffset = CONTROLLER_OFFSET;
308 309
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
111var CHECK_TOO_FAR_UNEQUIP_TIME = 0.3; // seconds, duration between checks111var CHECK_TOO_FAR_UNEQUIP_TIME = 0.3; // seconds, duration between checks
112 112
113 113
114var GRAB_POINT_SPHERE_RADIUS = NEAR_GRAB_RADIUS;114var GRAB_POINT_SPHERE_RADIUS = NEAR_GRAB_RADIUS * 1.5;
115var GRAB_POINT_SPHERE_COLOR = { red: 240, green: 240, blue: 240 };115var GRAB_POINT_SPHERE_COLOR = { red: 240, green: 240, blue: 240 };
116var GRAB_POINT_SPHERE_ALPHA = 0.85;116var GRAB_POINT_SPHERE_ALPHA = 0.85;
117 117
scripts/system/libraries/controllers.js+1−1
@@ -21,7 +21,7 @@ getGrabCommunications = function getFarGrabCommunications() { · 20 unmodified lines
21// var GRAB_POINT_SPHERE_OFFSET = { x: 0.1, y: 0.32, z: 0.04 };21// var GRAB_POINT_SPHERE_OFFSET = { x: 0.1, y: 0.32, z: 0.04 };
22 22
23// this offset needs to match the one in libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp23// this offset needs to match the one in libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp
24var GRAB_POINT_SPHERE_OFFSET = { x: 0.0, y: 0.175, z: 0.0 };24var GRAB_POINT_SPHERE_OFFSET = { x: 0.075, y: 0.175, z: 0.039 }; // x = upward, y = forward, z = inward
25 25
26getGrabPointSphereOffset = function(handController) {26getGrabPointSphereOffset = function(handController) {
27 if (handController === Controller.Standard.RightHand) {27 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