You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browser-based virtual and augmented reality support is an evolving technology made feasible by the WebXR API, preceded by now-deprecated APIs such as WebVR and Cardboard. WebXR browser adoption is growing with most major browsers (Chrome, Edge, Firefox) supporting the WebXR API to various extents.
We aim to add key feature support so that developers can deliver browser-based virtual and augmented reality scenes with the vtk.js platform. Features will be accompanied by documentation and example scenes for user and developer accessibility.
This roadmap provides a high-level overview of XR features we would like to pursue in VTK.js along with potential paths for implementation. Roadmap progress is highly dependent on stakeholders and relevant project needs. If you are interested in completing a feature on the roadmap, please consider leading or funding that development contribution to VTK.js.
Target Platforms
We aim to target the intersection of platforms supported by vtk.js and by WebXR; that is, devices and browsers supporting WebGL rendering along with the WebXR API.
Target hardware includes virtual reality and augmented reality headsets, mobile devices with AR capabilities, and holographic displays. Please see VTK.js WebXR documentation for a complete list of target devices.
A complete list of hardware supported by the WebXR standard may be found here.
Roadmap
The features below are planned for eventual support in VTK.js and are listed in rough expected chronological order. A timeline is not currently available for WebXR feature development.
1. Basic XR Rendering Support
We aim to initially support XR rendering for a tailored subset of XR target devices.
WebGPU / WebXR interoperation is currently in specification phase and is not yet implemented. We should keep an eye on its development.
Expose parameters for scene initialization (scale, rotation, translation) when launching into an XR scene. Currently resets to center the scene with set scale and rotation when entering XR.
Optimize rendering to the Looking Glass Factory display via reduced quilt size and on-demand rendering
Evaluate feasibility of porting vtkRenderWindowInteractor3D and vtkOpenXRInteractorStyle.h from VTK C++ OpenXR module to vtk.js. This would help to standardize VR/AR interactions and controls according to the vtk.js interaction system.
Implement vtk3DRenderWindowInteractor to handle 3D input events
Implement vtkXRRenderWindowInteractor to extend vtk3DRenderWindowInteractor with XR-specific events
The WebXR Gamepads Module extends the Gamepads API for VR and AR controllers, but in practice there are inconsistencies in how VR/AR event data is structured. Mobile AR interactions also typically yield 2D screen touch coordinates while HMD-based VR with controllers yields data with 3D spatial information. Consider whether we need bespoke interactors to handle events on different XR target platforms.
Implement vtkXRInteractorStyle to define how to handle XR-specific events
Consider whether we need more granular interactor styles such as vtkVRHMDInteractorStyle, vtkARMobileInteractorStyle, etc to appropriate handle view behavior
Implement basic VR controls for user comfort:
Locomotion in the direction of the controller
Locomotion in the direction of a selected camera view
Discrete, "snap" rotation by a fixed angle about the world "up" vector
Implement a vtkActor to render controller model(s) at controller positions for user comfort
Motivation
Browser-based virtual and augmented reality support is an evolving technology made feasible by the WebXR API, preceded by now-deprecated APIs such as WebVR and Cardboard. WebXR browser adoption is growing with most major browsers (Chrome, Edge, Firefox) supporting the WebXR API to various extents.
We aim to add key feature support so that developers can deliver browser-based virtual and augmented reality scenes with the vtk.js platform. Features will be accompanied by documentation and example scenes for user and developer accessibility.
This roadmap provides a high-level overview of XR features we would like to pursue in VTK.js along with potential paths for implementation. Roadmap progress is highly dependent on stakeholders and relevant project needs. If you are interested in completing a feature on the roadmap, please consider leading or funding that development contribution to VTK.js.
Target Platforms
We aim to target the intersection of platforms supported by vtk.js and by WebXR; that is, devices and browsers supporting WebGL rendering along with the WebXR API.
Target hardware includes virtual reality and augmented reality headsets, mobile devices with AR capabilities, and holographic displays. Please see VTK.js WebXR documentation for a complete list of target devices.
A complete list of hardware supported by the WebXR standard may be found here.
Roadmap
The features below are planned for eventual support in VTK.js and are listed in rough expected chronological order. A timeline is not currently available for WebXR feature development.
1. Basic XR Rendering Support
We aim to initially support XR rendering for a tailored subset of XR target devices.
Backlog:
Examples/Geometry/VR
fails to enter VR on first request #2136vtkWebXRRenderWindowHelper
#29242. Extend Supported Device List
We aim to support advanced rendering to the full list of target XR hardware. Scene interaction is not yet supported.
Backlog:
3. Basic XR Controls
We aim to add support for basic XR interactions with VTK.js scenes. We will loosely base interaction infrastructure on the vtkRenderWindowInteractor3D, vtkVRRenderWindowInteractor, and vtkVRInteractorStyle hierarchy defined in the VTK C++ library.
vtkRenderWindowInteractor3D
andvtkOpenXRInteractorStyle.h
from VTK C++ OpenXR module to vtk.js. This would help to standardize VR/AR interactions and controls according to the vtk.js interaction system.vtkVRHMDInteractorStyle
,vtkARMobileInteractorStyle
, etc to appropriate handle view behaviorBacklog:
4. Advanced XR Controls
We aim to add support for advanced XR interactions with VTK.js scenes.
5. Stretch Goals
This goals are not prioritized, but would be nice to have as part of the VTK.js WebXR feature set.
The text was updated successfully, but these errors were encountered: