update documentation

This commit is contained in:
Leon van Kammen 2024-02-23 11:51:05 +01:00
parent 6c88baeee4
commit 84212f31a4
5 changed files with 204 additions and 184 deletions

View File

@ -100,9 +100,10 @@ XR Fragments exploits the fact that all 3D models already contain such metadata:
<p>It solves:</p> <p>It solves:</p>
<ol> <ol>
<li>addressibility and <a href="https://github.com/coderofsalvation/hypermediatic">hypermediatic</a> navigation of 3D scenes/objects: <a href="https://en.wikipedia.org/wiki/URI_fragment">URI Fragments</a> + src/href spatial metadata</li> <li>addressibility and <a href="https://github.com/coderofsalvation/hypermediatic">hypermediatic</a> navigation of 3D scenes/objects: <a href="https://en.wikipedia.org/wiki/URI_fragment">URI Fragments</a> using src/href spatial metadata</li>
<li>Interlinking text &amp; spatial objects by collapsing space into a Word Graph (XRWG) to show <a href="#visible-links">visible links</a></li> <li>Interlinking text &amp; spatial objects by collapsing space into a Word Graph (XRWG) to show <a href="#visible-links">visible links</a></li>
<li>unlocking spatial potential of the (originally 2D) hashtag (which jumps to a chapter) for navigating XR documents</li> <li>unlocking spatial potential of the (originally 2D) hashtag (which jumps to a chapter) for navigating XR documents</li>
<li>refraining from introducing scripting-engines for mundane tasks (and preventing its inevitable security-headaches)</li>
</ol> </ol>
<blockquote> <blockquote>
@ -170,7 +171,7 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
</code></pre> </code></pre>
<blockquote> <blockquote>
<p>?-linked and #-linked navigation allows a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation.</p> <p>?-linked and #-linked navigation are JUST one possible way to implement XR Fragments, to allow a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation.</p>
</blockquote> </blockquote>
<p>Traditional webbrowsers can become 4D document-ready by:</p> <p>Traditional webbrowsers can become 4D document-ready by:</p>
@ -370,6 +371,14 @@ That way, if the link gets shared, the XR Fragments implementation at <code>http
<td>tag object (for filter-use / XRWG highlighting)</td> <td>tag object (for filter-use / XRWG highlighting)</td>
<td>custom property in 3D fileformats</td> <td>custom property in 3D fileformats</td>
</tr> </tr>
<tr>
<td><code>#</code></td>
<td>string</td>
<td><code>&quot;#&quot;: &quot;#mypreset</code></td>
<td>trigger default fragment on load</td>
<td>custom property in 3D fileformats</td>
</tr>
</tbody> </tbody>
</table> </table>
@ -527,7 +536,7 @@ That way, if the link gets shared, the XR Fragments implementation at <code>http
<tr> <tr>
<td>vector2</td> <td>vector2</td>
<td>uv=uv,v,uspeed,vspeed</td> <td>uv=u,v,uspeed,vspeed</td>
<td>0,0</td> <td>0,0</td>
<td>set uv offset instantly (default speed = <code>1,1</code>)</td> <td>set uv offset instantly (default speed = <code>1,1</code>)</td>
</tr> </tr>
@ -566,15 +575,15 @@ That way, if the link gets shared, the XR Fragments implementation at <code>http
<blockquote> <blockquote>
<p>* = this is extending the <a href="https://www.w3.org/TR/media-frags/#mf-advanced">W3C media fragments</a> with (missing) playback/viewport-control. Normally <code>#t=0,2</code> implies setting start/stop-values AND starting playback, whereas <code>#s=0&amp;loop</code> allows pausing a video, speeding up/slowing down media, as well as enabling/disabling looping.</p> <p>* = this is extending the <a href="https://www.w3.org/TR/media-frags/#mf-advanced">W3C media fragments</a> with (missing) playback/viewport-control. Normally <code>#t=0,2</code> implies setting start/stop-values AND starting playback, whereas <code>#s=0&amp;loop</code> allows pausing a video, speeding up/slowing down media, as well as enabling/disabling looping.</p>
<p>The rationale for <code>uv</code> is that the <code>xywh</code> Media Fragment deals with rectangular media, which does not translate well to 3D models (which use triangular polygons, not rectangular) positioned by uv-coordinates.</p> <p>The rationale for <code>uv</code> is that the <code>xywh</code> Media Fragment deals with rectangular media, which does not translate well to 3D models (which use triangular polygons, not rectangular) positioned by uv-coordinates. This also explains the absense of a <code>scale</code> or <code>rotate</code> primitive, which is challenged by this, as well as multiple origins (mesh- or texture).</p>
</blockquote> </blockquote>
<p>Example URI&rsquo;s:</p> <p>Example URI&rsquo;s:</p>
<ul> <ul>
<li><code>https://images.org/credits.jpg#uv=0,0,0,+0.1</code> (infinite vertical texturescrolling)</li> <li><code>https://images.org/credits.jpg#uv=0,0,0,+0.1</code> (infinite vertical texturescrolling)</li>
<li><code>https://video.org/organogram.mp4#t=0&amp;loop&amp;uv:0.1,0.1,0.3,0.3</code> (animated zoom towards region in looped video)</li> <li><code>https://video.org/organogram.mp4#t=0&amp;loop&amp;uv=0.1,0.1,0.3,0.3</code> (animated zoom towards region in looped video)</li>
<li><code>https://shaders.org/plasma.glsl#t=0&amp;u:col1=1,0,0&amp;u:col2=0,1,0</code> (red-green shader plasma starts playing from time-offset 0)</li> <li><code>https://shaders.org/plasma.glsl#t=0&amp;u:col2=0,1,0</code> (red-green shader plasma starts playing from time-offset 0)</li>
</ul> </ul>
<pre><code> +──────────────────────────────────────────────────────────+ <pre><code> +──────────────────────────────────────────────────────────+
@ -585,10 +594,10 @@ That way, if the link gets shared, the XR Fragments implementation at <code>http
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570) │ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │ │ │ │
│ ├── ◻ plane (with material) │ │ ├── ◻ plane (with material) │
│ │ └ #: #suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ plane │ │ ├── ◻ plane │
│ │ └ src: foo.jpg#suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ src: foo.jpg#uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ media │ │ ├── ◻ media │
│ │ └ src: cat.mp4#t=l:2,10&amp;uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5) │ │ └ src: cat.mp4#t=l:2,10&amp;uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5)

View File

@ -112,9 +112,10 @@ XR Fragments exploits the fact that all 3D models already contain such metadata:
It solves: It solves:
1. addressibility and [hypermediatic](https://github.com/coderofsalvation/hypermediatic) navigation of 3D scenes/objects: [URI Fragments](https://en.wikipedia.org/wiki/URI_fragment) + src/href spatial metadata 1. addressibility and [hypermediatic](https://github.com/coderofsalvation/hypermediatic) navigation of 3D scenes/objects: [URI Fragments](https://en.wikipedia.org/wiki/URI_fragment) using src/href spatial metadata
1. Interlinking text & spatial objects by collapsing space into a Word Graph (XRWG) to show [visible links](#visible-links) 1. Interlinking text & spatial objects by collapsing space into a Word Graph (XRWG) to show [visible links](#visible-links)
1. unlocking spatial potential of the (originally 2D) hashtag (which jumps to a chapter) for navigating XR documents 1. unlocking spatial potential of the (originally 2D) hashtag (which jumps to a chapter) for navigating XR documents
1. refraining from introducing scripting-engines for mundane tasks (and preventing its inevitable security-headaches)
> NOTE: The chapters in this document are ordered from highlevel to lowlevel (technical) as much as possible > NOTE: The chapters in this document are ordered from highlevel to lowlevel (technical) as much as possible
@ -178,7 +179,7 @@ Below you can see how this translates back into good-old URLs:
``` ```
> ?-linked and #-linked navigation allows a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation. > ?-linked and #-linked navigation are JUST one possible way to implement XR Fragments, to allow a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation.
Traditional webbrowsers can become 4D document-ready by: Traditional webbrowsers can become 4D document-ready by:
@ -243,6 +244,7 @@ That way, if the link gets shared, the XR Fragments implementation at `https://m
| `href` | string | `"href": "b.gltf"` | XR teleport | custom property in 3D fileformats | | `href` | string | `"href": "b.gltf"` | XR teleport | custom property in 3D fileformats |
| `src` | string | `"src": "#cube"` | XR embed / teleport | custom property in 3D fileformats | | `src` | string | `"src": "#cube"` | XR embed / teleport | custom property in 3D fileformats |
| `tag` | string | `"tag": "cubes geo"` | tag object (for filter-use / XRWG highlighting) | custom property in 3D fileformats | | `tag` | string | `"tag": "cubes geo"` | tag object (for filter-use / XRWG highlighting) | custom property in 3D fileformats |
| `#` | string | `"#": "#mypreset` | trigger default fragment on load | custom property in 3D fileformats |
> Supported popular compatible 3D fileformats: `.gltf`, `.obj`, `.fbx`, `.usdz`, `.json` (THREE.js), `.dae` and so on. > Supported popular compatible 3D fileformats: `.gltf`, `.obj`, `.fbx`, `.usdz`, `.json` (THREE.js), `.dae` and so on.
@ -274,7 +276,7 @@ These are automatic fragment-to-metadata mappings, which only trigger if the 3D
| temporal W3C media fragment * | s=x | 1 | set playback speed of audio/video/3D anim | | temporal W3C media fragment * | s=x | 1 | set playback speed of audio/video/3D anim |
| temporal W3C media fragment * | [-]loop | loop | enable looped playback of audio/video/3D anim | | temporal W3C media fragment * | [-]loop | loop | enable looped playback of audio/video/3D anim |
| | | -loop | disable looped playback (does not affect playbackstate of media) | | | | -loop | disable looped playback (does not affect playbackstate of media) |
| vector2 | uv=uv,v,uspeed,vspeed | 0,0 | set uv offset instantly (default speed = `1,1`) | | vector2 | uv=u,v,uspeed,vspeed | 0,0 | set uv offset instantly (default speed = `1,1`) |
| | | +0.5,+0.5 | scroll instantly by adding 0.5 to the current uv coordinates | | | | +0.5,+0.5 | scroll instantly by adding 0.5 to the current uv coordinates |
| | | 0.2,1,0.1,0.1 | scroll (lerp) to uv coordinate `0,2,1` with `0.1` units per second | | | | 0.2,1,0.1,0.1 | scroll (lerp) to uv coordinate `0,2,1` with `0.1` units per second |
| | | 0,0,0,+0.1 | scroll v coordinates with `0.1` units per second (infinitely) | | | | 0,0,0,+0.1 | scroll v coordinates with `0.1` units per second (infinitely) |
@ -284,13 +286,13 @@ These are automatic fragment-to-metadata mappings, which only trigger if the 3D
> \* = this is extending the [W3C media fragments](https://www.w3.org/TR/media-frags/#mf-advanced) with (missing) playback/viewport-control. Normally `#t=0,2` implies setting start/stop-values AND starting playback, whereas `#s=0&loop` allows pausing a video, speeding up/slowing down media, as well as enabling/disabling looping. > \* = this is extending the [W3C media fragments](https://www.w3.org/TR/media-frags/#mf-advanced) with (missing) playback/viewport-control. Normally `#t=0,2` implies setting start/stop-values AND starting playback, whereas `#s=0&loop` allows pausing a video, speeding up/slowing down media, as well as enabling/disabling looping.
> The rationale for `uv` is that the `xywh` Media Fragment deals with rectangular media, which does not translate well to 3D models (which use triangular polygons, not rectangular) positioned by uv-coordinates. > The rationale for `uv` is that the `xywh` Media Fragment deals with rectangular media, which does not translate well to 3D models (which use triangular polygons, not rectangular) positioned by uv-coordinates. This also explains the absense of a `scale` or `rotate` primitive, which is challenged by this, as well as multiple origins (mesh- or texture).
Example URI's: Example URI's:
* `https://images.org/credits.jpg#uv=0,0,0,+0.1` (infinite vertical texturescrolling) * `https://images.org/credits.jpg#uv=0,0,0,+0.1` (infinite vertical texturescrolling)
* `https://video.org/organogram.mp4#t=0&loop&uv:0.1,0.1,0.3,0.3` (animated zoom towards region in looped video) * `https://video.org/organogram.mp4#t=0&loop&uv=0.1,0.1,0.3,0.3` (animated zoom towards region in looped video)
* `https://shaders.org/plasma.glsl#t=0&u:col1=1,0,0&u:col2=0,1,0` (red-green shader plasma starts playing from time-offset 0) * `https://shaders.org/plasma.glsl#t=0&u:col2=0,1,0` (red-green shader plasma starts playing from time-offset 0)
``` ```
+──────────────────────────────────────────────────────────+ +──────────────────────────────────────────────────────────+
@ -301,10 +303,10 @@ Example URI's:
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570) │ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │ │ │ │
│ ├── ◻ plane (with material) │ │ ├── ◻ plane (with material) │
│ │ └ #: #suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ plane │ │ ├── ◻ plane │
│ │ └ src: foo.jpg#suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ src: foo.jpg#uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ media │ │ ├── ◻ media │
│ │ └ src: cat.mp4#t=l:2,10&uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5) │ │ └ src: cat.mp4#t=l:2,10&uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5)

View File

@ -3,7 +3,7 @@
Jens & Leon Internet Engineering Task Force L.R. van Kammen Jens & Leon Internet Engineering Task Force L.R. van Kammen
Internet-Draft 16 February 2024 Internet-Draft 23 February 2024
Intended status: Informational Intended status: Informational
@ -43,7 +43,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 19 August 2024. This Internet-Draft will expire on 26 August 2024.
Copyright Notice Copyright Notice
@ -53,7 +53,7 @@ Copyright Notice
van Kammen Expires 19 August 2024 [Page 1] van Kammen Expires 26 August 2024 [Page 1]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -109,7 +109,7 @@ Table of Contents
van Kammen Expires 19 August 2024 [Page 2] van Kammen Expires 26 August 2024 [Page 2]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -133,11 +133,13 @@ Internet-Draft XR Fragments February 2024
1. addressibility and hypermediatic 1. addressibility and hypermediatic
(https://github.com/coderofsalvation/hypermediatic) navigation of (https://github.com/coderofsalvation/hypermediatic) navigation of
3D scenes/objects: URI Fragments (https://en.wikipedia.org/wiki/ 3D scenes/objects: URI Fragments (https://en.wikipedia.org/wiki/
URI_fragment) + src/href spatial metadata URI_fragment) using src/href spatial metadata
2. Interlinking text & spatial objects by collapsing space into a 2. Interlinking text & spatial objects by collapsing space into a
Word Graph (XRWG) to show visible links (#visible-links) Word Graph (XRWG) to show visible links (#visible-links)
3. unlocking spatial potential of the (originally 2D) hashtag (which 3. unlocking spatial potential of the (originally 2D) hashtag (which
jumps to a chapter) for navigating XR documents jumps to a chapter) for navigating XR documents
4. refraining from introducing scripting-engines for mundane tasks
(and preventing its inevitable security-headaches)
| NOTE: The chapters in this document are ordered from highlevel to | NOTE: The chapters in this document are ordered from highlevel to
| lowlevel (technical) as much as possible | lowlevel (technical) as much as possible
@ -163,9 +165,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 26 August 2024 [Page 3]
van Kammen Expires 19 August 2024 [Page 3]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -221,7 +221,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 4] van Kammen Expires 26 August 2024 [Page 4]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -247,8 +247,9 @@ Internet-Draft XR Fragments February 2024
│ │ │ │
+───────────────────────────────────────────────────────────────────────────────────────────────+ +───────────────────────────────────────────────────────────────────────────────────────────────+
| ?-linked and #-linked navigation allows a Hypermediatic | ?-linked and #-linked navigation are JUST one possible way to
| FeedbackLoop (HFL) between external and internal 4D navigation. | implement XR Fragments, to allow a Hypermediatic FeedbackLoop
| (HFL) between external and internal 4D navigation.
Traditional webbrowsers can become 4D document-ready by: Traditional webbrowsers can become 4D document-ready by:
@ -276,8 +277,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 26 August 2024 [Page 5]
van Kammen Expires 19 August 2024 [Page 5]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -333,7 +333,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 6] van Kammen Expires 26 August 2024 [Page 6]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -389,7 +389,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 7] van Kammen Expires 26 August 2024 [Page 7]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -405,22 +405,28 @@ Internet-Draft XR Fragments February 2024
4.1. List of metadata for 3D nodes 4.1. List of metadata for 3D nodes
+======+========+==========+===================+===================+ +======+========+============+===================+================+
| key | type | example | function | existing | | key | type | example | function | existing |
| | | (JSON) | | compatibility | | | | (JSON) | | compatibility |
+======+========+==========+===================+===================+ +======+========+============+===================+================+
| href | string | "href": | XR teleport | custom property | | href | string | "href": | XR teleport | custom |
| | | "b.gltf" | | in 3D fileformats | | | | "b.gltf" | | property in 3D |
+------+--------+----------+-------------------+-------------------+ | | | | | fileformats |
| src | string | "src": | XR embed / | custom property | +------+--------+------------+-------------------+----------------+
| | | "#cube" | teleport | in 3D fileformats | | src | string | "src": | XR embed / | custom |
+------+--------+----------+-------------------+-------------------+ | | | "#cube" | teleport | property in 3D |
| tag | string | "tag": | tag object (for | custom property | | | | | | fileformats |
| | | "cubes | filter-use / XRWG | in 3D fileformats | +------+--------+------------+-------------------+----------------+
| | | geo" | highlighting) | | | tag | string | "tag": | tag object (for | custom |
+------+--------+----------+-------------------+-------------------+ | | | "cubes | filter-use / XRWG | property in 3D |
| | | geo" | highlighting) | fileformats |
+------+--------+------------+-------------------+----------------+
| # | string | "#": | trigger default | custom |
| | | "#mypreset | fragment on load | property in 3D |
| | | | | fileformats |
+------+--------+------------+-------------------+----------------+
Table 4 Table 4
| Supported popular compatible 3D fileformats: .gltf, .obj, .fbx, | Supported popular compatible 3D fileformats: .gltf, .obj, .fbx,
| .usdz, .json (THREE.js), .dae and so on. | .usdz, .json (THREE.js), .dae and so on.
@ -436,20 +442,20 @@ Internet-Draft XR Fragments February 2024
|*PRESET* |#<preset> |string |#cubes |evaluates preset | |*PRESET* |#<preset> |string |#cubes |evaluates preset |
| | | | |(#foo&bar) defined in | | | | | |(#foo&bar) defined in |
| | | | |3D Object metadata | | | | | |3D Object metadata |
van Kammen Expires 26 August 2024 [Page 8]
Internet-Draft XR Fragments February 2024
| | | | |(#cubes: #foo&bar e.g.)| | | | | |(#cubes: #foo&bar e.g.)|
| | | | |while URL-browserbar | | | | | |while URL-browserbar |
| | | | |reflects #cubes. Only | | | | | |reflects #cubes. Only |
| | | | |works when metadata-key| | | | | |works when metadata-key|
| | | | |starts with # | | | | | |starts with # |
+----------------+--------------------------------------+-------------+---------------------+-----------------------+ +----------------+--------------------------------------+-------------+---------------------+-----------------------+
van Kammen Expires 19 August 2024 [Page 8]
Internet-Draft XR Fragments February 2024
|*FOCUS* |#<tag_or_objectname> |string |#person |(and show) object(s) | |*FOCUS* |#<tag_or_objectname> |string |#person |(and show) object(s) |
| | | | |with tag: person or | | | | | |with tag: person or |
| | | | |name person (XRWG | | | | | |name person (XRWG |
@ -492,20 +498,20 @@ Internet-Draft XR Fragments February 2024
| | | | |cat.mp4#{foo} e.g., to | | | | | |cat.mp4#{foo} e.g., to |
| | | | |play media using media | | | | | |play media using media |
| | | | |fragment URI | | | | | |fragment URI |
van Kammen Expires 26 August 2024 [Page 9]
Internet-Draft XR Fragments February 2024
| | | | |(https://www.w3.org/TR/| | | | | |(https://www.w3.org/TR/|
| | | | |media-frags/#valid- | | | | | |media-frags/#valid- |
| | | | |uri)). NOTE: metadata-| | | | | |uri)). NOTE: metadata-|
| | | | |key should not start | | | | | |key should not start |
| | | | |with # | | | | | |with # |
+----------------+--------------------------------------+-------------+---------------------+-----------------------+ +----------------+--------------------------------------+-------------+---------------------+-----------------------+
van Kammen Expires 19 August 2024 [Page 9]
Internet-Draft XR Fragments February 2024
|*ANIMATION* |#<tag_or_objectname>=<animationname> |string=string|#people=walk |assign a different | |*ANIMATION* |#<tag_or_objectname>=<animationname> |string=string|#people=walk |assign a different |
| | | |#people=noanim |animation to object(s) | | | | |#people=noanim |animation to object(s) |
+----------------+--------------------------------------+-------------+---------------------+-----------------------+ +----------------+--------------------------------------+-------------+---------------------+-----------------------+
@ -518,88 +524,83 @@ Internet-Draft XR Fragments February 2024
| the 3D scene(file) *but also* media defined in src-metadata like | the 3D scene(file) *but also* media defined in src-metadata like
| audio/video-files (mp3/mp4 e.g.) | audio/video-files (mp3/mp4 e.g.)
+==========+=======================+===============+================+ +==========+======================+===============+================+
| type | syntax | example | info | | type | syntax | example | info |
+==========+=======================+===============+================+ +==========+======================+===============+================+
| vector2 | x,y | 2,3.0 | 2-dimensional | | vector2 | x,y | 2,3.0 | 2-dimensional |
| | | | vector | | | | | vector |
+----------+-----------------------+---------------+----------------+ +----------+----------------------+---------------+----------------+
| vector3 | x,y,z | 2,3.0,4 | 3-dimensional | | vector3 | x,y,z | 2,3.0,4 | 3-dimensional |
| | | | vector | | | | | vector |
+----------+-----------------------+---------------+----------------+ +----------+----------------------+---------------+----------------+
| temporal | t=x | 0 | play from 0 | | temporal | t=x | 0 | play from 0 |
| W3C | | | seconds to | | W3C | | | seconds to end |
| media | | | end (and | | media | | | (and stop) |
| fragment | | | stop) | | fragment | | | |
+----------+-----------------------+---------------+----------------+ +----------+----------------------+---------------+----------------+
| temporal | t=x,y | 0,2 | play from 0 | | temporal | t=x,y | 0,2 | play from 0 |
| W3C | | | seconds till | | W3C | | | seconds till 2 |
| media | | | 2 seconds | | media | | | seconds (and |
| fragment | | | (and stop) | | fragment | | | stop) |
+----------+-----------------------+---------------+----------------+ +----------+----------------------+---------------+----------------+
| temporal | s=x | 1 | set playback | | temporal | s=x | 1 | set playback |
| W3C | | | speed of | | W3C | | | speed of |
| media | | | audio/ | | media | | | audio/video/3D |
| fragment | | | video/3D anim | | fragment | | | anim |
| * | | | | | * | | | |
+----------+-----------------------+---------------+----------------+ +----------+----------------------+---------------+----------------+
| temporal | [-]loop | loop | enable looped | | temporal | [-]loop | loop | enable looped |
| W3C | | | playback of | | W3C | | | playback of |
| media | | | audio/ | | media | | | audio/video/3D |
| fragment | | | video/3D anim | | fragment | | | anim |
| * | | | | | * | | | |
+----------+-----------------------+---------------+----------------+
| | | -loop | disable |
| | | | looped |
| | | | playback |
| | | | (does not |
| | | | affect |
van Kammen Expires 19 August 2024 [Page 10] van Kammen Expires 26 August 2024 [Page 10]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
| | | | playbackstate | +----------+----------------------+---------------+----------------+
| | | | of media) | | | | -loop | disable looped |
+----------+-----------------------+---------------+----------------+ | | | | playback (does |
| vector2 | uv=uv,v,uspeed,vspeed | 0,0 | set uv offset | | | | | not affect |
| | | | instantly | | | | | playbackstate |
| | | | (default | | | | | of media) |
| | | | speed = 1,1) | +----------+----------------------+---------------+----------------+
+----------+-----------------------+---------------+----------------+ | vector2 | uv=u,v,uspeed,vspeed | 0,0 | set uv offset |
| | | +0.5,+0.5 | scroll | | | | | instantly |
| | | | instantly by | | | | | (default speed |
| | | | adding 0.5 to | | | | | = 1,1) |
| | | | the current | +----------+----------------------+---------------+----------------+
| | | | uv | | | | +0.5,+0.5 | scroll |
| | | | coordinates | | | | | instantly by |
+----------+-----------------------+---------------+----------------+ | | | | adding 0.5 to |
| | | 0.2,1,0.1,0.1 | scroll (lerp) | | | | | the current uv |
| | | | to uv | | | | | coordinates |
| | | | coordinate | +----------+----------------------+---------------+----------------+
| | | | 0,2,1 with | | | | 0.2,1,0.1,0.1 | scroll (lerp) |
| | | | 0.1 units per | | | | | to uv |
| | | | second | | | | | coordinate |
+----------+-----------------------+---------------+----------------+ | | | | 0,2,1 with 0.1 |
| | | 0,0,0,+0.1 | scroll v | | | | | units per |
| | | | coordinates | | | | | second |
| | | | with 0.1 | +----------+----------------------+---------------+----------------+
| | | | units per | | | | 0,0,0,+0.1 | scroll v |
| | | | second | | | | | coordinates |
| | | | (infinitely) | | | | | with 0.1 units |
+----------+-----------------------+---------------+----------------+ | | | | per second |
| | | +0.5,+0.5 | scroll | | | | | (infinitely) |
| | | | instantly by | +----------+----------------------+---------------+----------------+
| | | | adding 0.5 to | | | | +0.5,+0.5 | scroll |
| | | | the current | | | | | instantly by |
| | | | uv | | | | | adding 0.5 to |
| | | | coordinates | | | | | the current uv |
+----------+-----------------------+---------------+----------------+ | | | | coordinates |
+----------+----------------------+---------------+----------------+
Table 6 Table 6
| media parameter (shader uniform) | | media parameter (shader uniform) |
u:<uniform>=<string|float|vec2|vec3|vec4> | u:color=1,0,0 | set u:<uniform>=<string|float|vec2|vec3|vec4> | u:color=1,0,0 | set
@ -612,8 +613,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 26 August 2024 [Page 11]
van Kammen Expires 19 August 2024 [Page 11]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -628,16 +628,18 @@ Internet-Draft XR Fragments February 2024
| The rationale for uv is that the xywh Media Fragment deals with | The rationale for uv is that the xywh Media Fragment deals with
| rectangular media, which does not translate well to 3D models | rectangular media, which does not translate well to 3D models
| (which use triangular polygons, not rectangular) positioned by uv- | (which use triangular polygons, not rectangular) positioned by uv-
| coordinates. | coordinates. This also explains the absense of a scale or rotate
| primitive, which is challenged by this, as well as multiple
| origins (mesh- or texture).
Example URI's: Example URI's:
* https://images.org/credits.jpg#uv=0,0,0,+0.1 (infinite vertical * https://images.org/credits.jpg#uv=0,0,0,+0.1 (infinite vertical
texturescrolling) texturescrolling)
* https://video.org/organogram.mp4#t=0&loop&uv:0.1,0.1,0.3,0.3 * https://video.org/organogram.mp4#t=0&loop&uv=0.1,0.1,0.3,0.3
(animated zoom towards region in looped video) (animated zoom towards region in looped video)
* https://shaders.org/plasma.glsl#t=0&u:col1=1,0,0&u:col2=0,1,0 * https://shaders.org/plasma.glsl#t=0&u:col2=0,1,0 (red-green shader
(red-green shader plasma starts playing from time-offset 0) plasma starts playing from time-offset 0)
+──────────────────────────────────────────────────────────+ +──────────────────────────────────────────────────────────+
│ │ │ │
@ -647,10 +649,10 @@ Internet-Draft XR Fragments February 2024
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570) │ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │ │ │ │
│ ├── ◻ plane (with material) │ │ ├── ◻ plane (with material) │
│ │ └ #: #suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ plane │ │ ├── ◻ plane │
│ │ └ src: foo.jpg#suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ src: foo.jpg#uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ media │ │ ├── ◻ media │
│ │ └ src: cat.mp4#t=l:2,10&uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5) │ │ └ src: cat.mp4#t=l:2,10&uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5)
@ -667,9 +669,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 26 August 2024 [Page 12]
van Kammen Expires 19 August 2024 [Page 12]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -725,7 +725,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 13] van Kammen Expires 26 August 2024 [Page 13]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -781,7 +781,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 14] van Kammen Expires 26 August 2024 [Page 14]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -837,7 +837,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 15] van Kammen Expires 26 August 2024 [Page 15]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -893,7 +893,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 16] van Kammen Expires 26 August 2024 [Page 16]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -949,7 +949,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 17] van Kammen Expires 26 August 2024 [Page 17]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1005,7 +1005,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 18] van Kammen Expires 26 August 2024 [Page 18]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1061,7 +1061,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 19] van Kammen Expires 26 August 2024 [Page 19]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1117,7 +1117,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 20] van Kammen Expires 26 August 2024 [Page 20]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1173,7 +1173,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 21] van Kammen Expires 26 August 2024 [Page 21]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1229,7 +1229,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 22] van Kammen Expires 26 August 2024 [Page 22]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1285,7 +1285,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 23] van Kammen Expires 26 August 2024 [Page 23]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1341,7 +1341,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 24] van Kammen Expires 26 August 2024 [Page 24]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1397,7 +1397,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 25] van Kammen Expires 26 August 2024 [Page 25]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1453,7 +1453,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 26] van Kammen Expires 26 August 2024 [Page 26]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1509,7 +1509,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 27] van Kammen Expires 26 August 2024 [Page 27]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1565,7 +1565,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 28] van Kammen Expires 26 August 2024 [Page 28]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1621,7 +1621,7 @@ xrtext = {
van Kammen Expires 19 August 2024 [Page 29] van Kammen Expires 26 August 2024 [Page 29]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1677,7 +1677,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 30] van Kammen Expires 26 August 2024 [Page 30]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1733,7 +1733,7 @@ console.log( xrtext.encode(text,tags) ) // multiplex text & bibtex back to
van Kammen Expires 19 August 2024 [Page 31] van Kammen Expires 26 August 2024 [Page 31]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1789,7 +1789,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 32] van Kammen Expires 26 August 2024 [Page 32]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1845,7 +1845,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 33] van Kammen Expires 26 August 2024 [Page 33]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1901,7 +1901,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 34] van Kammen Expires 26 August 2024 [Page 34]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -1957,7 +1957,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 35] van Kammen Expires 26 August 2024 [Page 35]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -2013,7 +2013,7 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 36] van Kammen Expires 26 August 2024 [Page 36]
Internet-Draft XR Fragments February 2024 Internet-Draft XR Fragments February 2024
@ -2069,4 +2069,4 @@ Internet-Draft XR Fragments February 2024
van Kammen Expires 19 August 2024 [Page 37] van Kammen Expires 26 August 2024 [Page 37]

View File

@ -34,9 +34,10 @@ XR Fragments exploits the fact that all 3D models already contain such metadata:
<t>It solves:</t> <t>It solves:</t>
<ol spacing="compact"> <ol spacing="compact">
<li>addressibility and <eref target="https://github.com/coderofsalvation/hypermediatic">hypermediatic</eref> navigation of 3D scenes/objects: <eref target="https://en.wikipedia.org/wiki/URI_fragment">URI Fragments</eref> + src/href spatial metadata</li> <li>addressibility and <eref target="https://github.com/coderofsalvation/hypermediatic">hypermediatic</eref> navigation of 3D scenes/objects: <eref target="https://en.wikipedia.org/wiki/URI_fragment">URI Fragments</eref> using src/href spatial metadata</li>
<li>Interlinking text &amp; spatial objects by collapsing space into a Word Graph (XRWG) to show <eref target="#visible-links">visible links</eref></li> <li>Interlinking text &amp; spatial objects by collapsing space into a Word Graph (XRWG) to show <eref target="#visible-links">visible links</eref></li>
<li>unlocking spatial potential of the (originally 2D) hashtag (which jumps to a chapter) for navigating XR documents</li> <li>unlocking spatial potential of the (originally 2D) hashtag (which jumps to a chapter) for navigating XR documents</li>
<li>refraining from introducing scripting-engines for mundane tasks (and preventing its inevitable security-headaches)</li>
</ol> </ol>
<blockquote><t>NOTE: The chapters in this document are ordered from highlevel to lowlevel (technical) as much as possible</t> <blockquote><t>NOTE: The chapters in this document are ordered from highlevel to lowlevel (technical) as much as possible</t>
</blockquote></section> </blockquote></section>
@ -96,7 +97,7 @@ But approaches things from a higherlevel feedbackloop/hypermedia browser-perspec
+───────────────────────────────────────────────────────────────────────────────────────────────+ +───────────────────────────────────────────────────────────────────────────────────────────────+
</artwork> </artwork>
<blockquote><t>?-linked and #-linked navigation allows a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation.</t> <blockquote><t>?-linked and #-linked navigation are JUST one possible way to implement XR Fragments, to allow a Hypermediatic FeedbackLoop (HFL) between external and internal 4D navigation.</t>
</blockquote><t>Traditional webbrowsers can become 4D document-ready by:</t> </blockquote><t>Traditional webbrowsers can become 4D document-ready by:</t>
<ul spacing="compact"> <ul spacing="compact">
@ -282,6 +283,14 @@ That way, if the link gets shared, the XR Fragments implementation at <tt>https:
<td>tag object (for filter-use / XRWG highlighting)</td> <td>tag object (for filter-use / XRWG highlighting)</td>
<td>custom property in 3D fileformats</td> <td>custom property in 3D fileformats</td>
</tr> </tr>
<tr>
<td><tt>#</tt></td>
<td>string</td>
<td><tt>&quot;#&quot;: &quot;#mypreset</tt></td>
<td>trigger default fragment on load</td>
<td>custom property in 3D fileformats</td>
</tr>
</tbody> </tbody>
</table><blockquote><t>Supported popular compatible 3D fileformats: <tt>.gltf</tt>, <tt>.obj</tt>, <tt>.fbx</tt>, <tt>.usdz</tt>, <tt>.json</tt> (THREE.js), <tt>.dae</tt> and so on.</t> </table><blockquote><t>Supported popular compatible 3D fileformats: <tt>.gltf</tt>, <tt>.obj</tt>, <tt>.fbx</tt>, <tt>.usdz</tt>, <tt>.json</tt> (THREE.js), <tt>.dae</tt> and so on.</t>
</blockquote></section> </blockquote></section>
@ -430,7 +439,7 @@ That way, if the link gets shared, the XR Fragments implementation at <tt>https:
<tr> <tr>
<td>vector2</td> <td>vector2</td>
<td>uv=uv,v,uspeed,vspeed</td> <td>uv=u,v,uspeed,vspeed</td>
<td>0,0</td> <td>0,0</td>
<td>set uv offset instantly (default speed = <tt>1,1</tt>)</td> <td>set uv offset instantly (default speed = <tt>1,1</tt>)</td>
</tr> </tr>
@ -465,13 +474,13 @@ That way, if the link gets shared, the XR Fragments implementation at <tt>https:
</tbody> </tbody>
</table><t>| media parameter (shader uniform) | u:&lt;uniform&gt;=&lt;string|float|vec2|vec3|vec4&gt; | u:color=1,0,0 | set shader uniform value |</t> </table><t>| media parameter (shader uniform) | u:&lt;uniform&gt;=&lt;string|float|vec2|vec3|vec4&gt; | u:color=1,0,0 | set shader uniform value |</t>
<blockquote><t>* = this is extending the <eref target="https://www.w3.org/TR/media-frags/#mf-advanced">W3C media fragments</eref> with (missing) playback/viewport-control. Normally <tt>#t=0,2</tt> implies setting start/stop-values AND starting playback, whereas <tt>#s=0&amp;loop</tt> allows pausing a video, speeding up/slowing down media, as well as enabling/disabling looping.</t> <blockquote><t>* = this is extending the <eref target="https://www.w3.org/TR/media-frags/#mf-advanced">W3C media fragments</eref> with (missing) playback/viewport-control. Normally <tt>#t=0,2</tt> implies setting start/stop-values AND starting playback, whereas <tt>#s=0&amp;loop</tt> allows pausing a video, speeding up/slowing down media, as well as enabling/disabling looping.</t>
<t>The rationale for <tt>uv</tt> is that the <tt>xywh</tt> Media Fragment deals with rectangular media, which does not translate well to 3D models (which use triangular polygons, not rectangular) positioned by uv-coordinates.</t> <t>The rationale for <tt>uv</tt> is that the <tt>xywh</tt> Media Fragment deals with rectangular media, which does not translate well to 3D models (which use triangular polygons, not rectangular) positioned by uv-coordinates. This also explains the absense of a <tt>scale</tt> or <tt>rotate</tt> primitive, which is challenged by this, as well as multiple origins (mesh- or texture).</t>
</blockquote><t>Example URI's:</t> </blockquote><t>Example URI's:</t>
<ul spacing="compact"> <ul spacing="compact">
<li><tt>https://images.org/credits.jpg#uv=0,0,0,+0.1</tt> (infinite vertical texturescrolling)</li> <li><tt>https://images.org/credits.jpg#uv=0,0,0,+0.1</tt> (infinite vertical texturescrolling)</li>
<li><tt>https://video.org/organogram.mp4#t=0&amp;loop&amp;uv:0.1,0.1,0.3,0.3</tt> (animated zoom towards region in looped video)</li> <li><tt>https://video.org/organogram.mp4#t=0&amp;loop&amp;uv=0.1,0.1,0.3,0.3</tt> (animated zoom towards region in looped video)</li>
<li><tt>https://shaders.org/plasma.glsl#t=0&amp;u:col1=1,0,0&amp;u:col2=0,1,0</tt> (red-green shader plasma starts playing from time-offset 0)</li> <li><tt>https://shaders.org/plasma.glsl#t=0&amp;u:col2=0,1,0</tt> (red-green shader plasma starts playing from time-offset 0)</li>
</ul> </ul>
<artwork> +──────────────────────────────────────────────────────────+ <artwork> +──────────────────────────────────────────────────────────+
@ -482,10 +491,10 @@ That way, if the link gets shared, the XR Fragments implementation at <tt>https:
│ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570) │ ├ play : #t=l:0,2 │ variable for [URI Templates (RFC6570)](https://www.rfc-editor.org/rfc/rfc6570)
│ │ │ │ │ │
│ ├── ◻ plane (with material) │ │ ├── ◻ plane (with material) │
│ │ └ #: #suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ #: #uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ plane │ │ ├── ◻ plane │
│ │ └ src: foo.jpg#suv=l:0,0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps │ │ └ src: foo.jpg#uv=0,0,0,+0.1 │ infinite texturescroll `v` of uv·coordinates with 0.1/fps
│ │ │ │ │ │
│ ├── ◻ media │ │ ├── ◻ media │
│ │ └ src: cat.mp4#t=l:2,10&amp;uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5) │ │ └ src: cat.mp4#t=l:2,10&amp;uv=0.5,0.5 │ loop cat.mp4 (or mp3/wav/jpg) between 2 and 10 seconds (uv's shifted with 0.5,0.5)

File diff suppressed because one or more lines are too long