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 #include "device/vr/android/gvr/gvr_delegate.h" | 5 #include "device/vr/android/gvr/gvr_delegate.h" |
6 | 6 |
7 #include "base/trace_event/trace_event.h" | 7 #include "base/trace_event/trace_event.h" |
8 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr.h" | 8 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr.h" |
9 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr_types.h" | 9 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/
gvr_types.h" |
10 #include "ui/gfx/geometry/vector3d_f.h" | 10 #include "ui/gfx/geometry/vector3d_f.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 | 59 |
60 gfx::Transform delta_mat; | 60 gfx::Transform delta_mat; |
61 gfx::Transform inverse_head_mat; | 61 gfx::Transform inverse_head_mat; |
62 // Calculate difference matrix, and inverse head matrix rotation. | 62 // Calculate difference matrix, and inverse head matrix rotation. |
63 // For the inverse rotation, just transpose the 3x3 subsection. | 63 // For the inverse rotation, just transpose the 3x3 subsection. |
64 // | 64 // |
65 // Assume that epsilon is nonzero since it's based on a compile-time constant | 65 // Assume that epsilon is nonzero since it's based on a compile-time constant |
66 // provided by the caller. | 66 // provided by the caller. |
67 for (int j = 0; j < 3; ++j) { | 67 for (int j = 0; j < 3; ++j) { |
68 for (int i = 0; i < 3; ++i) { | 68 for (int i = 0; i < 3; ++i) { |
69 delta_mat.matrix().set(j, i, | 69 delta_mat.matrix().set( |
70 head_mat_2.matrix().get(j, i) - | 70 j, i, |
71 head_mat.matrix().get(j, i) / epsilon_seconds); | 71 (head_mat_2.matrix().get(j, i) - head_mat.matrix().get(j, i)) / |
| 72 epsilon_seconds); |
72 inverse_head_mat.matrix().set(j, i, head_mat.matrix().get(i, j)); | 73 inverse_head_mat.matrix().set(j, i, head_mat.matrix().get(i, j)); |
73 } | 74 } |
74 delta_mat.matrix().set(j, 3, 0); | 75 delta_mat.matrix().set(j, 3, 0); |
75 delta_mat.matrix().set(3, j, 0); | 76 delta_mat.matrix().set(3, j, 0); |
76 inverse_head_mat.matrix().set(j, 3, 0); | 77 inverse_head_mat.matrix().set(j, 3, 0); |
77 inverse_head_mat.matrix().set(3, j, 0); | 78 inverse_head_mat.matrix().set(3, j, 0); |
78 } | 79 } |
79 delta_mat.matrix().set(3, 3, 1); | 80 delta_mat.matrix().set(3, 3, 1); |
80 inverse_head_mat.matrix().set(3, 3, 1); | 81 inverse_head_mat.matrix().set(3, 3, 1); |
81 gfx::Transform omega_mat = delta_mat * inverse_head_mat; | 82 gfx::Transform omega_mat = delta_mat * inverse_head_mat; |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 gvr::Mat4f eye_mat = gvr_api->GetEyeFromHeadMatrix(eye); | 266 gvr::Mat4f eye_mat = gvr_api->GetEyeFromHeadMatrix(eye); |
266 eye_params->offset[0] = -eye_mat.m[0][3]; | 267 eye_params->offset[0] = -eye_mat.m[0][3]; |
267 eye_params->offset[1] = -eye_mat.m[1][3]; | 268 eye_params->offset[1] = -eye_mat.m[1][3]; |
268 eye_params->offset[2] = -eye_mat.m[2][3]; | 269 eye_params->offset[2] = -eye_mat.m[2][3]; |
269 } | 270 } |
270 | 271 |
271 return device; | 272 return device; |
272 } | 273 } |
273 | 274 |
274 } // namespace device | 275 } // namespace device |
OLD | NEW |