Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web APIs
  3. WebXR Device API
  4. WebXR application life cycle

WebXR application life cycle

In this guide, we'll get a birds-eye view of what's involved in creating and driving a WebXR application, without diving down to the code level in detail. This serves as preparation for the next few articles in these WebXR guides, which coverstarting up and shutting down a WebXR session,geometry,simulating cameras,spatial tracking, and more.

Life cycle outline

Most applications using WebXR will follow a similar overall design pattern:

  1. Check to see if the user's device and browser are both capable of presenting the XR experience you want to provide.

    1. Make sure the WebXR API is available; ifnavigator.xr is undefined, you can assume the user's browser and/or device doesn't support WebXR. If it's not supported, disable any user interface used to activate XR features and abort any attempts to enter XR mode.
    2. Callnavigator.xr.isSessionSupported(), specifying the WebXR experience mode you want to provide:inline,immersive-vr, orimmersive-ar, in order to determine whether or not the type of session you wish to provide is available.
    3. If the session type you want to use is available, provide the appropriate interface to the user to allow them to activate it.
  2. When the user requests the activation of WebXR functionality by engaging with the user interface enabled above, request anXRSession using the desired mode. This is done by callingnavigator.xr.requestSession(), again specifying the string indicating the mode you want to enable:inline,immersive-vr, orimmersive-ar.

  3. If the promise returned byrequestSession() resolves, use the newXRSession to manage the WebXR session for the duration of the WebXR experience. This will involve managing inputs, animations, and rendering.

    1. Call theXRSession methodrequestAnimationFrame() to schedule the first frame render for the XR device.
    2. If your scene is complex, you should consider creating aWorker—or using one that you've previously created for this purpose—to perform the computations needed for each frame to be rendered. This will reduce the chance that the rendering process will noticeably stall the app.
    3. EachrequestAnimationFrame() callback should use the information provided about the objects located in the 3D world to render the frame using WebGL.
    4. Each time the callback is invoked, it should callrequestAnimationFrame() again in order to let the browser know that the callback needs to be run again when it's time to render the next frame.
  4. When the time comes (such as when the user exits your app or navigates away from your site), end the XR session; otherwise, continue the loop until the user chooses to exit XR mode.

    1. To end the XR session yourself, callXRSession.end().
    2. Include a handler for theXRSession eventend event to be informed when the session is ending, regardless of whether your code, the user, or the browser initiated the termination of the session.

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp