update documentation
This commit is contained in:
parent
c788489314
commit
e3dc93bbb4
5 changed files with 318 additions and 159 deletions
|
|
@ -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&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&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 ‘empty’-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 ‘empty’-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’s a soft-mechanism to harden links & 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 <--------- 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>
|
||||||
|
|
|
||||||
|
|
@ -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 :
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -573,32 +573,37 @@ Internet-Draft XR Fragments September 2023
|
||||||
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
|
||||||
|
only flush its children when the resolved content can
|
||||||
|
succesfully be retrieved (see broken links (#links))
|
||||||
|
7. <b>external</b> src values should respect the fallback link
|
||||||
|
mechanism (see broken links (#broken-links)
|
||||||
|
8. when the placeholder object is a 2D plane, but the mimetype is
|
||||||
3D, then render the spatial content on that plane via a stencil
|
3D, then render the spatial content on that plane via a stencil
|
||||||
buffer.
|
buffer.
|
||||||
7. src-values are non-recursive: when linking to an external object
|
9. src-values are non-recursive: when linking to an external object
|
||||||
(src: foo.fbx#bar), then src-metadata on object bar should be
|
(src: foo.fbx#bar), then src-metadata on object bar should be
|
||||||
ignored.
|
ignored.
|
||||||
8. clicking on external src-values always allow sourceportation:
|
10. clicking on external src-values always allow sourceportation:
|
||||||
teleporting to the origin URI to which the object belongs.
|
teleporting to the origin URI to which the object belongs.
|
||||||
9. when only one object was cherrypicked (#cube e.g.), set its
|
11. when only one object was cherrypicked (#cube e.g.), set its
|
||||||
position to 0,0,0
|
position to 0,0,0
|
||||||
|
|
||||||
* model/gltf+json
|
* model/gltf+json
|
||||||
|
|
@ -606,18 +611,17 @@ Internet-Draft XR Fragments September 2023
|
||||||
* image/jpg
|
* image/jpg
|
||||||
* text/plain;charset=utf-8;bib=^@
|
* text/plain;charset=utf-8;bib=^@
|
||||||
|
|
||||||
» example implementation
|
|
||||||
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
|
|
||||||
three/xrf/src.js)
|
|
||||||
» 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
|
||||||
|
|
||||||
|
|
||||||
|
» example implementation
|
||||||
|
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
|
||||||
|
three/xrf/src.js)
|
||||||
|
» 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)
|
||||||
» discussion (https://github.com/coderofsalvation/xrfragment/
|
» 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
|
|
||||||
|
|
||||||
|
|
||||||
» example implementation
|
» 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
|
|
||||||
|
|
||||||
|
|
||||||
+-----------------+-----------------------------------------------+
|
+-----------------+-----------------------------------------------+
|
||||||
| ◻ | ascii representation of an 3D object/mesh |
|
| ◻ | 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]
|
||||||
|
|
|
||||||
|
|
@ -427,7 +427,9 @@ Resizing will be happen accordingly to its placeholder object <tt>aquariumcube</
|
||||||
<li><b>local</b> <tt>src</tt> values (URL <strong>starting</strong> with <tt>#</tt>, like <tt>#cube&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><b>local</b> <tt>src</tt> values (URL <strong>starting</strong> with <tt>#</tt>, like <tt>#cube&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><b>local</b> <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><b>local</b> <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 <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.</li>
|
<li>the instanced scene (from a <tt>src</tt> 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.</li>
|
||||||
<li><b>external</b> <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><b>external</b> <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><b>external</b> <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 & 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 <--------- 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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue