update documentation

This commit is contained in:
Leon van Kammen 2023-09-21 13:30:14 +02:00
parent 72f1e69aad
commit 81ff83d5ad
5 changed files with 280 additions and 255 deletions

View File

@ -447,11 +447,13 @@ In case of <code>buttonA</code> the end-user will be teleported to another locat
<p>The URL-processing-flow for hypermedia browsers goes like this:</p>
<p>1.IF a <code>#cube</code> matches a custom property-key (of an object) in the 3D file/scene (<code>#cube</code>: <code>#......</code>) <b>THEN</b> execute that predefined_view.
2.IF scene operators (<code>pos</code>) and/or animation operator (<code>t</code>) are present in the URL then (re)position the camera and/or animation-range accordingly.
3.IF no camera-position has been set in <b>step 1 or 2</b> update the top-level URL with <code>#pos=0,0,0</code> (<a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]]">example</a>)
4.IF a <code>#cube</code> matches the name (of an object) in the 3D file/scene then draw a line from the enduser(&rsquo;s heart) to that object (to highlight it).
5.IF a <code>#cube</code> matches anything else in the XR Word Graph (XRWG) draw wires to them (text or related objects).</p>
<ol>
<li>IF a <code>#cube</code> matches a custom property-key (of an object) in the 3D file/scene (<code>#cube</code>: <code>#......</code>) <b>THEN</b> execute that predefined_view.</li>
<li>IF scene operators (<code>pos</code>) and/or animation operator (<code>t</code>) are present in the URL then (re)position the camera and/or animation-range accordingly.</li>
<li>IF no camera-position has been set in <b>step 1 or 2</b> update the top-level URL with <code>#pos=0,0,0</code> (<a href="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]]">example</a>)</li>
<li>IF a <code>#cube</code> matches the name (of an object) in the 3D file/scene then draw a line from the enduser(&rsquo;s heart) to that object (to highlight it).</li>
<li>IF a <code>#cube</code> matches anything else in the XR Word Graph (XRWG) draw wires to them (text or related objects).</li>
</ol>
<h1 id="embedding-xr-content-src-instancing">Embedding XR content (src-instancing)</h1>
@ -722,7 +724,7 @@ How does the scale of the object (with the embedded properties) impact the scale
<h1 id="visible-links">Visible links</h1>
<p>When predefined views, XRWG fragments and ID fragments (<code>#cube</code> or <code>#mytag</code> e.g.) are triggered by the enduser (via <code>href</code> of toplevel URL):</p>
<p>When predefined views, XRWG fragments and ID fragments (<code>#cube</code> or <code>#mytag</code> e.g.) are triggered by the enduser (via toplevel URL or clicking <code>href</code>):</p>
<ol>
<li>draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) matching that ID (objectname)</li>
@ -730,14 +732,21 @@ How does the scale of the object (with the embedded properties) impact the scale
<li>draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) containing that in their <code>src</code> or <code>href</code> value</li>
</ol>
<p>The obvious approach is to consult the XRWG, which basically has all these things already collected/organized for you.</p>
<p>The obvious approach for this, is to consult the XRWG (<a href="https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js">example</a>), which basically has all these things already collected/organized for you during scene-load.</p>
<p><strong>UX</strong></p>
<ol start="4">
<li>do not update the wires when the enduser moves, leave them as is</li>
<li>offer a control near the back/forward button which allows the user to (turn off) control the correlation-intensity of the XRWG</li>
</ol>
<h1 id="text-in-xr-tagging-linking-to-spatial-objects">Text in XR (tagging,linking to spatial objects)</h1>
<p>How does XR Fragments interlink text with objects?</p>
<blockquote>
<p>The XR Fragments does this by collapsing space into a <strong>Word Graph</strong> (the <strong>XRWG</strong>), augmented by Bib(s)Tex.</p>
<p>The XR Fragments does this by collapsing space into a <strong>Word Graph</strong> (the <strong>XRWG</strong> <a href="https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js">example</a>), augmented by Bib(s)Tex.</p>
</blockquote>
<p>Instead of just throwing together all kinds media types into one experience (games), what about their tagged/semantical relationships?<br>
@ -752,7 +761,7 @@ XR Fragments does this by detecting Bib(s)Tex, without introducing a new languag
<p>Hence:</p>
<ol>
<li>XR Fragments promotes (de)serializing a scene to the XRWG</li>
<li>XR Fragments promotes (de)serializing a scene to the XRWG (<a href="https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js">example</a>)</li>
<li>XR Fragments primes the XRWG, by collecting words from the <code>tag</code> and name-property of 3D objects.</li>
<li>XR Fragments primes the XRWG, by collecting words from <strong>optional</strong> metadata <strong>at the end of content</strong> of text (see default mimetype &amp; Data URI)</li>
<li><a href="https://github.com/coderofsalvation/hashtagbibs">Bib&rsquo;s</a> and BibTex are first tag citizens for priming the XRWG with words (from XR text)</li>

View File

@ -280,11 +280,11 @@ In case of `buttonA` the end-user will be teleported to another location and tim
The URL-processing-flow for hypermedia browsers goes like this:
1.IF a `#cube` matches a custom property-key (of an object) in the 3D file/scene (`#cube`: `#......`) <b>THEN</b> execute that predefined_view.
2.IF scene operators (`pos`) and/or animation operator (`t`) are present in the URL then (re)position the camera and/or animation-range accordingly.
3.IF no camera-position has been set in <b>step 1 or 2</b> update the top-level URL with `#pos=0,0,0` ([example](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]]))
4.IF a `#cube` matches the name (of an object) in the 3D file/scene then draw a line from the enduser('s heart) to that object (to highlight it).
5.IF a `#cube` matches anything else in the XR Word Graph (XRWG) draw wires to them (text or related objects).
1. IF a `#cube` matches a custom property-key (of an object) in the 3D file/scene (`#cube`: `#......`) <b>THEN</b> execute that predefined_view.
2. IF scene operators (`pos`) and/or animation operator (`t`) are present in the URL then (re)position the camera and/or animation-range accordingly.
3. IF no camera-position has been set in <b>step 1 or 2</b> update the top-level URL with `#pos=0,0,0` ([example](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]]))
4. IF a `#cube` matches the name (of an object) in the 3D file/scene then draw a line from the enduser('s heart) to that object (to highlight it).
5. IF a `#cube` matches anything else in the XR Word Graph (XRWG) draw wires to them (text or related objects).
# Embedding XR content (src-instancing)
@ -456,20 +456,24 @@ Here's how to write a query parser:
# Visible links
When predefined views, XRWG fragments and ID fragments (`#cube` or `#mytag` e.g.) are triggered by the enduser (via `href` of toplevel URL):
When predefined views, XRWG fragments and ID fragments (`#cube` or `#mytag` e.g.) are triggered by the enduser (via toplevel URL or clicking `href`):
1. draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) matching that ID (objectname)
1. draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) matching that `tag` value
1. draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) containing that in their `src` or `href` value
2. draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) matching that `tag` value
3. draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) containing that in their `src` or `href` value
The obvious approach is to consult the XRWG, which basically has all these things already collected/organized for you.
The obvious approach for this, is to consult the XRWG ([example](https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js)), which basically has all these things already collected/organized for you during scene-load.
**UX**
4. do not update the wires when the enduser moves, leave them as is
5. offer a control near the back/forward button which allows the user to (turn off) control the correlation-intensity of the XRWG
# Text in XR (tagging,linking to spatial objects)
How does XR Fragments interlink text with objects?
> The XR Fragments does this by collapsing space into a **Word Graph** (the **XRWG**), augmented by Bib(s)Tex.
> The XR Fragments does this by collapsing space into a **Word Graph** (the **XRWG** [example](https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js)), augmented by Bib(s)Tex.
Instead of just throwing together all kinds media types into one experience (games), what about their tagged/semantical relationships?<br>
Perhaps the following question is related: why is HTML adopted less in games outside the browser?
@ -480,7 +484,7 @@ XR Fragments does this by detecting Bib(s)Tex, without introducing a new languag
Hence:
1. XR Fragments promotes (de)serializing a scene to the XRWG
1. XR Fragments promotes (de)serializing a scene to the XRWG ([example](https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js))
2. XR Fragments primes the XRWG, by collecting words from the `tag` and name-property of 3D objects.
3. XR Fragments primes the XRWG, by collecting words from **optional** metadata **at the end of content** of text (see default mimetype & Data URI)
4. [Bib's](https://github.com/coderofsalvation/hashtagbibs) and BibTex are first tag citizens for priming the XRWG with words (from XR text)

View File

@ -79,19 +79,19 @@ Table of Contents
7. Navigating 3D . . . . . . . . . . . . . . . . . . . . . . . . 8
8. Top-level URL processing . . . . . . . . . . . . . . . . . . 9
9. Embedding XR content (src-instancing) . . . . . . . . . . . . 9
10. Navigating content (href portals) . . . . . . . . . . . . . . 11
10. Navigating content (href portals) . . . . . . . . . . . . . . 12
10.1. UX spec . . . . . . . . . . . . . . . . . . . . . . . . 13
10.2. Scaling instanced content . . . . . . . . . . . . . . . 13
11. XR Fragment queries . . . . . . . . . . . . . . . . . . . . . 13
11. XR Fragment queries . . . . . . . . . . . . . . . . . . . . . 14
11.1. including/excluding . . . . . . . . . . . . . . . . . . 14
11.2. Query Parser . . . . . . . . . . . . . . . . . . . . . . 15
12. Visible links . . . . . . . . . . . . . . . . . . . . . . . . 15
12. Visible links . . . . . . . . . . . . . . . . . . . . . . . . 16
13. Text in XR (tagging,linking to spatial objects) . . . . . . . 16
13.1. Default Data URI mimetype . . . . . . . . . . . . . . . 20
13.2. URL and Data URI . . . . . . . . . . . . . . . . . . . . 21
13.3. XR Text example parser . . . . . . . . . . . . . . . . . 22
14. Security Considerations . . . . . . . . . . . . . . . . . . . 24
15. FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
15. FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25
17. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25
18. Appendix: Definitions . . . . . . . . . . . . . . . . . . . . 25
@ -463,18 +463,21 @@ Internet-Draft XR Fragments September 2023
The URL-processing-flow for hypermedia browsers goes like this:
1.IF a #cube matches a custom property-key (of an object) in the 3D
file/scene (#cube: #......) <b>THEN</b> execute that predefined_view.
2.IF scene operators (pos) and/or animation operator (t) are present
in the URL then (re)position the camera and/or animation-range
accordingly. 3.IF no camera-position has been set in <b>step 1 or
2</b> update the top-level URL with #pos=0,0,0 (example
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/navigator.js#L31]])) 4.IF a #cube matches the name (of an
object) in the 3D file/scene then draw a line from the enduser('s
heart) to that object (to highlight it). 5.IF a #cube matches
anything else in the XR Word Graph (XRWG) draw wires to them (text or
related objects).
1. IF a #cube matches a custom property-key (of an object) in the 3D
file/scene (#cube: #......) <b>THEN</b> execute that
predefined_view.
2. IF scene operators (pos) and/or animation operator (t) are
present in the URL then (re)position the camera and/or animation-
range accordingly.
3. IF no camera-position has been set in <b>step 1 or 2</b> update
the top-level URL with #pos=0,0,0 (example (https://github.com/co
derofsalvation/xrfragment/blob/main/src/3rd/js/three/
navigator.js#L31]]))
4. IF a #cube matches the name (of an object) in the 3D file/scene
then draw a line from the enduser('s heart) to that object (to
highlight it).
5. IF a #cube matches anything else in the XR Word Graph (XRWG) draw
wires to them (text or related objects).
9. Embedding XR content (src-instancing)
@ -482,6 +485,27 @@ Internet-Draft XR Fragments September 2023
href="https://www.w3.org/html/wiki/Elements/iframe">iframe</a>.
It instances content (in objects) in the current scene/asset.
van Kammen Expires 24 March 2024 [Page 9]
Internet-Draft XR Fragments September 2023
+========+==========+==============================================+
|fragment| type | example value |
+========+==========+==============================================+
@ -499,13 +523,6 @@ Internet-Draft XR Fragments September 2023
Table 6
van Kammen Expires 24 March 2024 [Page 9]
Internet-Draft XR Fragments September 2023
Here's an ascii representation of a 3D scene-graph with 3D objects
&#9723; which embeds remote & local 3D objects &#9723; with/out using
queries:
@ -536,6 +553,15 @@ Internet-Draft XR Fragments September 2023
Resizing will be happen accordingly to its placeholder object
aquariumcube, see chapter Scaling.
van Kammen Expires 24 March 2024 [Page 10]
Internet-Draft XR Fragments September 2023
| Instead of cherrypicking objects with #bass&tuna thru src, queries
| can be used to import the whole scene (and filter out certain
| objects). See next chapter below.
@ -550,18 +576,6 @@ Internet-Draft XR Fragments September 2023
names (to support recursive selectors). (example code) (https://g
ithub.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/
xrf/src.js)
van Kammen Expires 24 March 2024 [Page 10]
Internet-Draft XR Fragments September 2023
3. <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
@ -596,6 +610,14 @@ Internet-Draft XR Fragments September 2023
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/src.js)
&#187; example 3D asset
van Kammen Expires 24 March 2024 [Page 11]
Internet-Draft XR Fragments September 2023
(https://github.com/coderofsalvation/xrfragment/blob/main/example/
assets/src.gltf#L192)
&#187; discussion (https://github.com/coderofsalvation/xrfragment/
@ -605,19 +627,6 @@ Internet-Draft XR Fragments September 2023
navigation, portals & mutations
van Kammen Expires 24 March 2024 [Page 11]
Internet-Draft XR Fragments September 2023
+==========+==================+============================+
| fragment | type | example value |
+==========+==================+============================+
@ -658,6 +667,13 @@ Internet-Draft XR Fragments September 2023
7. portal-rendering: a 2:1 ratio texture-material indicates an
equirectangular projection
van Kammen Expires 24 March 2024 [Page 12]
Internet-Draft XR Fragments September 2023
&#187; example implementation
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
three/xrf/href.js)
@ -667,13 +683,6 @@ Internet-Draft XR Fragments September 2023
&#187; discussion (https://github.com/coderofsalvation/xrfragment/
issues/1)
van Kammen Expires 24 March 2024 [Page 12]
Internet-Draft XR Fragments September 2023
10.1. UX spec
End-users should always have read/write access to:
@ -713,15 +722,6 @@ Internet-Draft XR Fragments September 2023
scale-vector (a common property of a 3D node) of the
<b>placeholder</b> object.
| TODO: needs intermediate visuals to make things more obvious
11. XR Fragment queries
Include, exclude, hide/shows objects using space-separated strings:
@ -730,6 +730,12 @@ van Kammen Expires 24 March 2024 [Page 13]
Internet-Draft XR Fragments September 2023
| TODO: needs intermediate visuals to make things more obvious
11. XR Fragment queries
Include, exclude, hide/shows objects using space-separated strings:
+==================+==========================================+
| example | outcome |
+==================+==========================================+
@ -772,12 +778,6 @@ Internet-Draft XR Fragments September 2023
| / | reference to root-scene. |
| | Useful in case of (preventing) showing/hiding |
| | objects in nested scenes (instanced by src) (*) |
+----------+-------------------------------------------------+
Table 9
@ -786,6 +786,10 @@ van Kammen Expires 24 March 2024 [Page 14]
Internet-Draft XR Fragments September 2023
+----------+-------------------------------------------------+
Table 9
| * = #q=-/cube hides object cube only in the root-scene (not nested
| cube objects)
| #q=-cube hides both object cube in the root-scene <b>AND</b>
@ -826,13 +830,9 @@ Internet-Draft XR Fragments September 2023
| (https://github.com/coderofsalvation/xrfragment/blob/main/src/
| xrfragment/Query.hx)
12. Visible links
When predefined views, XRWG fragments and ID fragments (#cube or
#mytag e.g.) are triggered by the enduser (via href of toplevel URL):
1. draw a wire from the enduser (preferabbly a bit below the camera,
heartposition) to object(s) matching that ID (objectname)
@ -842,21 +842,39 @@ van Kammen Expires 24 March 2024 [Page 15]
Internet-Draft XR Fragments September 2023
12. Visible links
When predefined views, XRWG fragments and ID fragments (#cube or
#mytag e.g.) are triggered by the enduser (via toplevel URL or
clicking href):
1. draw a wire from the enduser (preferabbly a bit below the camera,
heartposition) to object(s) matching that ID (objectname)
2. draw a wire from the enduser (preferabbly a bit below the camera,
heartposition) to object(s) matching that tag value
3. draw a wire from the enduser (preferabbly a bit below the camera,
heartposition) to object(s) containing that in their src or href
value
The obvious approach is to consult the XRWG, which basically has all
these things already collected/organized for you.
The obvious approach for this, is to consult the XRWG (example
(https://github.com/coderofsalvation/xrfragment/blob/feat/macros/
src/3rd/js/XRWG.js)), which basically has all these things already
collected/organized for you during scene-load.
*UX*
4. do not update the wires when the enduser moves, leave them as is
5. offer a control near the back/forward button which allows the
user to (turn off) control the correlation-intensity of the XRWG
13. Text in XR (tagging,linking to spatial objects)
How does XR Fragments interlink text with objects?
| The XR Fragments does this by collapsing space into a *Word Graph*
| (the *XRWG*), augmented by Bib(s)Tex.
| (the *XRWG* example
| (https://github.com/coderofsalvation/xrfragment/blob/feat/macros/
| src/3rd/js/XRWG.js)), augmented by Bib(s)Tex.
Instead of just throwing together all kinds media types into one
experience (games), what about their tagged/semantical relationships?
@ -873,9 +891,18 @@ Internet-Draft XR Fragments September 2023
| (https://github.com/coderofsalvation/hashtagbibs#bibs--bibtex-
| combo-lowest-common-denominator-for-linking-data))
van Kammen Expires 24 March 2024 [Page 16]
Internet-Draft XR Fragments September 2023
Hence:
1. XR Fragments promotes (de)serializing a scene to the XRWG
(example (https://github.com/coderofsalvation/xrfragment/blob/fe
at/macros/src/3rd/js/XRWG.js))
2. XR Fragments primes the XRWG, by collecting words from the tag
and name-property of 3D objects.
3. XR Fragments primes the XRWG, by collecting words from
@ -890,14 +917,6 @@ Internet-Draft XR Fragments September 2023
6. The XRWG should be recalculated when textvalues (in src) change
7. HTML/RDF/JSON is still great, but is beyond the XRWG-scope (they
fit better in the application-layer)
van Kammen Expires 24 March 2024 [Page 16]
Internet-Draft XR Fragments September 2023
8. Applications don't have to be able to access the XRWG
programmatically, as they can easily generate one themselves by
traversing the scene-nodes.
@ -910,6 +929,31 @@ Internet-Draft XR Fragments September 2023
Example:
van Kammen Expires 24 March 2024 [Page 17]
Internet-Draft XR Fragments September 2023
http://y.io/z.fbx | Derived XRWG (expressed as BibTex)
----------------------------------------------------------------------------+--------------------------------------
| @house{castle,
@ -934,26 +978,6 @@ Internet-Draft XR Fragments September 2023
Another example:
van Kammen Expires 24 March 2024 [Page 17]
Internet-Draft XR Fragments September 2023
http://y.io/z.fbx | Derived XRWG (expressed as BibTex)
----------------------------------------------------------------------------+--------------------------------------
|
@ -977,6 +1001,15 @@ Internet-Draft XR Fragments September 2023
| same XRWG, however on top of that 2 tages (house and todo) are now
| associated with text/objectname/tag 'baroque'.
van Kammen Expires 24 March 2024 [Page 18]
Internet-Draft XR Fragments September 2023
As seen above, the XRWG can expand bibs
(https://github.com/coderofsalvation/hashtagbibs) (and the whole
scene) to BibTeX.
@ -998,18 +1031,6 @@ Internet-Draft XR Fragments September 2023
Table 10
van Kammen Expires 24 March 2024 [Page 18]
Internet-Draft XR Fragments September 2023
| hashtagbibs (https://github.com/coderofsalvation/hashtagbibs)
| potentially allow the enduser to annotate text/objects by
| *speaking/typing/scanning associations*, which the XR Browser
@ -1037,6 +1058,14 @@ Internet-Draft XR Fragments September 2023
(contextmenu e.g.) of any XR text, anywhere anytime.
11. respect multi-line BiBTeX metadata in text because of the core
principle (#core-principle)
van Kammen Expires 24 March 2024 [Page 19]
Internet-Draft XR Fragments September 2023
12. Default font (unless specified otherwise) is a modern monospace
font, for maximized tabular expressiveness (see the core
principle (#core-principle)).
@ -1053,19 +1082,6 @@ Internet-Draft XR Fragments September 2023
Fictional chat:
van Kammen Expires 24 March 2024 [Page 19]
Internet-Draft XR Fragments September 2023
<John> Hey what about this: https://my.com/station.gltf#pos=0,0,1&rot=90,2,0&t=500,1000
<Sarah> I'm checking it right now
<Sarah> I don't see everything..where's our text from yesterday?
@ -1098,6 +1114,14 @@ Internet-Draft XR Fragments September 2023
This indicates that:
* utf-8 is supported by default
van Kammen Expires 24 March 2024 [Page 20]
Internet-Draft XR Fragments September 2023
* lines beginning with @ will not be rendered verbatim by default
(read more (https://github.com/coderofsalvation/
hashtagbibs#hashtagbib-mimetypes))
@ -1114,14 +1138,6 @@ Internet-Draft XR Fragments September 2023
Advantages:
van Kammen Expires 24 March 2024 [Page 20]
Internet-Draft XR Fragments September 2023
* auto-expanding of hashtagbibs
(https://github.com/coderofsalvation/hashtagbibs) associations
* out-of-the-box (de)multiplex human text and metadata in one go
@ -1145,6 +1161,23 @@ Internet-Draft XR Fragments September 2023
13.2. URL and Data URI
van Kammen Expires 24 March 2024 [Page 21]
Internet-Draft XR Fragments September 2023
+--------------------------------------------------------------+ +------------------------+
| | | author.com/article.txt |
| index.gltf | +------------------------+
@ -1171,13 +1204,6 @@ Internet-Draft XR Fragments September 2023
| object note_canvas with 'todo', the enduser can type or speak
| #note_canvas@todo
van Kammen Expires 24 March 2024 [Page 21]
Internet-Draft XR Fragments September 2023
13.3. XR Text example parser
To prime the XRWG with text from plain text src-values, here's an
@ -1200,6 +1226,14 @@ xrtext = {
},
decode: (str) => {
van Kammen Expires 24 March 2024 [Page 22]
Internet-Draft XR Fragments September 2023
// bibtex: ↓@ ↓<tag|tag{phrase,|{ruler}> ↓property ↓end
let pat = [ /@/, /^\S+[,{}]/, /},/, /}/ ]
let tags = [], text='', i=0, prop=''
@ -1227,13 +1261,6 @@ xrtext = {
return {text, tags}
},
van Kammen Expires 24 March 2024 [Page 22]
Internet-Draft XR Fragments September 2023
encode: (text,tags) => {
let str = text+"\n"
for( let i in tags ){
@ -1256,6 +1283,13 @@ Internet-Draft XR Fragments September 2023
| above can be used as a startingpoint for LLVM's to translate/
| steelman to a more formal form/language.
van Kammen Expires 24 March 2024 [Page 23]
Internet-Draft XR Fragments September 2023
str = `
hello world
here are some hashtagbibs followed by bibtex:
@ -1276,20 +1310,6 @@ console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back to
This expands to the following (hidden by default) BibTex appendix:
van Kammen Expires 24 March 2024 [Page 23]
Internet-Draft XR Fragments September 2023
hello world
here are some hashtagbibs followed by bibtex:
@ -1318,6 +1338,14 @@ Internet-Draft XR Fragments September 2023
* filter out sensitive data when copy/pasting (XR text with
tag:secret e.g.)
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
@ -1327,25 +1355,6 @@ Internet-Draft XR Fragments September 2023
(for example, an XR Hypermedia browser can decide to support
POST/PUT/DELETE requests for embedded HTML thru src values)
van Kammen Expires 24 March 2024 [Page 24]
Internet-Draft XR Fragments September 2023
*Q:* Why isn't there support for scripting *A:* This is out of scope,
and up to the XR hypermedia browser. Javascript seems to been able
to turn webpages from hypermedia documents into its opposite
@ -1385,6 +1394,14 @@ Internet-Draft XR Fragments September 2023
| | vertex-, face- and customproperty data. |
+-----------------+-----------------------------------------------+
| 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 |
| | human minority (academics/developers) |
+-----------------+-----------------------------------------------+
@ -1394,14 +1411,6 @@ Internet-Draft XR Fragments September 2023
| the XRWG | wordgraph (collapses 3D scene to tags) |
+-----------------+-----------------------------------------------+
| the hashbus | hashtags map to camera/scene-projections |
van Kammen Expires 24 March 2024 [Page 25]
Internet-Draft XR Fragments September 2023
+-----------------+-----------------------------------------------+
| spacetime | positions camera, triggers scene-preset/time |
| hashtags | |
@ -1441,6 +1450,14 @@ Internet-Draft XR Fragments September 2023
+-----------------+-----------------------------------------------+
| extrospective | outward sensemaking ("I'm fairly sure John is |
| | 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 |
+-----------------+-----------------------------------------------+
@ -1450,14 +1467,6 @@ Internet-Draft XR Fragments September 2023
+-----------------+-----------------------------------------------+
| BibTeX | simple tagging/citing/referencing standard |
| | for plaintext |
van Kammen Expires 24 March 2024 [Page 26]
Internet-Draft XR Fragments September 2023
+-----------------+-----------------------------------------------+
| BibTag | a BibTeX tag |
+-----------------+-----------------------------------------------+
@ -1490,15 +1499,6 @@ Internet-Draft XR Fragments September 2023

View File

@ -358,11 +358,14 @@ In case of <tt>buttonA</tt> the end-user will be teleported to another location
<section anchor="top-level-url-processing"><name>Top-level URL processing</name>
<blockquote><t>Example URL: <tt>://foo/world.gltf#cube&amp;pos=0,0,0</tt></t>
</blockquote><t>The URL-processing-flow for hypermedia browsers goes like this:</t>
<t>1.IF a <tt>#cube</tt> matches a custom property-key (of an object) in the 3D file/scene (<tt>#cube</tt>: <tt>#......</tt>) &lt;b&gt;THEN&lt;/b&gt; execute that predefined_view.
2.IF scene operators (<tt>pos</tt>) and/or animation operator (<tt>t</tt>) are present in the URL then (re)position the camera and/or animation-range accordingly.
3.IF no camera-position has been set in &lt;b&gt;step 1 or 2&lt;/b&gt; update the top-level URL with <tt>#pos=0,0,0</tt> (<eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]]">example</eref>)
4.IF a <tt>#cube</tt> matches the name (of an object) in the 3D file/scene then draw a line from the enduser('s heart) to that object (to highlight it).
5.IF a <tt>#cube</tt> matches anything else in the XR Word Graph (XRWG) draw wires to them (text or related objects).</t>
<ol spacing="compact">
<li>IF a <tt>#cube</tt> matches a custom property-key (of an object) in the 3D file/scene (<tt>#cube</tt>: <tt>#......</tt>) &lt;b&gt;THEN&lt;/b&gt; execute that predefined_view.</li>
<li>IF scene operators (<tt>pos</tt>) and/or animation operator (<tt>t</tt>) are present in the URL then (re)position the camera and/or animation-range accordingly.</li>
<li>IF no camera-position has been set in &lt;b&gt;step 1 or 2&lt;/b&gt; update the top-level URL with <tt>#pos=0,0,0</tt> (<eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/navigator.js#L31]]">example</eref>)</li>
<li>IF a <tt>#cube</tt> matches the name (of an object) in the 3D file/scene then draw a line from the enduser('s heart) to that object (to highlight it).</li>
<li>IF a <tt>#cube</tt> matches anything else in the XR Word Graph (XRWG) draw wires to them (text or related objects).</li>
</ol>
</section>
<section anchor="embedding-xr-content-src-instancing"><name>Embedding XR content (src-instancing)</name>
@ -627,19 +630,25 @@ Useful in case of (preventing) showing/hiding objects in nested scenes (instance
</section>
<section anchor="visible-links"><name>Visible links</name>
<t>When predefined views, XRWG fragments and ID fragments (<tt>#cube</tt> or <tt>#mytag</tt> e.g.) are triggered by the enduser (via <tt>href</tt> of toplevel URL):</t>
<t>When predefined views, XRWG fragments and ID fragments (<tt>#cube</tt> or <tt>#mytag</tt> e.g.) are triggered by the enduser (via toplevel URL or clicking <tt>href</tt>):</t>
<ol spacing="compact">
<li>draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) matching that ID (objectname)</li>
<li>draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) matching that <tt>tag</tt> value</li>
<li>draw a wire from the enduser (preferabbly a bit below the camera, heartposition) to object(s) containing that in their <tt>src</tt> or <tt>href</tt> value</li>
</ol>
<t>The obvious approach is to consult the XRWG, which basically has all these things already collected/organized for you.</t>
<t>The obvious approach for this, is to consult the XRWG (<eref target="https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js">example</eref>), which basically has all these things already collected/organized for you during scene-load.</t>
<t><strong>UX</strong></t>
<ol spacing="compact" start="4">
<li>do not update the wires when the enduser moves, leave them as is</li>
<li>offer a control near the back/forward button which allows the user to (turn off) control the correlation-intensity of the XRWG</li>
</ol>
</section>
<section anchor="text-in-xr-tagging-linking-to-spatial-objects"><name>Text in XR (tagging,linking to spatial objects)</name>
<t>How does XR Fragments interlink text with objects?</t>
<blockquote><t>The XR Fragments does this by collapsing space into a <strong>Word Graph</strong> (the <strong>XRWG</strong>), augmented by Bib(s)Tex.</t>
<blockquote><t>The XR Fragments does this by collapsing space into a <strong>Word Graph</strong> (the <strong>XRWG</strong> <eref target="https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js">example</eref>), augmented by Bib(s)Tex.</t>
</blockquote><t>Instead of just throwing together all kinds media types into one experience (games), what about their tagged/semantical relationships?<br />
Perhaps the following question is related: why is HTML adopted less in games outside the browser?
@ -651,7 +660,7 @@ XR Fragments does this by detecting Bib(s)Tex, without introducing a new languag
</blockquote><t>Hence:</t>
<ol spacing="compact">
<li>XR Fragments promotes (de)serializing a scene to the XRWG</li>
<li>XR Fragments promotes (de)serializing a scene to the XRWG (<eref target="https://github.com/coderofsalvation/xrfragment/blob/feat/macros/src/3rd/js/XRWG.js">example</eref>)</li>
<li>XR Fragments primes the XRWG, by collecting words from the <tt>tag</tt> and name-property of 3D objects.</li>
<li>XR Fragments primes the XRWG, by collecting words from <strong>optional</strong> metadata <strong>at the end of content</strong> of text (see default mimetype &amp; Data URI)</li>
<li><eref target="https://github.com/coderofsalvation/hashtagbibs">Bib's</eref> and BibTex are first tag citizens for priming the XRWG with words (from XR text)</li>

File diff suppressed because one or more lines are too long