VRPose

Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

The VRPose interface of the WebVR API represents the state of a VR sensor at a given timestamp (which includes orientation, position, velocity, and acceleration information.)

This interface is accessible through the VRDisplay.getPose() and VRDisplay.getFrameData() methods. VRDisplay.getPose() is deprecated.

Properties

VRPose.position Только для чтения
Returns the position of the VRDisplay at the current VRPose.timestamp as a 3D vector
VRPose.linearVelocity Только для чтения
Returns the linear velocity of the VRDisplay at the current VRPose.timestamp, in meters per second.
VRPose.linearAcceleration Только для чтения
Returns the linear acceleration of the VRDisplay at the current VRPose.timestamp, in meters per second per second.
VRPose.orientation Только для чтения
Returns the orientation of the sensor at the current VRPose.timestamp, as a quarternion value.
VRPose.angularVelocity Только для чтения
Returns the angular velocity of the VRDisplay at the current VRPose.timestamp, in radians per second.
VRPose.angularAcceleration Только для чтения
Returns the angular acceleration of the VRDisplay at the current VRPose.timestamp, in meters per second per second.

Obsolete properties

VRPose.timeStamp Только для чтения
Returns the current time stamp of the system — a monotonically increasing value useful for determining if position data has been updated, and what order updates have occured in. This version of timestamp has been removed from the spec — instead, timestamps are now returned when VRDisplay.getFrameData() is called — see VRFrameData.timestamp.

Examples

var frameData = new VRFrameData();
var vrDisplay;

navigator.getVRDisplays().then(function(displays) {
  vrDisplay = displays[0];
  console.log('Display found');
  // Starting the presentation when the button is clicked: It can only be called in response to a user gesture
  btn.addEventListener('click', function() {
    vrDisplay.requestPresent([{ source: canvas }]).then(function() {        
      drawVRScene();
    });
  });
});

// WebVR: Draw the scene for the WebVR display.
function drawVRScene() {
  // WebVR: Request the next frame of the animation
  vrSceneFrame = vrDisplay.requestAnimationFrame(drawVRScene);

  // Populate frameData with the data of the next frame to display
  vrDisplay.getFrameData(frameData);

  // You can get the position, orientation, etc. of the display from the current frame's pose
  // curFramePose is a VRPose object
  var curFramePose = frameData.pose;
  var curPos = curFramePose.position;
  var curOrient = curFramePose.orientation;

  // Clear the canvas before we start drawing on it.

  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

  // WebVR: Create the required projection and view matrix locations needed
  // for passing into the uniformMatrix4fv methods below

  var projectionMatrixLocation = gl.getUniformLocation(shaderProgram, "projMatrix");
  var viewMatrixLocation = gl.getUniformLocation(shaderProgram, "viewMatrix");

  // WebVR: Render the left eye’s view to the left half of the canvas
  gl.viewport(0, 0, canvas.width * 0.5, canvas.height);
  gl.uniformMatrix4fv(projectionMatrixLocation, false, frameData.leftProjectionMatrix);
  gl.uniformMatrix4fv(viewMatrixLocation, false, frameData.leftViewMatrix);
  drawGeometry();

  // WebVR: Render the right eye’s view to the right half of the canvas
  gl.viewport(canvas.width * 0.5, 0, canvas.width * 0.5, canvas.height);
  gl.uniformMatrix4fv(projectionMatrixLocation, false, frameData.rightProjectionMatrix);
  gl.uniformMatrix4fv(viewMatrixLocation, false, frameData.rightViewMatrix);
  drawGeometry();

  function drawGeometry() {
    // draw the view for each eye 
  }

    ...

  // WebVR: Indicate that we are ready to present the rendered frame to the VR display
  vrDisplay.submitFrame();
}

Note: You can see this complete code at raw-webgl-example.

Specifications

Specification Status Comment
WebVR 1.1
Определение 'VRPose' в этой спецификации.
Черновик Initial definition

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
VRPose
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки ≤18 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
angularAcceleration
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
angularVelocity
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
hasOrientation
ЭкспериментальнаяУстаревшаяНестандартная
Chrome Нет поддержки НетEdge Нет поддержки НетFirefox Нет поддержки НетIE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Нет поддержки Нет
hasPosition
ЭкспериментальнаяУстаревшаяНестандартная
Chrome Нет поддержки НетEdge Нет поддержки НетFirefox Нет поддержки НетIE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Нет поддержки Нет
linearAcceleration
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
linearVelocity
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
orientation
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
position
ЭкспериментальнаяУстаревшая
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Полная поддержка 55
Замечания
Полная поддержка 55
Замечания
Замечания Windows support was enabled in Firefox 55.
Полная поддержка 64
Замечания
Замечания macOS support was enabled in Firefox 64.
IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 56 — 80
Замечания Отключено
Нет поддержки 56 — 80
Замечания Отключено
Замечания Only works in an experimental version of Chrome. (Other builds won't return any devices when Navigator.getVRDisplays() is invoked.)
Замечания Daydream View supported in Chrome 56.
Замечания Google Cardboard supported in Chrome 57.
Отключено From version 56 until version 80 (exclusive): this feature is behind the WebVR preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 55Opera Android ? Safari iOS ? Samsung Internet Android Полная поддержка 6.0
Замечания
Полная поддержка 6.0
Замечания
Замечания Google Cardboard supported in Samsung Internet 7.0.
timestamp
ЭкспериментальнаяУстаревшаяНестандартная
Chrome Нет поддержки НетEdge Нет поддержки 15 — 79Firefox Нет поддержки НетIE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

See also