PositionSensorVRDevice
已弃用:此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已从相关的 Web 标准中删除,可能正在被删除的过程中,或者可能仅出于兼容性目的而保留。避免使用它,如果可能,请更新现有代码;请参阅此页面底部的兼容性表,以指导您的决策。请注意,此功能可能随时停止工作。
非标准:此功能是非标准的,并且不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不会对每个用户都起作用。实现之间也可能存在很大的不兼容性,并且行为将来可能会发生变化。
PositionSensorVRDevice
是 WebVR API 的一个接口,它表示 VR 硬件的位置传感器。您可以通过 PositionSensorVRDevice.getState()
方法访问有关传感器相对于头戴式显示器的当前位置和方向等信息。
实例方法
PositionSensorVRDevice.getState()
已弃用 非标准-
返回当前帧(例如,在当前
window.requestAnimationFrame
回调中)或上一帧的位置传感器的当前状态,包含在VRPose
对象中。这通常是您想要使用的方法,而不是getImmediateState()
。 PositionSensorVRDevice.getImmediateState()
已弃用 非标准-
返回当前瞬时位置传感器状态。这仅适用于某些特殊用途,例如采样手部方向传感器的即时位置——或者至少在将来会是这样。
PositionSensorVRDevice.resetSensor()
已弃用 非标准-
可用于根据需要重置传感器,将位置和方向值重置为零。
实例属性
此接口本身未定义任何属性,但它确实继承了其父接口 VRDisplay
的属性。
VRDisplay.displayId
只读-
返回此特定
VRDevice
的 ID。ID 不应跨浏览器重启更改,从而允许基于它保存配置数据。 VRDisplay.displayName
只读-
一个易于理解的名称,用于标识
VRDevice
。
示例
以下示例使用 WebVR API 在 requestAnimationFrame
循环的每一帧上更新简单 2D 画布 场景的视图。
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;
}
}
这里我们使用 PositionSensorVRDevice.getState()
获取 VRPose
对象并将其存储在 posState
中。然后,我们使用 VRPose.position
和 VRPose.orientation
检查当前帧中是否存在位置和方向信息(例如,如果头戴式显示器关闭或未指向位置传感器,则这些信息将返回 null
,这将导致错误。)
然后,出于信息目的,我们输出 x、y 和 z 位置以及方向值,并使用这些值更新 xPos
、yPos
、zPos
、xOrient
、yOrient
和 zOrient
变量,这些变量用于在每一帧上更新场景渲染。
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。