PositionSensorVRDevice
Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.
Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.
Giao diện PositionSensorVRDevice của WebVR API đại diện cho cảm biến vị trí của phần cứng VR. Bạn có thể truy cập thông tin như vị trí và hướng hiện tại của cảm biến so với màn hình gắn đầu thông qua phương thức PositionSensorVRDevice.getState().
Phương thức phiên bản
PositionSensorVRDevice.getState()Deprecated Non-standard-
Trả về trạng thái hiện tại của cảm biến vị trí cho frame hiện tại (ví dụ, trong callback
window.requestAnimationFramehiện tại) hoặc cho frame trước, được chứa trong đối tượngVRPose. Đây là phương thức bạn thường muốn sử dụng thay vìgetImmediateState(). PositionSensorVRDevice.getImmediateState()Deprecated Non-standard-
Trả về trạng thái cảm biến vị trí tức thì hiện tại. Phương thức này chỉ dành để sử dụng hiếm khi, cho một số mục đích đặc biệt nhất định, ví dụ như lấy mẫu vị trí tức thì của cảm biến hướng tay.
PositionSensorVRDevice.resetSensor()Deprecated Non-standard-
Có thể được dùng để đặt lại cảm biến nếu muốn, trả về các giá trị vị trí và hướng về không.
Thuộc tính phiên bản
Giao diện này không định nghĩa bất kỳ thuộc tính nào của riêng nó, nhưng kế thừa các thuộc tính từ giao diện cha, VRDisplay.
VRDisplay.displayIdRead only-
Trả về ID cho
VRDevicecụ thể này. ID không nên thay đổi qua các lần khởi động lại trình duyệt, cho phép lưu dữ liệu cấu hình dựa trên nó. VRDisplay.displayNameRead only-
Tên có thể đọc được bởi người dùng để nhận dạng
VRDevice.
Ví dụ
Ví dụ sau đây sử dụng WebVR API để cập nhật view của một cảnh 2D canvas đơn giản trên mỗi frame của vòng lặp requestAnimationFrame.
function setView() {
const posState = gPositionSensor.getState();
if (posState.hasPosition) {
posPara.textContent = `Position: x${roundToTwo(
posState.position.x,
)} y${roundToTwo(posState.position.y)} z${roundToTwo(posState.position.z)}`;
xPos = -posState.position.x * WIDTH * 2;
yPos = posState.position.y * HEIGHT * 2;
zPos = -posState.position.z > 0.01 ? -posState.position.z : 0.01;
}
if (posState.hasOrientation) {
orientPara.textContent = `Orientation: x${roundToTwo(
posState.orientation.x,
)} y${roundToTwo(posState.orientation.y)} z${roundToTwo(
posState.orientation.z,
)}`;
xOrient = posState.orientation.x * WIDTH;
yOrient = -posState.orientation.y * HEIGHT * 2;
zOrient = posState.orientation.z * 180;
}
}
Ở đây chúng ta lấy đối tượng VRPose bằng cách dùng PositionSensorVRDevice.getState() và lưu vào posState. Sau đó chúng ta kiểm tra để đảm bảo thông tin vị trí và hướng có trong frame hiện tại bằng cách dùng VRPose.position và VRPose.orientation (các giá trị này trả về null nếu, ví dụ, màn hình gắn đầu bị tắt hoặc không hướng về phía cảm biến vị trí, điều này sẽ gây ra lỗi.)
Sau đó chúng ta hiển thị các giá trị vị trí và hướng x, y và z cho mục đích thông tin, và sử dụng các giá trị đó để cập nhật các biến xPos, yPos, zPos, xOrient, yOrient, và zOrient, được dùng để cập nhật kết xuất cảnh trên mỗi frame.