From ec074432011db895611f4ba3e692eb330625239a Mon Sep 17 00:00:00 2001
From: Leon van Kammen Almost every idea in this document is demonstrated at https://xrfragment.org
+
How can we add more control to existing text and 3D scenes, without introducing new dataformats?
+
XR Fragments utilizes URLs: for XR Browsers) Quick reference
+
+
+
+
+
Introduction
+
Historically, there’s many attempts to create the ultimate 3D fileformat.
The lowest common denominator is: designers describing/tagging/naming things using plain text.
@@ -118,6 +198,8 @@ XR Fragments exploits the fact that all 3D models already contain such metadata:
What is XR Fragments
+
@@ -129,6 +211,8 @@ XR Fragments exploits the fact that all 3D models already contain such metadata:
HFL (Hypermediatic Feedback Loop) for XR Browsers
+href metadata traditionally implies click AND navigate, however XR Fragments adds stateless click (xrf://....) via the xrf:// scheme, which does not change the top-level URL-adress (of the browser).
This allows for many extra interactions via URLs, which otherwise needs a scripting language.
These are called hashbus-only events/
+
See appendix below in case certain terms are not clear.
+
For typical HTTP-like browsers/applications:
reserved = gen-delims / sub-delims
@@ -272,6 +360,8 @@ That way, if the link gets shared, the XR Fragments implementation at http
Spatial Referencing 3D
+
+
3D files contain an hierarchy of objects.
XR Fragments assumes the following objectname-to-URI-Fragment mapping, in order to deeplink 3D objects:
@@ -310,6 +400,9 @@ For example, to render a portal with a preview-version of the scene, create an 3
Level0: Files
+
+
+
These are optional auto-loaded side-car files to enable hasslefree XR Movies.
they can accomodate developers or applications who (for whatever reason) must not modify the 3D scene-file (a .glb e.g.).
@@ -415,6 +508,8 @@ The sidecar will define (or override already existing) extras,
Level1: URI
+
+
XR Fragments allows deeplinking of 3D objects by mapping objectnames to URI fragments
@@ -479,7 +574,7 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
?-linked and #-linked navigation are JUST one possible way to implement XR Fragments: the essential goal is to allow a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation.
-List of URI Fragments
+List of URI Fragments
@@ -508,7 +603,7 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
-List of *explicit metadata
+List of *explicit metadata
These are the possible ‘extras’ for 3D nodes and sidecar-files
@@ -536,6 +631,8 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
Level2: href links
+
+
Explicit href metadata (‘extras’) in a 3D object (of a 3D file), hint the viewer that the user “can interact” with that object :
| fragment | type | example value |
@@ -565,6 +662,8 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
Level3: Media Fragments
+
+
these allow for XR Movies with a controllable timeline using href URI’s with Media Fragments
@@ -628,6 +727,8 @@ XR Fragments Level3 makes the 3D timeline, as well as URL-referenced files Level4: prefix operators
+
+
Prefixing objectnames with the following simple operators allow for extremely powerful XR interactions:
@@ -787,8 +888,17 @@ Clicking the href-value below will:
compliance with RFC 3986: unimplemented/unknown URI schemes (xrf:... e.g.) will not update the top-level URL
+Level5: URI Templates (RFC6570)
+
+)
+
+XR Fragments adopts Level1 URI Fragment expansion to provide safe interactivity.
+This is non-normative, and the draft spec is available on request.
+
Top-level URL processing
+
+
Example URL: ://foo/world.gltf#room1&t=10&cam
@@ -813,6 +923,8 @@ Clicking the href-value below will:
Example: Navigating content href portals
+
+
navigation, portals & mutations
@@ -873,7 +985,9 @@ Clicking the href-value below will:
optionally the viewer can offer thumbstick, mouse or joystick teleport-tools for non-roomscale VR/AR setups.
-Virtual world rings
+Example: Virtual world rings
+
+
Consider 3D scenes linking to eachother using these href values, attached to 3D button-objects:
@@ -892,13 +1006,10 @@ Now consider adding a ‘webring index’-button to each file, with this
This would allow displaying the (remote 3D file) webring menu with various href-buttons inside, all centrally curated by the workgroup.
-Level5: URI Templates (RFC6570)
-
-XR Fragments adopts Level1 URI Fragment expansion to provide safe interactivity.
-This is non-normative, and the draft spec is available on request.
-
Additional scene metadata
+
+
XR Fragments does not aim to redefine the metadata-space or accessibility-space by introducing its own cataloging-metadata fields.
Instead, it encourages browsers to scan nodes for the following custom properties:
@@ -997,6 +1108,8 @@ Instead, it encourages browsers to scan nodes for the following custom propertie
Accessibility interface
+
+
The addressibility of XR Fragments allows for unique 3D-to-text transcripts, as well as an textual interface to navigate 3D content.
Spec:
@@ -1057,7 +1170,9 @@ If a glTF implementation does not support a particular extension, the (XRF) extr
Example 2 If an Extensions uses XR Fragments in URI’s (href: #otherroom or href: xrf://-walls in OMI_LINK e.g.), then perform them according to XR Fragment spec (teleport user). But only once: ignore further overlapping metadata for that usecase.
-Vendor Prefixes
+Vendor Prefixes
+
+
Vendor-specific metadata in a 3D scenefiles, are similar to vendor-specific CSS-prefixes (-moz-opacity: 0.2 e.g.).
This allows popular 3D engines/frameworks, to initialize specific features when loading a scene/object, in a progressive enhanced way.
@@ -1145,12 +1260,16 @@ The lowest common denominator between 3D engines is the ‘entity’-par
Security Considerations
+
+
The only dynamic parts are W3C Media Fragments and URI Templates (RFC6570).
The use of URI Templates is limited to pre-defined variables and Level0 fragments-expansion only, which makes it quite safe.
n fact, it is much safer than relying on a scripting language (javascript) which can change URN too.
FAQ
+
+
Q: Why is everything HTTP GET-based, what about POST/PUT/DELETE HATEOS
A: Because it’s out of scope: XR Fragment specifies a read-only way to surf XR documents. These things belong in the application layer (for example, an XR Hypermedia browser can decide to support POST/PUT/DELETE requests for embedded HTML thru src values)
@@ -1164,6 +1283,8 @@ Non-HTML Hypermedia browsers should make browser extensions the right place, to
authors
+
+
- Leon van Kammen (@lvk@mastodon.online)
- Jens Finkhäuser (@jens@social.finkhaeuser.de)
@@ -1171,10 +1292,14 @@ Non-HTML Hypermedia browsers should make browser extensions the right place, to
IANA Considerations
+
+
This document has no IANA actions.
Acknowledgments
+
+
- NLNET
- Future of Text
@@ -1192,6 +1317,8 @@ Non-HTML Hypermedia browsers should make browser extensions the right place, to
Appendix: Definitions
+
+
@@ -1342,6 +1469,149 @@ Non-HTML Hypermedia browsers should make browser extensions the right place, to
+Index
+
+
+- A
+-
+
+
+
+
+- C
+-
+
+-
+Conventions and Definitions [go]
+
+
+
+
+
+- F
+-
+
+-
+FAQ [go]
+
+
+
+
+- H
+-
+
+-
+HFL (Hypermediatic Feedback Loop [go]
+
+
+
+
+
+- L
+-
+
+
+
+
+
+- T
+-
+
+-
+Top-level URL processing [go]
+
+
+
+
+- V
+-
+
+-
+Vendor Prefixes [go]
+
+
+
+
+- W
+-
+
+-
+What is XR Fragments [go]
+
+
+
+
+- X
+-
+
+-
+XR Fragment URL Grammar [go]
+
+
+
+
+- a
+-
+
+-
+authors [go]
+
+
+
+
+