-
-
Notifications
You must be signed in to change notification settings - Fork 186
Description
Summary
A list of all of the current components in the React Three XR library, tracking which examples / tutorials exist for them, and which tutorials / examples still need to be written. This is intended to be a living document that gets updated as things change and tasks get completed. By the end of this, the docs should be pretty robust ;)
Current State
- ✅ - Completely covered with a fully filled out jsdoc
- ☑️ - Completely covered with existing examples and tutorials
- 🟨 - Partially covered by either an example or tutorial
- ⛔ - Not covered by either an example or a tutorial
Anchors
useRequestXRAnchor ⛔
useXRAnchor 🟨: Needs Example
Hit Testing
XRHitTest ✅
useXRHitTest ✅
useXRHitTestSource ✅
useXRRequestHitTest ✅
Physics based AR interactions
useInitRoomCapture ⛔
Movement
useXRControllerLocomotion ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
TeleportTarget ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
Customizing Controller
XRControllerComponent 🟨: Needs tutorial
XRControllerModel 🟨: Needs tutorial
useLoadXRControllerLayout 🟨: Needs tutorial
useLoadXRControllerModel 🟨: Needs tutorial
useXRControllerButtonEvent ⛔
DefaultXRController ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
DefaultXRControllerGrabPointer ⛔
DefaultXRGaze 🟨: Needs example
DefaultXRInputSourceRayPointer ⛔
DefaultXRInputSourceTeleportPointer ⛔
DefaultXRScreenInput 🟨: Needs example
DefaultXRTransientPointer 🟨: Needs example
Customizing Hands
XRHandModel ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
DefaultXRHandGrabPointer ⛔
DefaultXRHandTouchPointer ⛔
DefaultXRHand ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
Customizing Pointer
Input Methods
useHover 🟨: Needs tutorial
CombinedPointer ⛔
PointerCursorModel 🟨: Needs example
PointerRayModel ⛔
useGrabPointer ⛔
useLinesPointer ⛔
usePointerXRInputSourceEvents ⛔
useRayPointer ⛔
useTouchPointer 🟨: Needs example
useXRInputSourceEvent ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc. Could use a better tutorial
Overlays / HUD
XRDomOverlay ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
NotInXR 🟨: Needs tutorial
Guards and Checks
IfFacingCamera ⛔
ShowIfFacingCamera ⛔
IfSessionVisible ⛔
ShowIfSessionVisible ⛔
IfInSessionMode ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
ShowIfInSessionMode ⛔
IfSessionModeSupported ⛔
ShowIfSessionModeSupported ⛔
useXRSessionFeatureEnabled ⛔
useXRSessionModeSupported ⛔
useXRSessionVisibilityState ⛔
XR Layers, what they are and when to use them
XRLayer ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
XRSpace ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
XRSpaceType ⛔
useApplyXRSpaceMatrix ⛔
useGetXRSpaceMatrix ⛔
useXRSpace ⛔
Starting a Session and general flow of XR
XROrigin ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
XR ☑️ : Needs usage snippet, better description, and links to tutorial and example in jsdoc
createXRStore ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
useXR ☑️ : Needs usage snippet, and links to tutorial and example in jsdoc
useXRStore ⛔
XRGeometry? (Not sure what these do)
XRMeshModel 🟨: Needs example
useXRMeshGeometry ⛔
useXRMeshes 🟨: Needs example
XRPlaneModel 🟨: Needs example
useXRPlaneGeometry ⛔
useXRPlanes 🟨: Needs example
Planned Tutorials
Tutorials that are planned to cover the items above that still need a tutorial
-
Object Detection: Update the existing Object Detection tutorial to better explain what these components are, why you would want to use them, and include
useXRPlaneGeometry
anduseXRMeshGeometry
- (useXRPlaneGeometry, useXRMeshGeometry)
-
XRSpaces Primer: Update the new XRSpaces Primer tutorial to touch on all of the hooks available for accessing and using spaces in WebXR, and when you would use each in WebXR
- (XRSpace, XRSpaceType, useApplyXRSpaceMatrix, useGetXRSpaceMatrix, useXRSpace)
-
Guards: Update the current Guards tutorial to touch on all of the other relevant guards
- (IfFacingCamera, ShowIfFacingCamera, IfSessionVisible, ShowIfSessionVisible, IfInSessionMode, ShowIfInSessionMode, IfSessionModeSupported, ShowIfSessionModeSupported, useXRSessionFeatureEnabled, useXRSessionModeSupported, useXRSessionVisibilityState)
-
Heads up Display: A tutorial explaining how to create the HUD example
-
Pointers: A tutorial explaining the various components and how to use them to customize things
- (CombinedPointer, PointerCursorModel, PointerRayModel, useGrabPointer, useLinesPointer, usePointerXRInputSourceEvents, useRayPointer, useTouchPointer, DefaultXRInputSourceTeleportPointer, DefaultXRControllerGrabPointer, DefaultXRInputSourceRayPointer, DefaultXRHandGrabPointer, DefaultXRHandTouchPointer DefaultXRTransientPointer)
-
Inputs and Events in WebXR: A lot of people get confused about this. It would be good to create a tutorial about how events work in React Three XR, how they relate to DOM events, and what the developer can do to customize/use them.
- (useHover)
-
Customizing Controllers and Hands: Update the existing tutorial to be clearer and easier to follow. Also include a section for updating the controllers
- (XRControllerComponent, XRControllerModel, useLoadXRControllerLayout, useLoadXRControllerModel, DefaultXRController, DefaultXRGaze, DefaultXRScreenInput, XRHandModel, DefaultXRHand, DefaultXRInputSourceTeleportPointer)
-
Grabbing/Equiping tutorial: Seems like a common use case that people would want to implement in their applications. Should touch on both physics and non physics scenarios
✅ Hit Test: Update the current hist testing tutorial to touch on the rest of the components in the library: (useXRHitTest, useXRHitTestSource, useXRRequestHitTest)
- Anchors: Update the anchor tutorial to touch on the other anchor component as well
- (useRequestXRAnchor)
Planned Examples
Examples that are planned to cover the items above that still need a tutorial
-
Guards and checks Playground: An example that showcases all of the different guards and checks that WebXR supports
- (IfFacingCamera, ShowIfFacingCamera, IfSessionVisible, ShowIfSessionVisible, IfInSessionMode, ShowIfInSessionMode, IfSessionModeSupported, ShowIfSessionModeSupported, useXRSessionFeatureEnabled, useXRSessionModeSupported, useXRSessionVisibilityState)
-
XRGeometry showcase: Not sure what this would entail but these needed an example
- (XRMeshModel, useXRMeshGeometry, useXRMeshes, XRPlaneModel, useXRPlaneGeometry, useXRPlanes)
-
Object detection example: An example to show off the XR geometry mesh and plane capabilitys in WebXR
- (XRMeshModel, useXRMeshGeometry, useXRMeshes, XRPlaneModel, useXRPlaneGeometry, useXRPlanes)
-
XRSpaces Primer: Update the new XRSpaces Primer example to include usages of the XR spaces hooks OR make a new example showing off the capabilities
- (XRSpace, XRSpaceType, useApplyXRSpaceMatrix, useGetXRSpaceMatrix, useXRSpace)
-
Heads Up Display: An example showing how to efficiently create a HUD. Many people have been asking for this
-
Pointers: An example showing off all of the cool pointer stuff that you can use in react three XR (Maybe a lazer pointer that you can swap out the colors of, and toggle what it affects)
- (CombinedPointer, PointerCursorModel, PointerRayModel, useGrabPointer, useLinesPointer, usePointerXRInputSourceEvents, useRayPointer, useTouchPointer)
-
Hand / Controller swap demo: An example where the user can swap out a number of different hands and controllers
- (XRControllerComponent, XRControllerModel, useLoadXRControllerLayout, useLoadXRControllerModel, DefaultXRController, DefaultXRGaze, DefaultXRScreenInput, XRHandModel, DefaultXRHand, DefaultXRInputSourceTeleportPointer)
-
Grabbing/Equiping example: Seems like a common use case that people would want to implement in their applications. Should touch on both physics and non physics scenarios
✅ Hit testing: Modify the duck example to include showcases for these components: (useXRHitTest, useXRHitTestSource, useXRRequestHitTest)
- Anchors: An example for creating and placing anchors. Perhaps a virtual picture hanging application?
- (useRequestXRAnchor, useXRAnchor)