main: update documentation

This commit is contained in:
Leon van Kammen 2024-06-17 05:59:51 +00:00
parent b1a518bbd8
commit 093de1ec6f
4 changed files with 234 additions and 278 deletions

View File

@ -664,7 +664,7 @@ For example, to render a portal with a preview-version of the scene, create an 3
│ index.gltf#playall │
│ │ │
│ ├ # : #t=0&shared=play │ apply default XR Fragment on load (`t` plays global 3D animation timeline)
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ ├ play : #t=0&loop │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │
│ ├── ◻ plane (with material) │
│ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
@ -947,33 +947,15 @@ How does the scale of the object (with the embedded properties) impact the scale
<h1 id="xr-fragment-pos">XR Fragment: pos</h1>
<p>[[» example implementation|<a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]</a>]<br></p>
<h1 id="xr-fragment-rot">XR Fragment: rot</h1>
<p>[[» example implementation|<a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]</a>]<br></p>
<h1 id="xr-fragment-t">XR Fragment: t</h1>
<p>controls the animation(s) of the scene (or <code>src</code> resource which contains a timeline)</p>
<p>| fragment | type | functionality |
| <b>#t</b>=1,1,100 | <a href="default:`#t=1,0,0`">[vector3|vector]</a> | speed,framestart,framestop |</p>
<ul>
<li>playposition is reset to framestart, when framestart or framestop is greater than 0 |</li>
</ul>
<p>| Example Value | Explanation |
|-|-|
| <code>1,1,100</code> | play loop between frame 1 and 100 |
| <code>1,1,0</code> | play once from frame 1 (oneshot) |
| <code>1,0,0</code> | play (previously set looprange if any) |
| <code>0,0,0</code> | pause |
| <code>1,1,1</code> | play and auto-loop between begin and end of duration |
| <code>-1,0,0</code> | reverse playback speed |
| <code>2.3,0,0</code> | set (forward) playback speed to 2.3 (no restart) |
| <code>-2.3,0,0</code> | set (reverse) playback speed to -2.3 ( no restart)|
| <code>-2.3,100,0</code> | set (reverse) playback speed to -2.3 restarting from frame 100 |</p>
<p>[[» example implementation|<a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]</a>]<br>
[[» discussion|<a href="https://github.com/coderofsalvation/xrfragment/issues/10]">https://github.com/coderofsalvation/xrfragment/issues/10]</a>]<br></p>
<p>[[» example implementation|<a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]</a>]<br></p>
<h1 id="xr-audio-video-integration">XR audio/video integration</h1>
@ -981,10 +963,10 @@ How does the scale of the object (with the embedded properties) impact the scale
<ol>
<li>add a <code>src: foo.mp3</code> or <code>src: bar.mp4</code> metadata to a 3D object (<code>cube</code> e.g.)</li>
<li>to disable auto-play and global timeline ([[#t=|t]]) control: hardcode a [[#t=|t]] XR Fragment: (<code>src: bar.mp3#t=0,0,0</code> e.g.)</li>
<li>to enable auto-play and global timeline ([[#t=|t]]) control: hardcode a [[#t=|t]] XR Fragment: (<code>src: bar.mp3#t=0&amp;loop</code> e.g.)</li>
<li>to play it, add <code>href: #cube</code> somewhere else</li>
<li>when the enduser clicks the <code>href</code>, <code>#t=1,0,0</code> (play) will be applied to the <code>src</code> value</li>
<li>to play a single animation, add href: #animationname=1,0,0 somewhere else</li>
<li>to enable enduser-triggered play, use a [[URI Template]] XR Fragment: (<code>src: bar.mp3#{player}</code> and <code>play: t=0&amp;loop</code> and <code>href: xrf://#player=play</code> e.g.)</li>
<li>when the enduser clicks the <code>href</code>, <code>#t=0&amp;loop</code> (play) will be applied to the <code>src</code> value</li>
</ol>
<blockquote>
@ -1636,6 +1618,8 @@ Spec:<br><Br></p>
<li>The enduser must be able to enable an accessibility-mode (which persists across application/webpage restarts)</li>
<li>Accessibility-mode must contain a text-input for the user to enter text</li>
<li>Accessibility-mode must contain a flexible textlog for the user to read (via screenreader, screen, or TTS e.g.)</li>
<li>the textlog contains <code>aria-descriptions</code>, and its narration (Screenreader e.g.) can be skipped (via cycling href&rsquo;s, see next rule)</li>
<li>href&rsquo;s can be cycled via tab (keyboard) or &lsquo;skip&rsquo; command</li>
<li>The <code>back</code> command should navigate back to the previous URL (alias for browser-backbutton)</li>
<li>The <code>forward</code> command should navigate back to the next URL (alias for browser-nextbutton)</li>
<li>A destination is a 3D node containing an <code>href</code> with a <code>pos=</code> XR fragment</li>

View File

@ -349,7 +349,7 @@ Example URI's:
│ index.gltf#playall │
│ │ │
│ ├ # : #t=0&shared=play │ apply default XR Fragment on load (`t` plays global 3D animation timeline)
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ ├ play : #t=0&loop │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │
│ ├── ◻ plane (with material) │
│ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
@ -559,41 +559,25 @@ How does the scale of the object (with the embedded properties) impact the scale
# XR Fragment: pos
[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]]<br>
# XR Fragment: rot
[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]]<br>
# XR Fragment: t
controls the animation(s) of the scene (or `src` resource which contains a timeline)
| fragment | type | functionality |
| <b>#t</b>=1,1,100 | [[vector3|vector]] (default:`#t=1,0,0`) | speed,framestart,framestop |
* playposition is reset to framestart, when framestart or framestop is greater than 0 |
| Example Value | Explanation |
|-|-|
| `1,1,100` | play loop between frame 1 and 100 |
| `1,1,0` | play once from frame 1 (oneshot) |
| `1,0,0` | play (previously set looprange if any) |
| `0,0,0` | pause |
| `1,1,1` | play and auto-loop between begin and end of duration |
| `-1,0,0` | reverse playback speed |
| `2.3,0,0` | set (forward) playback speed to 2.3 (no restart) |
| `-2.3,0,0` | set (reverse) playback speed to -2.3 ( no restart)|
| `-2.3,100,0` | set (reverse) playback speed to -2.3 restarting from frame 100 |
[[» example implementation|https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]]<br>
[[» discussion|https://github.com/coderofsalvation/xrfragment/issues/10]]<br>
# XR audio/video integration
To play global audio/video items:
1. add a `src: foo.mp3` or `src: bar.mp4` metadata to a 3D object (`cube` e.g.)
1. to disable auto-play and global timeline ([[#t=|t]]) control: hardcode a [[#t=|t]] XR Fragment: (`src: bar.mp3#t=0,0,0` e.g.)
1. to enable auto-play and global timeline ([[#t=|t]]) control: hardcode a [[#t=|t]] XR Fragment: (`src: bar.mp3#t=0&loop` e.g.)
1. to play it, add `href: #cube` somewhere else
1. when the enduser clicks the `href`, `#t=1,0,0` (play) will be applied to the `src` value
1. to play a single animation, add href: #animationname=1,0,0 somewhere else
1. to enable enduser-triggered play, use a [[URI Template]] XR Fragment: (`src: bar.mp3#{player}` and `play: t=0&loop` and `href: xrf://#player=play` e.g.)
1. when the enduser clicks the `href`, `#t=0&loop` (play) will be applied to the `src` value
> NOTE: hardcoded framestart/framestop uses sampleRate/fps of embedded audio/video, otherwise the global fps applies. For more info see [[#t|t]].
@ -1081,19 +1065,21 @@ Spec:<br><Br>
1. The enduser must be able to enable an accessibility-mode (which persists across application/webpage restarts)
2. Accessibility-mode must contain a text-input for the user to enter text
3. Accessibility-mode must contain a flexible textlog for the user to read (via screenreader, screen, or TTS e.g.)
4. The `back` command should navigate back to the previous URL (alias for browser-backbutton)
5. The `forward` command should navigate back to the next URL (alias for browser-nextbutton)
6. A destination is a 3D node containing an `href` with a `pos=` XR fragment
7. The `go` command should list all possible destinations
8. The `go left` command should move the camera around 0.3 meters to the left
9. The `go right` command should move the camera around 0.3 meters to the right
10. The `go forward` command should move the camera 0.3 meters forward (direction of current rotation).
11. The `rotate left` command should rotate the camera 0.3 to the left
12. The `rotate left` command should rotate the camera 0.3 to the right
13. The (dynamic) `go abc` command should navigate to `#pos=scene2` in case there's a 3D node with name `abc` and `href` value `#pos=scene2`
14. The `look` command should give an (contextual) 3D-to-text transcript, by scanning the `aria-description` values of the current `pos=` value (including its children)
15. The `do` command should list all possible `href` values which don't contain an `pos=` XR Fragment
16. The (dynamic) `do abc` command should navigate/execute `https://.../...` in case a 3D node exist with name `abc` and `href` value `https://.../...`
4. the textlog contains `aria-descriptions`, and its narration (Screenreader e.g.) can be skipped (via cycling href's, see next rule)
5. href's can be cycled via tab (keyboard) or 'skip' command
6. The `back` command should navigate back to the previous URL (alias for browser-backbutton)
7. The `forward` command should navigate back to the next URL (alias for browser-nextbutton)
8. A destination is a 3D node containing an `href` with a `pos=` XR fragment
9. The `go` command should list all possible destinations
10. The `go left` command should move the camera around 0.3 meters to the left
11. The `go right` command should move the camera around 0.3 meters to the right
12. The `go forward` command should move the camera 0.3 meters forward (direction of current rotation).
13. The `rotate left` command should rotate the camera 0.3 to the left
14. The `rotate left` command should rotate the camera 0.3 to the right
15. The (dynamic) `go abc` command should navigate to `#pos=scene2` in case there's a 3D node with name `abc` and `href` value `#pos=scene2`
16. The `look` command should give an (contextual) 3D-to-text transcript, by scanning the `aria-description` values of the current `pos=` value (including its children)
17. The `do` command should list all possible `href` values which don't contain an `pos=` XR Fragment
18. The (dynamic) `do abc` command should navigate/execute `https://.../...` in case a 3D node exist with name `abc` and `href` value `https://.../...`
# Security Considerations

View File

@ -3,7 +3,7 @@
Jens & Leon Internet Engineering Task Force L.R. van Kammen
Internet-Draft 9 May 2024
Internet-Draft 17 June 2024
Intended status: Informational
@ -46,16 +46,16 @@ Status of This Memo
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 10 November 2024.
This Internet-Draft will expire on 19 December 2024.
van Kammen Expires 10 November 2024 [Page 1]
van Kammen Expires 19 December 2024 [Page 1]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
Copyright Notice
@ -94,9 +94,9 @@ Table of Contents
11. XR Fragment: pos . . . . . . . . . . . . . . . . . . . . . . 22
12. XR Fragment: rot . . . . . . . . . . . . . . . . . . . . . . 22
13. XR Fragment: t . . . . . . . . . . . . . . . . . . . . . . . 22
14. XR audio/video integration . . . . . . . . . . . . . . . . . 23
14. XR audio/video integration . . . . . . . . . . . . . . . . . 22
15. XR Fragment filters . . . . . . . . . . . . . . . . . . . . . 23
15.1. including/excluding . . . . . . . . . . . . . . . . . . 24
15.1. including/excluding . . . . . . . . . . . . . . . . . . 23
15.2. Filter Parser . . . . . . . . . . . . . . . . . . . . . 24
16. Visible links . . . . . . . . . . . . . . . . . . . . . . . . 25
17. Text in XR (tagging,linking to spatial objects) . . . . . . . 25
@ -109,18 +109,18 @@ Table of Contents
van Kammen Expires 10 November 2024 [Page 2]
van Kammen Expires 19 December 2024 [Page 2]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
21. Additional scene metadata . . . . . . . . . . . . . . . . . . 35
22. Accessibility interface . . . . . . . . . . . . . . . . . . . 37
23. Security Considerations . . . . . . . . . . . . . . . . . . . 37
23. Security Considerations . . . . . . . . . . . . . . . . . . . 38
24. FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
25. authors . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
26. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38
27. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 38
26. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39
27. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 39
28. Appendix: Definitions . . . . . . . . . . . . . . . . . . . . 39
1. Introduction
@ -165,9 +165,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 3]
van Kammen Expires 19 December 2024 [Page 3]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
XR Fragments tries to seek to connect the world of text (semantical
@ -221,9 +221,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 4]
van Kammen Expires 19 December 2024 [Page 4]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
+───────────────────────────────────────────────────────────────────────────────────────────────+
@ -277,9 +277,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 5]
van Kammen Expires 19 December 2024 [Page 5]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
* allowing 3D assets/nodes to publish XR Fragments to themselves/
@ -333,9 +333,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 6]
van Kammen Expires 19 December 2024 [Page 6]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
+=========+======================+=====================================+
@ -389,9 +389,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 7]
van Kammen Expires 19 December 2024 [Page 7]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
4. Conventions and Definitions
@ -445,9 +445,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 8]
van Kammen Expires 19 December 2024 [Page 8]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
my.io/scene.fbx
@ -501,9 +501,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 9]
van Kammen Expires 19 December 2024 [Page 9]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
|Media Fragments |media fragment |#t=0,2&loop |play (and |
@ -557,9 +557,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 10]
van Kammen Expires 19 December 2024 [Page 10]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
6.2. Fragment-to-metadata mapping
@ -613,9 +613,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 11]
van Kammen Expires 19 December 2024 [Page 11]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
| | | | |metadata (bar:#t=0 |
@ -669,9 +669,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 12]
van Kammen Expires 19 December 2024 [Page 12]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
| temporal | s=x | 1 | set playback |
@ -725,9 +725,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 13]
van Kammen Expires 19 December 2024 [Page 13]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
| | | | uv |
@ -781,9 +781,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 14]
van Kammen Expires 19 December 2024 [Page 14]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
+──────────────────────────────────────────────────────────+
@ -791,7 +791,7 @@ Internet-Draft XR Fragments May 2024
│ index.gltf#playall │
│ │ │
│ ├ # : #t=0&shared=play │ apply default XR Fragment on load (`t` plays global 3D animation timeline)
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ ├ play : #t=0&loop │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │
│ ├── ◻ plane (with material) │
│ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
@ -837,9 +837,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 15]
van Kammen Expires 19 December 2024 [Page 15]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
1. the Y-coordinate of pos identifies the floorposition. This means
@ -893,9 +893,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 16]
van Kammen Expires 19 December 2024 [Page 16]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
1. IF a #cube matches a custom property-key (of an object) in the 3D
@ -949,9 +949,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 17]
van Kammen Expires 19 December 2024 [Page 17]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
+────────────────────────────────────────────────────────+ +─────────────────────────+
@ -1005,9 +1005,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 18]
van Kammen Expires 19 December 2024 [Page 18]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
6. <b>external</b> src values should be served with appropriate
@ -1061,9 +1061,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 19]
van Kammen Expires 19 December 2024 [Page 19]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
+==========+==================+============================+
@ -1117,9 +1117,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 20]
van Kammen Expires 19 December 2024 [Page 20]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
» example implementation
@ -1173,9 +1173,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 21]
van Kammen Expires 19 December 2024 [Page 21]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
* calculate the <b>bounding box</b> of the instanced scene, and
@ -1193,46 +1193,24 @@ Internet-Draft XR Fragments May 2024
11. XR Fragment: pos
[[» example implementation|https://github.com/coderofsalvation/xrfrag
ment/blob/main/src/3rd/js/three/xrf/pos.js]
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/pos.js])]
12. XR Fragment: rot
[[» example implementation|https://github.com/coderofsalvation/xrfrag
ment/blob/main/src/3rd/js/three/xrf/pos.js]
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/pos.js])]
13. XR Fragment: t
controls the animation(s) of the scene (or src resource which
contains a timeline)
| fragment | type | functionality | | <b>#t</b>=1,1,100 |
[vector3|vector] (default:`#t=1,0,0`) | speed,framestart,framestop |
* playposition is reset to framestart, when framestart or framestop
is greater than 0 |
| Example Value | Explanation | |-|-| | 1,1,100 | play loop between
frame 1 and 100 | | 1,1,0 | play once from frame 1 (oneshot) | |
1,0,0 | play (previously set looprange if any) | | 0,0,0 | pause | |
1,1,1 | play and auto-loop between begin and end of duration | |
-1,0,0 | reverse playback speed | | 2.3,0,0 | set (forward) playback
speed to 2.3 (no restart) | | -2.3,0,0 | set (reverse) playback speed
to -2.3 ( no restart)| | -2.3,100,0 | set (reverse) playback speed to
-2.3 restarting from frame 100 |
[[» example implementation|https://github.com/coderofsalvation/xrfrag
ment/blob/main/src/3rd/js/three/xrf/t.js]
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/t.js])]
[[» discussion|https://github.com/coderofsalvation/xrfragment/
issues/10] (https://github.com/coderofsalvation/xrfragment/
issues/10])]
van Kammen Expires 10 November 2024 [Page 22]
Internet-Draft XR Fragments May 2024
14. XR audio/video integration
@ -1240,13 +1218,21 @@ Internet-Draft XR Fragments May 2024
1. add a src: foo.mp3 or src: bar.mp4 metadata to a 3D object (cube
e.g.)
2. to disable auto-play and global timeline ([[#t=|t]]) control:
hardcode a [[#t=|t]] XR Fragment: (src: bar.mp3#t=0,0,0 e.g.)
2. to enable auto-play and global timeline ([[#t=|t]]) control:
hardcode a [[#t=|t]] XR Fragment: (src: bar.mp3#t=0&loop e.g.)
3. to play it, add href: #cube somewhere else
4. when the enduser clicks the href, #t=1,0,0 (play) will be applied
to the src value
5. to play a single animation, add href: #animationname=1,0,0
somewhere else
4. to enable enduser-triggered play, use a [[URI Template]] XR
Fragment: (src: bar.mp3#{player} and play: t=0&loop and href:
xrf://#player=play e.g.)
5. when the enduser clicks the href, #t=0&loop (play) will be
applied to the src value
van Kammen Expires 19 December 2024 [Page 22]
Internet-Draft XR Fragments June 2024
| NOTE: hardcoded framestart/framestop uses sampleRate/fps of
| embedded audio/video, otherwise the global fps applies. For more
@ -1281,15 +1267,6 @@ Internet-Draft XR Fragments May 2024
which used a dedicated q= variable (now deprecated and usable
directly)
van Kammen Expires 10 November 2024 [Page 23]
Internet-Draft XR Fragments May 2024
15.1. including/excluding
By default, selectors work like photoshop-layers: they scan for
@ -1297,6 +1274,22 @@ Internet-Draft XR Fragments May 2024
object (not their children) will be toggled (in)visible when
selecting.
van Kammen Expires 19 December 2024 [Page 23]
Internet-Draft XR Fragments June 2024
+==========+==============================================+
| operator | info |
+==========+==============================================+
@ -1337,15 +1330,6 @@ Internet-Draft XR Fragments May 2024
1. create an associative array/object to store filter-arguments as
objects
van Kammen Expires 10 November 2024 [Page 24]
Internet-Draft XR Fragments May 2024
2. detect object id's & properties foo=1 and foo (reference regex=
~/^.*=[><=]?/ )
3. detect excluders like -foo,-foo=1,-.foo,-/foo (reference regex=
@ -1354,6 +1338,14 @@ Internet-Draft XR Fragments May 2024
5. detect number values like foo=1 (reference regex= /^[0-9\.]+$/ )
6. detect operators so you can easily strip keys (reference regex=
/(^-|\*$)/ )
van Kammen Expires 19 December 2024 [Page 24]
Internet-Draft XR Fragments June 2024
7. detect exclude keys like -foo (reference regex= /^-/ )
8. for every filter token split string on =
9. and we set root to true or false (true=/ root selector is
@ -1394,19 +1386,22 @@ Internet-Draft XR Fragments May 2024
How does XR Fragments interlink text with objects?
van Kammen Expires 10 November 2024 [Page 25]
Internet-Draft XR Fragments May 2024
| The XR Fragments does this by collapsing space into a *Word Graph*
| (the *XRWG* example
| (https://github.com/coderofsalvation/xrfragment/blob/feat/macros/
| src/3rd/js/XRWG.js)), augmented by Bib(s)Tex.
van Kammen Expires 19 December 2024 [Page 25]
Internet-Draft XR Fragments June 2024
Instead of just throwing together all kinds media types into one
experience (games), what about their tagged/semantical relationships?
Perhaps the following question is related: why is HTML adopted less
@ -1453,9 +1448,14 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 26]
van Kammen Expires 19 December 2024 [Page 26]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
http://y.io/z.fbx | Derived XRWG (expressed as BibTex)
@ -1509,9 +1509,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 27]
van Kammen Expires 19 December 2024 [Page 27]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
As seen above, the XRWG can expand bibs
@ -1565,9 +1565,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 28]
van Kammen Expires 19 December 2024 [Page 28]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
12. Default font (unless specified otherwise) is a modern monospace
@ -1621,9 +1621,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 29]
van Kammen Expires 19 December 2024 [Page 29]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
* lines beginning with @ will not be rendered verbatim by default
@ -1677,9 +1677,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 30]
van Kammen Expires 19 December 2024 [Page 30]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
+--------------------------------------------------------------+ +------------------------+
@ -1733,9 +1733,9 @@ xrtext = {
van Kammen Expires 10 November 2024 [Page 31]
van Kammen Expires 19 December 2024 [Page 31]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
// bibtex: ↓@ ↓<tag|tag{phrase,|{ruler}> ↓property ↓end
@ -1789,9 +1789,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 32]
van Kammen Expires 19 December 2024 [Page 32]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
str = `
@ -1845,9 +1845,9 @@ console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back to
van Kammen Expires 10 November 2024 [Page 33]
van Kammen Expires 19 December 2024 [Page 33]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
2. mirroring files on another protocol using (HTTP) errorcode tags
@ -1901,9 +1901,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 34]
van Kammen Expires 19 December 2024 [Page 34]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
* href: university.edu/projects.gltf#math&-theme math
@ -1957,9 +1957,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 35]
van Kammen Expires 19 December 2024 [Page 35]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
* BibTex (https://bibtex.eu/fields) when known bibtex-keys exist
@ -2013,9 +2013,9 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 36]
van Kammen Expires 19 December 2024 [Page 36]
Internet-Draft XR Fragments May 2024
Internet-Draft XR Fragments June 2024
22. Accessibility interface
@ -2031,33 +2031,49 @@ Internet-Draft XR Fragments May 2024
enter text
3. Accessibility-mode must contain a flexible textlog for the user
to read (via screenreader, screen, or TTS e.g.)
4. The back command should navigate back to the previous URL (alias
4. the textlog contains aria-descriptions, and its narration
(Screenreader e.g.) can be skipped (via cycling href's, see next
rule)
5. href's can be cycled via tab (keyboard) or 'skip' command
6. The back command should navigate back to the previous URL (alias
for browser-backbutton)
5. The forward command should navigate back to the next URL (alias
7. The forward command should navigate back to the next URL (alias
for browser-nextbutton)
6. A destination is a 3D node containing an href with a pos= XR
8. A destination is a 3D node containing an href with a pos= XR
fragment
7. The go command should list all possible destinations
8. The go left command should move the camera around 0.3 meters to
9. The go command should list all possible destinations
10. The go left command should move the camera around 0.3 meters to
the left
9. The go right command should move the camera around 0.3 meters to
11. The go right command should move the camera around 0.3 meters to
the right
10. The go forward command should move the camera 0.3 meters forward
12. The go forward command should move the camera 0.3 meters forward
(direction of current rotation).
11. The rotate left command should rotate the camera 0.3 to the left
12. The rotate left command should rotate the camera 0.3 to the
13. The rotate left command should rotate the camera 0.3 to the left
14. The rotate left command should rotate the camera 0.3 to the
right
13. The (dynamic) go abc command should navigate to #pos=scene2 in
15. The (dynamic) go abc command should navigate to #pos=scene2 in
case there's a 3D node with name abc and href value #pos=scene2
14. The look command should give an (contextual) 3D-to-text
16. The look command should give an (contextual) 3D-to-text
transcript, by scanning the aria-description values of the
current pos= value (including its children)
15. The do command should list all possible href values which don't
17. The do command should list all possible href values which don't
contain an pos= XR Fragment
16. The (dynamic) do abc command should navigate/execute
18. The (dynamic) do abc command should navigate/execute
https://.../... in case a 3D node exist with name abc and href
value https://.../...
van Kammen Expires 19 December 2024 [Page 37]
Internet-Draft XR Fragments June 2024
23. Security Considerations
The only dynamic parts are W3C Media Fragments
@ -2066,14 +2082,6 @@ Internet-Draft XR Fragments May 2024
The use of URI Templates is limited to pre-defined variables and
Level0 fragments-expansion only, which makes it quite safe.
In fact, it is much safer than relying on a scripting language
van Kammen Expires 10 November 2024 [Page 37]
Internet-Draft XR Fragments May 2024
(javascript) which can change URN too.
24. FAQ
@ -2114,6 +2122,14 @@ Internet-Draft XR Fragments May 2024
* Leon van Kammen (@lvk@mastodon.online)
* Jens Finkhäuser (@jens@social.finkhaeuser.de)
van Kammen Expires 19 December 2024 [Page 38]
Internet-Draft XR Fragments June 2024
26. IANA Considerations
This document has no IANA actions.
@ -2122,14 +2138,6 @@ Internet-Draft XR Fragments May 2024
* NLNET (https://nlnet.nl)
* Future of Text (https://futureoftext.org)
van Kammen Expires 10 November 2024 [Page 38]
Internet-Draft XR Fragments May 2024
* visual-meta.info (https://visual-meta.info)
* Michiel Leenaars
* Gerben van der Broeke
@ -2170,6 +2178,14 @@ Internet-Draft XR Fragments May 2024
| | Object(nodes), relevant to machines and a |
| | human minority (academics/developers) |
+-----------------+---------------------------------------------+
van Kammen Expires 19 December 2024 [Page 39]
Internet-Draft XR Fragments June 2024
| XR fragment | URI Fragment with spatial hints like |
| | #pos=0,0,0&t=1,100 e.g. |
+-----------------+---------------------------------------------+
@ -2178,14 +2194,6 @@ Internet-Draft XR Fragments May 2024
| the hashbus | hashtags map to camera/scene-projections |
+-----------------+---------------------------------------------+
| spacetime | positions camera, triggers scene-preset/ |
van Kammen Expires 10 November 2024 [Page 39]
Internet-Draft XR Fragments May 2024
| hashtags | time |
+-----------------+---------------------------------------------+
| teleportation | repositioning the enduser to a different |
@ -2226,6 +2234,14 @@ Internet-Draft XR Fragments May 2024
| extrospective | outward sensemaking ("I'm fairly sure John |
| | is a person who lives in oklahoma") |
+-----------------+---------------------------------------------+
van Kammen Expires 19 December 2024 [Page 40]
Internet-Draft XR Fragments June 2024
| ◻ | ascii representation of an 3D object/mesh |
+-----------------+---------------------------------------------+
| (un)obtrusive | obtrusive: wrapping human text/thought in |
@ -2234,14 +2250,6 @@ Internet-Draft XR Fragments May 2024
+-----------------+---------------------------------------------+
| flat 3D object | a 3D object of which all verticies share a |
| | plane |
van Kammen Expires 10 November 2024 [Page 40]
Internet-Draft XR Fragments May 2024
+-----------------+---------------------------------------------+
| BibTeX | simple tagging/citing/referencing standard |
| | for plaintext |
@ -2285,12 +2293,4 @@ Internet-Draft XR Fragments May 2024
van Kammen Expires 10 November 2024 [Page 41]
van Kammen Expires 19 December 2024 [Page 41]

View File

@ -553,7 +553,7 @@ For example, to render a portal with a preview-version of the scene, create an 3
│ index.gltf#playall │
│ │ │
│ ├ # : #t=0&shared=play │ apply default XR Fragment on load (`t` plays global 3D animation timeline)
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ ├ play : #t=0&loop │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │
│ ├── ◻ plane (with material) │
│ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
@ -837,33 +837,17 @@ How does the scale of the object (with the embedded properties) impact the scale
</section>
<section anchor="xr-fragment-pos"><name>XR Fragment: pos</name>
<t>[[» example implementation|<eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]</eref>]<br />
</t>
</section>
<section anchor="xr-fragment-rot"><name>XR Fragment: rot</name>
<t>[[» example implementation|<eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js]</eref>]<br />
</t>
</section>
<section anchor="xr-fragment-t"><name>XR Fragment: t</name>
<t>controls the animation(s) of the scene (or <tt>src</tt> resource which contains a timeline)</t>
<t>| fragment | type | functionality |
| &lt;b&gt;#t&lt;/b&gt;=1,1,100 | <eref target="default:`#t=1,0,0`">[vector3|vector]</eref> | speed,framestart,framestop |</t>
<ul spacing="compact">
<li>playposition is reset to framestart, when framestart or framestop is greater than 0 |</li>
</ul>
<t>| Example Value | Explanation |
|-|-|
| <tt>1,1,100</tt> | play loop between frame 1 and 100 |
| <tt>1,1,0</tt> | play once from frame 1 (oneshot) |
| <tt>1,0,0</tt> | play (previously set looprange if any) |
| <tt>0,0,0</tt> | pause |
| <tt>1,1,1</tt> | play and auto-loop between begin and end of duration |
| <tt>-1,0,0</tt> | reverse playback speed |
| <tt>2.3,0,0</tt> | set (forward) playback speed to 2.3 (no restart) |
| <tt>-2.3,0,0</tt> | set (reverse) playback speed to -2.3 ( no restart)|
| <tt>-2.3,100,0</tt> | set (reverse) playback speed to -2.3 restarting from frame 100 |</t>
<t>[[» example implementation|<eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]">https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/t.js]</eref>]<br />
[[» discussion|<eref target="https://github.com/coderofsalvation/xrfragment/issues/10]">https://github.com/coderofsalvation/xrfragment/issues/10]</eref>]<br />
</t>
</section>
@ -872,10 +856,10 @@ How does the scale of the object (with the embedded properties) impact the scale
<ol spacing="compact">
<li>add a <tt>src: foo.mp3</tt> or <tt>src: bar.mp4</tt> metadata to a 3D object (<tt>cube</tt> e.g.)</li>
<li>to disable auto-play and global timeline ([[#t=|t]]) control: hardcode a [[#t=|t]] XR Fragment: (<tt>src: bar.mp3#t=0,0,0</tt> e.g.)</li>
<li>to enable auto-play and global timeline ([[#t=|t]]) control: hardcode a [[#t=|t]] XR Fragment: (<tt>src: bar.mp3#t=0&amp;loop</tt> e.g.)</li>
<li>to play it, add <tt>href: #cube</tt> somewhere else</li>
<li>when the enduser clicks the <tt>href</tt>, <tt>#t=1,0,0</tt> (play) will be applied to the <tt>src</tt> value</li>
<li>to play a single animation, add href: #animationname=1,0,0 somewhere else</li>
<li>to enable enduser-triggered play, use a [[URI Template]] XR Fragment: (<tt>src: bar.mp3#{player}</tt> and <tt>play: t=0&amp;loop</tt> and <tt>href: xrf://#player=play</tt> e.g.)</li>
<li>when the enduser clicks the <tt>href</tt>, <tt>#t=0&amp;loop</tt> (play) will be applied to the <tt>src</tt> value</li>
</ol>
<blockquote><t>NOTE: hardcoded framestart/framestop uses sampleRate/fps of embedded audio/video, otherwise the global fps applies. For more info see [[#t|t]].</t>
</blockquote></section>
@ -1455,6 +1439,8 @@ Spec:<br />
<li>The enduser must be able to enable an accessibility-mode (which persists across application/webpage restarts)</li>
<li>Accessibility-mode must contain a text-input for the user to enter text</li>
<li>Accessibility-mode must contain a flexible textlog for the user to read (via screenreader, screen, or TTS e.g.)</li>
<li>the textlog contains <tt>aria-descriptions</tt>, and its narration (Screenreader e.g.) can be skipped (via cycling href's, see next rule)</li>
<li>href's can be cycled via tab (keyboard) or 'skip' command</li>
<li>The <tt>back</tt> command should navigate back to the previous URL (alias for browser-backbutton)</li>
<li>The <tt>forward</tt> command should navigate back to the next URL (alias for browser-nextbutton)</li>
<li>A destination is a 3D node containing an <tt>href</tt> with a <tt>pos=</tt> XR fragment</li>