update documentation
This commit is contained in:
parent
72f1e69aad
commit
81ff83d5ad
|
@ -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(’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(’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 & Data URI)</li>
|
||||
<li><a href="https://github.com/coderofsalvation/hashtagbibs">Bib’s</a> and BibTex are first tag citizens for priming the XRWG with words (from XR text)</li>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
◻ which embeds remote & local 3D objects ◻ 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)
|
||||
» 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)
|
||||
» 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
|
||||
|
||||
|
||||
» 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
|
|||
» 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
|
||||
|
||||
|
||||
+-----------------+-----------------------------------------------+
|
||||
| ◻ | 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
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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&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>) <b>THEN</b> 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 <b>step 1 or 2</b> 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>) <b>THEN</b> 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 <b>step 1 or 2</b> 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 & 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>
|
||||
|
|
33
index.html
33
index.html
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue