update documentation

This commit is contained in:
Leon van Kammen 2023-09-22 10:08:28 +02:00
parent c788489314
commit e3dc93bbb4
5 changed files with 318 additions and 159 deletions

View file

@ -513,7 +513,9 @@ Resizing will be happen accordingly to its placeholder object <code>aquariumcube
<li><b>local</b> <code>src</code> values (URL <strong>starting</strong> with <code>#</code>, like <code>#cube&amp;foo</code>) means <strong>only</strong> the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). <a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</a></li> <li><b>local</b> <code>src</code> values (URL <strong>starting</strong> with <code>#</code>, like <code>#cube&amp;foo</code>) means <strong>only</strong> the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). <a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</a></li>
<li><b>local</b> <code>src</code> values indicating a query (<code>#q=</code>), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). <a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</a></li> <li><b>local</b> <code>src</code> values indicating a query (<code>#q=</code>), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). <a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</a></li>
<li>the instanced scene (from a <code>src</code> value) should be <b>scaled accordingly</b> to its placeholder object or <b>scaled relatively</b> based on the scale-property (of a geometry-less placeholder, an &lsquo;empty&rsquo;-object in blender e.g.). For more info see Chapter Scaling.</li> <li>the instanced scene (from a <code>src</code> value) should be <b>scaled accordingly</b> to its placeholder object or <b>scaled relatively</b> based on the scale-property (of a geometry-less placeholder, an &lsquo;empty&rsquo;-object in blender e.g.). For more info see Chapter Scaling.</li>
<li><b>external</b> <code>src</code> (file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:</li> <li><b>external</b> <code>src</code> values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:</li>
<li><code>src</code> values should make its placeholder object invisible, and only flush its children when the resolved content can succesfully be retrieved (see <a href="#links">broken links</a>)</li>
<li><b>external</b> <code>src</code> values should respect the fallback link mechanism (see <a href="#broken-links">broken links</a></li>
<li>when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.</li> <li>when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.</li>
<li>src-values are non-recursive: when linking to an external object (<code>src: foo.fbx#bar</code>), then <code>src</code>-metadata on object <code>bar</code> should be ignored.</li> <li>src-values are non-recursive: when linking to an external object (<code>src: foo.fbx#bar</code>), then <code>src</code>-metadata on object <code>bar</code> should be ignored.</li>
<li>clicking on external <code>src</code>-values always allow sourceportation: teleporting to the origin URI to which the object belongs.</li> <li>clicking on external <code>src</code>-values always allow sourceportation: teleporting to the origin URI to which the object belongs.</li>
@ -1083,6 +1085,39 @@ here are some hashtagbibs followed by bibtex:
<p>when an XR browser updates the human text, a quick scan for nonmatching tags (<code>@book{nonmatchingbook</code> e.g.) should be performed and prompt the enduser for deleting them.</p> <p>when an XR browser updates the human text, a quick scan for nonmatching tags (<code>@book{nonmatchingbook</code> e.g.) should be performed and prompt the enduser for deleting them.</p>
</blockquote> </blockquote>
<h1 id="broken-links">Broken links</h1>
<p>There&rsquo;s a soft-mechanism to harden links &amp; prevent broken links in various ways:</p>
<ol>
<li>defining a different transport protocol (https vs ipfs or DAT) in <code>src</code> or <code>href</code> values can make a difference</li>
<li>mirroring files on another protocol using errorcodes in <code>src</code> or <code>href</code> properties</li>
<li>in case of <code>src</code>: nesting a copy of the embedded object in the placeholder object (<code>embeddedObject</code>) will not be replaced when the request fails</li>
</ol>
<p>For example:</p>
<pre><code> +────────────────────────────────────────────────────────+
│ │
│ index.gltf │
│ │ │
│ │ #: #q=-offlinetext │
│ │ │
│ ├── ◻ buttonA │
│ │ └ href: http://foo.io/campagne.fbx │
│ │ └ href!404: ipfs://foo.io/campagne.fbx │
│ │ └ href!400: #q=clienterrortext │
│ │ └ ◻ offlinetext │
│ │ │
│ └── ◻ embeddedObject &lt;--------- the meshdata inside embeddedObject will (not)
│ └ src: https://foo.io/bar.gltf │ be flushed when the request (does not) succeed.
│ └ src!404: http://foo.io/bar.gltf │ So worstcase the 3D data (of the time of publishing index.gltf)
│ └ src!400: https://archive.org/l2kj43.gltf │ will be displayed.
│ │
+────────────────────────────────────────────────────────+
</code></pre>
<h1 id="security-considerations">Security Considerations</h1> <h1 id="security-considerations">Security Considerations</h1>
<p>Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :</p> <p>Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :</p>

View file

@ -330,7 +330,9 @@ Resizing will be happen accordingly to its placeholder object `aquariumcube`, se
1. <b>local</b> `src` values (URL **starting** with `#`, like `#cube&foo`) means **only** the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). [(example code)](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js) 1. <b>local</b> `src` values (URL **starting** with `#`, like `#cube&foo`) means **only** the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). [(example code)](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js)
1. <b>local</b> `src` values indicating a query (`#q=`), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). [(example code)](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js) 1. <b>local</b> `src` values indicating a query (`#q=`), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). [(example code)](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js)
1. the instanced scene (from a `src` value) should be <b>scaled accordingly</b> to its placeholder object or <b>scaled relatively</b> based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see Chapter Scaling. 1. the instanced scene (from a `src` value) should be <b>scaled accordingly</b> to its placeholder object or <b>scaled relatively</b> based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see Chapter Scaling.
1. <b>external</b> `src` (file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are: 1. <b>external</b> `src` values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:
1. `src` values should make its placeholder object invisible, and only flush its children when the resolved content can succesfully be retrieved (see [broken links](#links))
1. <b>external</b> `src` values should respect the fallback link mechanism (see [broken links](#broken-links)
1. when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer. 1. when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.
1. src-values are non-recursive: when linking to an external object (`src: foo.fbx#bar`), then `src`-metadata on object `bar` should be ignored. 1. src-values are non-recursive: when linking to an external object (`src: foo.fbx#bar`), then `src`-metadata on object `bar` should be ignored.
1. clicking on external `src`-values always allow sourceportation: teleporting to the origin URI to which the object belongs. 1. clicking on external `src`-values always allow sourceportation: teleporting to the origin URI to which the object belongs.
@ -766,6 +768,38 @@ here are some hashtagbibs followed by bibtex:
> when an XR browser updates the human text, a quick scan for nonmatching tags (`@book{nonmatchingbook` e.g.) should be performed and prompt the enduser for deleting them. > when an XR browser updates the human text, a quick scan for nonmatching tags (`@book{nonmatchingbook` e.g.) should be performed and prompt the enduser for deleting them.
# Broken links
There's a soft-mechanism to harden links & prevent broken links in various ways:
1. defining a different transport protocol (https vs ipfs or DAT) in `src` or `href` values can make a difference
2. mirroring files on another protocol using errorcodes in `src` or `href` properties
3. in case of `src`: nesting a copy of the embedded object in the placeholder object (`embeddedObject`) will not be replaced when the request fails
For example:
```
+────────────────────────────────────────────────────────+
│ │
│ index.gltf │
│ │ │
│ │ #: #q=-offlinetext │
│ │ │
│ ├── ◻ buttonA │
│ │ └ href: http://foo.io/campagne.fbx │
│ │ └ href!404: ipfs://foo.io/campagne.fbx │
│ │ └ href!400: #q=clienterrortext │
│ │ └ ◻ offlinetext │
│ │ │
│ └── ◻ embeddedObject <--------- the meshdata inside embeddedObject will (not)
│ └ src: https://foo.io/bar.gltf │ be flushed when the request (does not) succeed.
│ └ src!404: http://foo.io/bar.gltf │ So worstcase the 3D data (of the time of publishing index.gltf)
│ └ src!400: https://archive.org/l2kj43.gltf │ will be displayed.
│ │
+────────────────────────────────────────────────────────+
```
# Security Considerations # Security Considerations
Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can : Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :

View file

@ -3,7 +3,7 @@
Internet Engineering Task Force L.R. van Kammen Internet Engineering Task Force L.R. van Kammen
Internet-Draft 21 September 2023 Internet-Draft 22 September 2023
Intended status: Informational Intended status: Informational
@ -41,7 +41,7 @@ Status of This Memo
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 24 March 2024. This Internet-Draft will expire on 25 March 2024.
Copyright Notice Copyright Notice
@ -53,7 +53,7 @@ Copyright Notice
van Kammen Expires 24 March 2024 [Page 1] van Kammen Expires 25 March 2024 [Page 1]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -83,18 +83,19 @@ Table of Contents
10.1. UX spec . . . . . . . . . . . . . . . . . . . . . . . . 13 10.1. UX spec . . . . . . . . . . . . . . . . . . . . . . . . 13
10.2. Scaling instanced content . . . . . . . . . . . . . . . 13 10.2. Scaling instanced content . . . . . . . . . . . . . . . 13
11. XR Fragment queries . . . . . . . . . . . . . . . . . . . . . 14 11. XR Fragment queries . . . . . . . . . . . . . . . . . . . . . 14
11.1. including/excluding . . . . . . . . . . . . . . . . . . 14 11.1. including/excluding . . . . . . . . . . . . . . . . . . 15
11.2. Query Parser . . . . . . . . . . . . . . . . . . . . . . 15 11.2. Query Parser . . . . . . . . . . . . . . . . . . . . . . 15
12. Visible links . . . . . . . . . . . . . . . . . . . . . . . . 16 12. Visible links . . . . . . . . . . . . . . . . . . . . . . . . 16
13. Text in XR (tagging,linking to spatial objects) . . . . . . . 16 13. Text in XR (tagging,linking to spatial objects) . . . . . . . 16
13.1. Default Data URI mimetype . . . . . . . . . . . . . . . 20 13.1. Default Data URI mimetype . . . . . . . . . . . . . . . 20
13.2. URL and Data URI . . . . . . . . . . . . . . . . . . . . 21 13.2. URL and Data URI . . . . . . . . . . . . . . . . . . . . 21
13.3. XR Text example parser . . . . . . . . . . . . . . . . . 22 13.3. XR Text example parser . . . . . . . . . . . . . . . . . 22
14. Security Considerations . . . . . . . . . . . . . . . . . . . 24 14. Broken links . . . . . . . . . . . . . . . . . . . . . . . . 24
15. FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 15. Security Considerations . . . . . . . . . . . . . . . . . . . 25
16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 16. FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
17. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 17. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
18. Appendix: Definitions . . . . . . . . . . . . . . . . . . . . 25 18. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 26
19. Appendix: Definitions . . . . . . . . . . . . . . . . . . . . 26
1. Introduction 1. Introduction
@ -108,8 +109,7 @@ Table of Contents
van Kammen Expires 25 March 2024 [Page 2]
van Kammen Expires 24 March 2024 [Page 2]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -165,7 +165,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 3] van Kammen Expires 25 March 2024 [Page 3]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -221,7 +221,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 4] van Kammen Expires 25 March 2024 [Page 4]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -277,7 +277,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 5] van Kammen Expires 25 March 2024 [Page 5]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -333,7 +333,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 6] van Kammen Expires 25 March 2024 [Page 6]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -389,7 +389,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 7] van Kammen Expires 25 March 2024 [Page 7]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -445,7 +445,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 8] van Kammen Expires 25 March 2024 [Page 8]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -501,7 +501,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 9] van Kammen Expires 25 March 2024 [Page 9]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -557,7 +557,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 10] van Kammen Expires 25 March 2024 [Page 10]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -568,56 +568,60 @@ Internet-Draft XR Fragments September 2023
*Specification*: *Specification*:
1. local/remote content is instanced by the src (query) value (and 1. local/remote content is instanced by the src (query) value (and
attaches it to the placeholder mesh containing the src property) attaches it to the placeholder mesh containing the src property)
2. <b>local</b> src values (URL *starting* with #, like #cube&foo) 2. <b>local</b> src values (URL *starting* with #, like #cube&foo)
means *only* the mentioned objectnames will be copied to the means *only* the mentioned objectnames will be copied to the
instanced scene (from the current scene) while preserving their instanced scene (from the current scene) while preserving their
names (to support recursive selectors). (example code) (https://g names (to support recursive selectors). (example code) (https://
ithub.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/ github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
xrf/src.js) three/xrf/src.js)
3. <b>local</b> src values indicating a query (#q=), means that all 3. <b>local</b> src values indicating a query (#q=), means that all
included objects (from the current scene) will be copied to the included objects (from the current scene) will be copied to the
instanced scene (before applying the query) while preserving instanced scene (before applying the query) while preserving
their names (to support recursive selectors). (example code) (htt their names (to support recursive selectors). (example code) (ht
ps://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/ tps://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/j
three/xrf/src.js) s/three/xrf/src.js)
4. the instanced scene (from a src value) should be <b>scaled 4. the instanced scene (from a src value) should be <b>scaled
accordingly</b> to its placeholder object or <b>scaled accordingly</b> to its placeholder object or <b>scaled
relatively</b> based on the scale-property (of a geometry-less relatively</b> based on the scale-property (of a geometry-less
placeholder, an 'empty'-object in blender e.g.). For more info placeholder, an 'empty'-object in blender e.g.). For more info
see Chapter Scaling. see Chapter Scaling.
5. <b>external</b> src (file) values should be served with 5. <b>external</b> src values should be served with appropriate
appropriate mimetype (so the XR Fragment-compatible browser will mimetype (so the XR Fragment-compatible browser will now how to
now how to render it). The bare minimum supported mimetypes are: render it). The bare minimum supported mimetypes are:
6. when the placeholder object is a 2D plane, but the mimetype is 6. src values should make its placeholder object invisible, and
3D, then render the spatial content on that plane via a stencil only flush its children when the resolved content can
buffer. succesfully be retrieved (see broken links (#links))
7. src-values are non-recursive: when linking to an external object 7. <b>external</b> src values should respect the fallback link
(src: foo.fbx#bar), then src-metadata on object bar should be mechanism (see broken links (#broken-links)
ignored. 8. when the placeholder object is a 2D plane, but the mimetype is
8. clicking on external src-values always allow sourceportation: 3D, then render the spatial content on that plane via a stencil
teleporting to the origin URI to which the object belongs. buffer.
9. when only one object was cherrypicked (#cube e.g.), set its 9. src-values are non-recursive: when linking to an external object
position to 0,0,0 (src: foo.fbx#bar), then src-metadata on object bar should be
ignored.
10. clicking on external src-values always allow sourceportation:
teleporting to the origin URI to which the object belongs.
11. when only one object was cherrypicked (#cube e.g.), set its
position to 0,0,0
* model/gltf+json * model/gltf+json
* image/png * image/png
* image/jpg * image/jpg
* text/plain;charset=utf-8;bib=^@ * text/plain;charset=utf-8;bib=^@
&#187; example implementation
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/src.js)
&#187; example 3D asset
van Kammen Expires 25 March 2024 [Page 11]
van Kammen Expires 24 March 2024 [Page 11]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
&#187; example implementation
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/src.js)
&#187; example 3D asset
(https://github.com/coderofsalvation/xrfragment/blob/main/example/ (https://github.com/coderofsalvation/xrfragment/blob/main/example/
assets/src.gltf#L192) assets/src.gltf#L192)
&#187; discussion (https://github.com/coderofsalvation/xrfragment/ &#187; discussion (https://github.com/coderofsalvation/xrfragment/
@ -658,6 +662,18 @@ Internet-Draft XR Fragments September 2023
(https://github.com/coderofsalvation/xrfragment/blob/dev/example/ (https://github.com/coderofsalvation/xrfragment/blob/dev/example/
aframe/sandbox/index.html#L26-L29) for an example wearable) aframe/sandbox/index.html#L26-L29) for an example wearable)
van Kammen Expires 25 March 2024 [Page 12]
Internet-Draft XR Fragments September 2023
6. in case of navigating to a new [[pos)ition, ''first'' navigate to 6. in case of navigating to a new [[pos)ition, ''first'' navigate to
the ''current position'' so that the ''back-button'' of the the ''current position'' so that the ''back-button'' of the
''browser-history'' always refers to the previous position (see ''browser-history'' always refers to the previous position (see
@ -667,13 +683,6 @@ Internet-Draft XR Fragments September 2023
7. portal-rendering: a 2:1 ratio texture-material indicates an 7. portal-rendering: a 2:1 ratio texture-material indicates an
equirectangular projection equirectangular projection
van Kammen Expires 24 March 2024 [Page 12]
Internet-Draft XR Fragments September 2023
&#187; example implementation &#187; example implementation
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/ (https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/href.js) three/xrf/href.js)
@ -714,6 +723,13 @@ Internet-Draft XR Fragments September 2023
* calculate the <b>bounding box</b> of the instanced scene, and * calculate the <b>bounding box</b> of the instanced scene, and
scale it accordingly (to 1.4 e.g.) scale it accordingly (to 1.4 e.g.)
van Kammen Expires 25 March 2024 [Page 13]
Internet-Draft XR Fragments September 2023
| REASON: non-empty placeholder object can act as a protective | REASON: non-empty placeholder object can act as a protective
| bounding-box (for remote content of which might grow over time | bounding-box (for remote content of which might grow over time
| e.g.) | e.g.)
@ -722,14 +738,6 @@ Internet-Draft XR Fragments September 2023
scale-vector (a common property of a 3D node) of the scale-vector (a common property of a 3D node) of the
<b>placeholder</b> object. <b>placeholder</b> object.
van Kammen Expires 24 March 2024 [Page 13]
Internet-Draft XR Fragments September 2023
| TODO: needs intermediate visuals to make things more obvious | TODO: needs intermediate visuals to make things more obvious
11. XR Fragment queries 11. XR Fragment queries
@ -763,6 +771,21 @@ Internet-Draft XR Fragments September 2023
* see an (outdated) example video here * see an (outdated) example video here
(https://coderofsalvation.github.io/xrfragment.media/queries.mp4) (https://coderofsalvation.github.io/xrfragment.media/queries.mp4)
van Kammen Expires 25 March 2024 [Page 14]
Internet-Draft XR Fragments September 2023
11.1. including/excluding 11.1. including/excluding
+==========+=================================================+ +==========+=================================================+
@ -778,14 +801,6 @@ Internet-Draft XR Fragments September 2023
| / | reference to root-scene. | | / | reference to root-scene. |
| | Useful in case of (preventing) showing/hiding | | | Useful in case of (preventing) showing/hiding |
| | objects in nested scenes (instanced by src) (*) | | | objects in nested scenes (instanced by src) (*) |
van Kammen Expires 24 March 2024 [Page 14]
Internet-Draft XR Fragments September 2023
+----------+-------------------------------------------------+ +----------+-------------------------------------------------+
Table 9 Table 9
@ -819,6 +834,14 @@ Internet-Draft XR Fragments September 2023
8. then strip key-operator: convert "-foo" into "foo" 8. then strip key-operator: convert "-foo" into "foo"
9. add operator and value to rule-array 9. add operator and value to rule-array
10. therefore we we set id to true or false (false=excluder -) 10. therefore we we set id to true or false (false=excluder -)
van Kammen Expires 25 March 2024 [Page 15]
Internet-Draft XR Fragments September 2023
11. and we set root to true or false (true=/ root selector is 11. and we set root to true or false (true=/ root selector is
present) present)
12. we convert key '/foo' into 'foo' 12. we convert key '/foo' into 'foo'
@ -830,18 +853,6 @@ Internet-Draft XR Fragments September 2023
| (https://github.com/coderofsalvation/xrfragment/blob/main/src/ | (https://github.com/coderofsalvation/xrfragment/blob/main/src/
| xrfragment/Query.hx) | xrfragment/Query.hx)
van Kammen Expires 24 March 2024 [Page 15]
Internet-Draft XR Fragments September 2023
12. Visible links 12. Visible links
When predefined views, XRWG fragments and ID fragments (#cube or When predefined views, XRWG fragments and ID fragments (#cube or
@ -879,6 +890,14 @@ Internet-Draft XR Fragments September 2023
Instead of just throwing together all kinds media types into one Instead of just throwing together all kinds media types into one
experience (games), what about their tagged/semantical relationships? experience (games), what about their tagged/semantical relationships?
Perhaps the following question is related: why is HTML adopted less Perhaps the following question is related: why is HTML adopted less
van Kammen Expires 25 March 2024 [Page 16]
Internet-Draft XR Fragments September 2023
in games outside the browser? Through the lens of constructive lazy in games outside the browser? Through the lens of constructive lazy
game-developers, ideally metadata must come *with* text, but not game-developers, ideally metadata must come *with* text, but not
*obfuscate* the text, or *spawning another request* to fetch it. *obfuscate* the text, or *spawning another request* to fetch it.
@ -891,13 +910,6 @@ Internet-Draft XR Fragments September 2023
| (https://github.com/coderofsalvation/hashtagbibs#bibs--bibtex- | (https://github.com/coderofsalvation/hashtagbibs#bibs--bibtex-
| combo-lowest-common-denominator-for-linking-data)) | combo-lowest-common-denominator-for-linking-data))
van Kammen Expires 24 March 2024 [Page 16]
Internet-Draft XR Fragments September 2023
Hence: Hence:
1. XR Fragments promotes (de)serializing a scene to the XRWG 1. XR Fragments promotes (de)serializing a scene to the XRWG
@ -937,19 +949,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 25 March 2024 [Page 17]
van Kammen Expires 24 March 2024 [Page 17]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1005,7 +1005,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 18] van Kammen Expires 25 March 2024 [Page 18]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1061,7 +1061,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 19] van Kammen Expires 25 March 2024 [Page 19]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1117,7 +1117,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 20] van Kammen Expires 25 March 2024 [Page 20]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1173,7 +1173,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 21] van Kammen Expires 25 March 2024 [Page 21]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1229,7 +1229,7 @@ xrtext = {
van Kammen Expires 24 March 2024 [Page 22] van Kammen Expires 25 March 2024 [Page 22]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1285,7 +1285,7 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 23] van Kammen Expires 25 March 2024 [Page 23]
Internet-Draft XR Fragments September 2023 Internet-Draft XR Fragments September 2023
@ -1330,7 +1330,50 @@ console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back to
| nonmatching tags (@book{nonmatchingbook e.g.) should be performed | nonmatching tags (@book{nonmatchingbook e.g.) should be performed
| and prompt the enduser for deleting them. | and prompt the enduser for deleting them.
14. Security Considerations 14. Broken links
There's a soft-mechanism to harden links & prevent broken links in
various ways:
1. defining a different transport protocol (https vs ipfs or DAT) in
src or href values can make a difference
van Kammen Expires 25 March 2024 [Page 24]
Internet-Draft XR Fragments September 2023
2. mirroring files on another protocol using errorcodes in src or
href properties
3. in case of src: nesting a copy of the embedded object in the
placeholder object (embeddedObject) will not be replaced when the
request fails
For example:
+────────────────────────────────────────────────────────+
│ │
│ index.gltf │
│ │ │
│ │ #: #q=-offlinetext │
│ │ │
│ ├── ◻ buttonA │
│ │ └ href: http://foo.io/campagne.fbx │
│ │ └ href!404: ipfs://foo.io/campagne.fbx │
│ │ └ href!400: #q=clienterrortext │
│ │ └ ◻ offlinetext │
│ │ │
│ └── ◻ embeddedObject <--------- the meshdata inside embeddedObject will (not)
│ └ src: https://foo.io/bar.gltf │ be flushed when the request (does not) succeed.
│ └ src!404: http://foo.io/bar.gltf │ So worstcase the 3D data (of the time of publishing index.gltf)
│ └ src!400: https://archive.org/l2kj43.gltf │ will be displayed.
│ │
+────────────────────────────────────────────────────────+
15. Security Considerations
Since XR Text contains metadata too, the user should be able to set Since XR Text contains metadata too, the user should be able to set
up tagging-rules, so the copy-paste feature can : up tagging-rules, so the copy-paste feature can :
@ -1338,15 +1381,7 @@ console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back to
* filter out sensitive data when copy/pasting (XR text with * filter out sensitive data when copy/pasting (XR text with
tag:secret e.g.) tag:secret e.g.)
16. FAQ
van Kammen Expires 24 March 2024 [Page 24]
Internet-Draft XR Fragments September 2023
15. FAQ
*Q:* Why is everything HTTP GET-based, what about POST/PUT/DELETE *Q:* Why is everything HTTP GET-based, what about POST/PUT/DELETE
HATEOS HATEOS
@ -1359,6 +1394,14 @@ Internet-Draft XR Fragments September 2023
and up to the XR hypermedia browser. Javascript seems to been able and up to the XR hypermedia browser. Javascript seems to been able
to turn webpages from hypermedia documents into its opposite to turn webpages from hypermedia documents into its opposite
(hyperscripted nonhypermedia documents). In order to prevent this (hyperscripted nonhypermedia documents). In order to prevent this
van Kammen Expires 25 March 2024 [Page 25]
Internet-Draft XR Fragments September 2023
backward-movement (hypermedia tends to liberate people from finnicky backward-movement (hypermedia tends to liberate people from finnicky
scripting) XR Fragments should never unhyperify itself by scripting) XR Fragments should never unhyperify itself by
hardcoupling to a particular markup or scripting language. XR hardcoupling to a particular markup or scripting language. XR
@ -1368,17 +1411,17 @@ Internet-Draft XR Fragments September 2023
turing-complete scripting language (and suffer the security turing-complete scripting language (and suffer the security
consequences later). consequences later).
16. IANA Considerations 17. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
17. Acknowledgments 18. Acknowledgments
* NLNET (https://nlnet.nl) * NLNET (https://nlnet.nl)
* Future of Text (https://futureoftext.org) * Future of Text (https://futureoftext.org)
* visual-meta.info (https://visual-meta.info) * visual-meta.info (https://visual-meta.info)
18. Appendix: Definitions 19. Appendix: Definitions
+=================+===============================================+ +=================+===============================================+
| definition | explanation | | definition | explanation |
@ -1394,14 +1437,6 @@ Internet-Draft XR Fragments September 2023
| | vertex-, face- and customproperty data. | | | vertex-, face- and customproperty data. |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
| metadata | custom properties of text, 3D Scene or | | metadata | custom properties of text, 3D Scene or |
van Kammen Expires 24 March 2024 [Page 25]
Internet-Draft XR Fragments September 2023
| | Object(nodes), relevant to machines and a | | | Object(nodes), relevant to machines and a |
| | human minority (academics/developers) | | | human minority (academics/developers) |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
@ -1415,6 +1450,14 @@ Internet-Draft XR Fragments September 2023
| spacetime | positions camera, triggers scene-preset/time | | spacetime | positions camera, triggers scene-preset/time |
| hashtags | | | hashtags | |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
van Kammen Expires 25 March 2024 [Page 26]
Internet-Draft XR Fragments September 2023
| teleportation | repositioning the enduser to a different | | teleportation | repositioning the enduser to a different |
| | position (or 3D scene/file) | | | position (or 3D scene/file) |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
@ -1450,14 +1493,6 @@ Internet-Draft XR Fragments September 2023
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
| extrospective | outward sensemaking ("I'm fairly sure John is | | extrospective | outward sensemaking ("I'm fairly sure John is |
| | a person who lives in oklahoma") | | | a person who lives in oklahoma") |
van Kammen Expires 24 March 2024 [Page 26]
Internet-Draft XR Fragments September 2023
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
| &#9723; | ascii representation of an 3D object/mesh | | &#9723; | ascii representation of an 3D object/mesh |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
@ -1471,6 +1506,14 @@ Internet-Draft XR Fragments September 2023
| BibTag | a BibTeX tag | | BibTag | a BibTeX tag |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
| (hashtag)bibs | an easy to speak/type/scan tagging SDL (see | | (hashtag)bibs | an easy to speak/type/scan tagging SDL (see |
van Kammen Expires 25 March 2024 [Page 27]
Internet-Draft XR Fragments September 2023
| | here (https://github.com/coderofsalvation/ | | | here (https://github.com/coderofsalvation/ |
| | hashtagbibs) which expands to BibTex/JSON/XML | | | hashtagbibs) which expands to BibTex/JSON/XML |
+-----------------+-----------------------------------------------+ +-----------------+-----------------------------------------------+
@ -1509,4 +1552,17 @@ Internet-Draft XR Fragments September 2023
van Kammen Expires 24 March 2024 [Page 27]
van Kammen Expires 25 March 2024 [Page 28]

View file

@ -427,7 +427,9 @@ Resizing will be happen accordingly to its placeholder object <tt>aquariumcube</
<li>&lt;b&gt;local&lt;/b&gt; <tt>src</tt> values (URL <strong>starting</strong> with <tt>#</tt>, like <tt>#cube&amp;foo</tt>) means <strong>only</strong> the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). <eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</eref></li> <li>&lt;b&gt;local&lt;/b&gt; <tt>src</tt> values (URL <strong>starting</strong> with <tt>#</tt>, like <tt>#cube&amp;foo</tt>) means <strong>only</strong> the mentioned objectnames will be copied to the instanced scene (from the current scene) while preserving their names (to support recursive selectors). <eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</eref></li>
<li>&lt;b&gt;local&lt;/b&gt; <tt>src</tt> values indicating a query (<tt>#q=</tt>), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). <eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</eref></li> <li>&lt;b&gt;local&lt;/b&gt; <tt>src</tt> values indicating a query (<tt>#q=</tt>), means that all included objects (from the current scene) will be copied to the instanced scene (before applying the query) while preserving their names (to support recursive selectors). <eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/src.js">(example code)</eref></li>
<li>the instanced scene (from a <tt>src</tt> value) should be &lt;b&gt;scaled accordingly&lt;/b&gt; to its placeholder object or &lt;b&gt;scaled relatively&lt;/b&gt; based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see Chapter Scaling.</li> <li>the instanced scene (from a <tt>src</tt> value) should be &lt;b&gt;scaled accordingly&lt;/b&gt; to its placeholder object or &lt;b&gt;scaled relatively&lt;/b&gt; based on the scale-property (of a geometry-less placeholder, an 'empty'-object in blender e.g.). For more info see Chapter Scaling.</li>
<li>&lt;b&gt;external&lt;/b&gt; <tt>src</tt> (file) values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:</li> <li>&lt;b&gt;external&lt;/b&gt; <tt>src</tt> values should be served with appropriate mimetype (so the XR Fragment-compatible browser will now how to render it). The bare minimum supported mimetypes are:</li>
<li><tt>src</tt> values should make its placeholder object invisible, and only flush its children when the resolved content can succesfully be retrieved (see <eref target="#links">broken links</eref>)</li>
<li>&lt;b&gt;external&lt;/b&gt; <tt>src</tt> values should respect the fallback link mechanism (see <eref target="#broken-links">broken links</eref></li>
<li>when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.</li> <li>when the placeholder object is a 2D plane, but the mimetype is 3D, then render the spatial content on that plane via a stencil buffer.</li>
<li>src-values are non-recursive: when linking to an external object (<tt>src: foo.fbx#bar</tt>), then <tt>src</tt>-metadata on object <tt>bar</tt> should be ignored.</li> <li>src-values are non-recursive: when linking to an external object (<tt>src: foo.fbx#bar</tt>), then <tt>src</tt>-metadata on object <tt>bar</tt> should be ignored.</li>
<li>clicking on external <tt>src</tt>-values always allow sourceportation: teleporting to the origin URI to which the object belongs.</li> <li>clicking on external <tt>src</tt>-values always allow sourceportation: teleporting to the origin URI to which the object belongs.</li>
@ -941,6 +943,38 @@ here are some hashtagbibs followed by bibtex:
</blockquote></section> </blockquote></section>
</section> </section>
<section anchor="broken-links"><name>Broken links</name>
<t>There's a soft-mechanism to harden links &amp; prevent broken links in various ways:</t>
<ol spacing="compact">
<li>defining a different transport protocol (https vs ipfs or DAT) in <tt>src</tt> or <tt>href</tt> values can make a difference</li>
<li>mirroring files on another protocol using errorcodes in <tt>src</tt> or <tt>href</tt> properties</li>
<li>in case of <tt>src</tt>: nesting a copy of the embedded object in the placeholder object (<tt>embeddedObject</tt>) will not be replaced when the request fails</li>
</ol>
<t>For example:</t>
<artwork> +────────────────────────────────────────────────────────+
│ │
│ index.gltf │
│ │ │
│ │ #: #q=-offlinetext │
│ │ │
│ ├── ◻ buttonA │
│ │ └ href: http://foo.io/campagne.fbx │
│ │ └ href!404: ipfs://foo.io/campagne.fbx │
│ │ └ href!400: #q=clienterrortext │
│ │ └ ◻ offlinetext │
│ │ │
│ └── ◻ embeddedObject &lt;--------- the meshdata inside embeddedObject will (not)
│ └ src: https://foo.io/bar.gltf │ be flushed when the request (does not) succeed.
│ └ src!404: http://foo.io/bar.gltf │ So worstcase the 3D data (of the time of publishing index.gltf)
│ └ src!400: https://archive.org/l2kj43.gltf │ will be displayed.
│ │
+────────────────────────────────────────────────────────+
</artwork>
</section>
<section anchor="security-considerations"><name>Security Considerations</name> <section anchor="security-considerations"><name>Security Considerations</name>
<t>Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :</t> <t>Since XR Text contains metadata too, the user should be able to set up tagging-rules, so the copy-paste feature can :</t>

View file

@ -3,7 +3,7 @@
Internet Engineering Task Force L.R. van Kammen Internet Engineering Task Force L.R. van Kammen
Internet-Draft 21 September 2023 Internet-Draft 22 September 2023
Intended status: Informational Intended status: Informational
@ -38,7 +38,7 @@ Status of This Memo
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 24 March 2024. This Internet-Draft will expire on 25 March 2024.
Copyright Notice Copyright Notice
@ -53,7 +53,7 @@ Copyright Notice
van Kammen Expires 24 March 2024 [Page 1] van Kammen Expires 25 March 2024 [Page 1]
Internet-Draft XR Macros September 2023 Internet-Draft XR Macros September 2023
@ -109,7 +109,7 @@ Table of Contents
van Kammen Expires 24 March 2024 [Page 2] van Kammen Expires 25 March 2024 [Page 2]
Internet-Draft XR Macros September 2023 Internet-Draft XR Macros September 2023
@ -165,7 +165,7 @@ Internet-Draft XR Macros September 2023
van Kammen Expires 24 March 2024 [Page 3] van Kammen Expires 25 March 2024 [Page 3]
Internet-Draft XR Macros September 2023 Internet-Draft XR Macros September 2023
@ -221,7 +221,7 @@ Internet-Draft XR Macros September 2023
van Kammen Expires 24 March 2024 [Page 4] van Kammen Expires 25 March 2024 [Page 4]
Internet-Draft XR Macros September 2023 Internet-Draft XR Macros September 2023
@ -277,7 +277,7 @@ click object with (`!clickme`:`!foo|!bar|!flop` e.g.)
van Kammen Expires 24 March 2024 [Page 5] van Kammen Expires 25 March 2024 [Page 5]
Internet-Draft XR Macros September 2023 Internet-Draft XR Macros September 2023
@ -333,4 +333,4 @@ Internet-Draft XR Macros September 2023
van Kammen Expires 24 March 2024 [Page 6] van Kammen Expires 25 March 2024 [Page 6]