Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Adapted from: | 5 // Adapted from: |
| 6 // https://github.com/googlevr/gvr-unity-sdk/blob/master/Samples/DaydreamLabsCon trollerPlayground/Assets/GoogleVR/Scripts/Controller/GvrArmModel.cs | 6 // https://github.com/googlevr/gvr-unity-sdk/blob/master/Samples/DaydreamLabsCon trollerPlayground/Assets/GoogleVR/Scripts/Controller/GvrArmModel.cs |
| 7 | 7 |
| 8 #include "chrome/browser/android/vr_shell/elbow_model.h" | 8 #include "chrome/browser/android/vr_shell/elbow_model.h" |
| 9 | 9 |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 constexpr gfx::Vector3dF kDefaultArmExtensionOffset = {-0.13f, 0.14f, -0.08f}; | 25 constexpr gfx::Vector3dF kDefaultArmExtensionOffset = {-0.13f, 0.14f, -0.08f}; |
| 26 constexpr float kMinExtensionAngle = 7.0f; | 26 constexpr float kMinExtensionAngle = 7.0f; |
| 27 constexpr float kMaxExtenstionAngle = 60.0f; | 27 constexpr float kMaxExtenstionAngle = 60.0f; |
| 28 constexpr float kExtensionWeight = 0.4f; | 28 constexpr float kExtensionWeight = 0.4f; |
| 29 constexpr float kDeltaAlpha = 3.0f; | 29 constexpr float kDeltaAlpha = 3.0f; |
| 30 constexpr float kDefaultElbowRotationRatio = 0.4f; | 30 constexpr float kDefaultElbowRotationRatio = 0.4f; |
| 31 | 31 |
| 32 } // namespace | 32 } // namespace |
| 33 | 33 |
| 34 ElbowModel::ElbowModel(gvr::ControllerHandedness handedness) | 34 ElbowModel::ElbowModel(gvr::ControllerHandedness handedness) |
| 35 : handedness_(handedness), | 35 : alpha_value_(1.0f), torso_direction_{0.0f, 0.0f, 0.0f} { |
| 36 alpha_value_(1.0f), | 36 UpdateHandedness(handedness); |
| 37 torso_direction_{0.0f, 0.0f, 0.0f} {} | 37 } |
| 38 | 38 |
| 39 ElbowModel::~ElbowModel() = default; | 39 ElbowModel::~ElbowModel() = default; |
| 40 | 40 |
| 41 void ElbowModel::UpdateHandedness() { | 41 void ElbowModel::UpdateHandedness(gvr::ControllerHandedness handedness) { |
| 42 if (handedness == handedness_) | |
|
acondor_
2017/05/02 14:18:34
We might need an invalid default handedness value
mthiesse
2017/05/02 15:23:37
Done.
| |
| 43 return; | |
| 44 handedness_ = handedness; | |
| 42 handed_multiplier_ = { | 45 handed_multiplier_ = { |
| 43 handedness_ == GVR_CONTROLLER_RIGHT_HANDED ? 1.0f : -1.0f, 1.0f, 1.0f}; | 46 handedness_ == GVR_CONTROLLER_RIGHT_HANDED ? 1.0f : -1.0f, 1.0f, 1.0f}; |
| 44 shoulder_rotation_ = kNoRotation; | 47 shoulder_rotation_ = kNoRotation; |
| 45 shoulder_position_ = | 48 shoulder_position_ = |
| 46 vr::ScalePoint(kDefaultShoulderRight, handed_multiplier_); | 49 vr::ScalePoint(kDefaultShoulderRight, handed_multiplier_); |
| 47 } | 50 } |
| 48 | 51 |
| 49 void ElbowModel::Update(const UpdateData& update) { | 52 void ElbowModel::Update(const UpdateData& update) { |
| 50 UpdateHandedness(); | |
| 51 UpdateTorsoDirection(update); | 53 UpdateTorsoDirection(update); |
| 52 ApplyArmModel(update); | 54 ApplyArmModel(update); |
| 53 UpdateTransparency(update); | 55 UpdateTransparency(update); |
| 54 } | 56 } |
| 55 | 57 |
| 56 void ElbowModel::UpdateTorsoDirection(const UpdateData& update) { | 58 void ElbowModel::UpdateTorsoDirection(const UpdateData& update) { |
| 57 auto head_direction = update.head_direction; | 59 auto head_direction = update.head_direction; |
| 58 head_direction.set_y(0); | 60 head_direction.set_y(0); |
| 59 vr::NormalizeVector(&head_direction); | 61 vr::NormalizeVector(&head_direction); |
| 60 | 62 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 133 void ElbowModel::UpdateTransparency(const UpdateData& update) { | 135 void ElbowModel::UpdateTransparency(const UpdateData& update) { |
| 134 float distance_to_face = vr::ToVector(wrist_position_).Length(); | 136 float distance_to_face = vr::ToVector(wrist_position_).Length(); |
| 135 float alpha_change = kDeltaAlpha * update.delta_time_seconds; | 137 float alpha_change = kDeltaAlpha * update.delta_time_seconds; |
| 136 alpha_value_ = vr::Clampf(distance_to_face < kFadeDistanceFromFace | 138 alpha_value_ = vr::Clampf(distance_to_face < kFadeDistanceFromFace |
| 137 ? alpha_value_ - alpha_change | 139 ? alpha_value_ - alpha_change |
| 138 : alpha_value_ + alpha_change, | 140 : alpha_value_ + alpha_change, |
| 139 0.0f, 1.0f); | 141 0.0f, 1.0f); |
| 140 } | 142 } |
| 141 | 143 |
| 142 } // namespace vr_shell | 144 } // namespace vr_shell |
| OLD | NEW |