PositionSensorVRDevice: getImmediateState() 方法
已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
VRDisplay 接口的 getImmediateState() 方法返回当前瞬时位置传感器的状态。此方法仅用于极少数特殊用途,例如捕获手部方向传感器的即时位置——或者至少在未来是这样。
对于大多数标准用途,您可能应该使用 PositionSensorVRDevice.getState 替代。
语法
getImmediateState()
参数
无。
返回值
一个 VRPose 对象。
示例
以下演示使用 WebVR API 在 requestAnimationFrame 循环的每一帧更新一个简单的 CanvasRenderingContext2D 场景的视图。更新视图数据的主要函数如下:
function setView() {
const posState = gPositionSensor.getImmediateState();
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;
}
}
在这里,我们使用 getImmediateState() 获取一个 VRPose 对象,并将其存储在 posState 中(实际的实时演示使用 getState(),但目前两者似乎功能相同)。然后,我们使用 VRPose.position 和 VRPose.orientation 检查当前帧中是否包含位置和方向信息(如果,例如,头戴式显示器关闭或未指向位置传感器,这些会返回 null,从而导致错误)。
然后,我们输出 x、y 和 z 的位置和方向值以供信息参考,并使用这些值更新 xPos、yPos、zPos、xOrient、yOrient 和 zOrient 变量,这些变量用于在每一帧中更新场景渲染。
浏览器兼容性
加载中…