milestone 7m + 7l + 7n: wip

This commit is contained in:
Leon van Kammen 2025-09-02 16:38:16 +02:00
parent a64694edc0
commit 5306f05c64
5 changed files with 42 additions and 89 deletions

View file

@ -210,7 +210,7 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
<td><code>#......</code></td>
<td>vector3</td>
<td><code>#room1</code> <code>#room2</code> <code>#cam2</code></td>
<td>positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera</td>
<td>positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera and upvector</td>
</tr>
<tr>
@ -733,7 +733,7 @@ The sidecar will define (or <strong>override</strong> already existing) extras,
<tr>
<td><b>#</b>=room1</td>
<td>string</td>
<td>position camera to position of objectname <code>room1</code> (+userheight in VR)</td>
<td>position camera to position and upvector of objectname <code>room1</code> (+userheight in VR)</td>
</tr>
</tbody>
</table>
@ -745,6 +745,7 @@ The sidecar will define (or <strong>override</strong> already existing) extras,
<ol>
<li>the Y-coordinate of `room1 identifies the floorposition. This means that desktop-projections usually need to add 1.5m (average person height) on top (which is done automatically by VR/AR headsets), except in case of camera-switching.</li>
<li>set the position of the camera accordingly to the vector3 values of <code>room1</code></li>
<li>set the upvector of the camera accordingly to the vector3 values of <code>room1</code> (local gravity as pioneered by Patrick Lichty)</li>
<li>if the referenced <code>#room1</code> object is animated, parent the current camera to that object (so it animates too)</li>
<li>in case a <code>href</code> does not mention any 3D object, the current position will be assumed</li>
</ol>

View file

@ -202,7 +202,7 @@ XR Fragments utilizes URLs:
| fragment | type | example | info |
|-------------------|------------|--------------------|----------------------------------------------------------------------|
| `#......` | vector3 | `#room1` `#room2` `#cam2` | positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera |
| `#......` | vector3 | `#room1` `#room2` `#cam2` | positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera and upvector |
| [Media Fragments](https://www.w3.org/TR/media-frags/) | [media fragment](#media%20fragments%20and%20datatypes) | `#t=0,2&loop` | play (and loop) 3D animation from 0 seconds till 2 seconds|
@ -442,7 +442,7 @@ Example URI's:
| fragment | type | functionality |
|----------|--------|------------------------------|
| <b>#</b>=room1 | string | position camera to position of objectname `room1` (+userheight in VR) |
| <b>#</b>=room1 | string | position camera to position and upvector of objectname `room1` (+userheight in VR) |
[» example implementation](https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js)<br>
[» discussion](https://github.com/coderofsalvation/xrfragment/issues/5)<br>
@ -451,6 +451,7 @@ Here's the basic **level1** flow (with optional level2 features):
1. the Y-coordinate of `room1 identifies the floorposition. This means that desktop-projections usually need to add 1.5m (average person height) on top (which is done automatically by VR/AR headsets), except in case of camera-switching.
2. set the position of the camera accordingly to the vector3 values of `room1`
3. set the upvector of the camera accordingly to the vector3 values of `room1` (local gravity as pioneered by Patrick Lichty)
3. if the referenced `#room1` object is animated, parent the current camera to that object (so it animates too)
4. in case a `href` does not mention any 3D object, the current position will be assumed

View file

@ -293,7 +293,8 @@ Internet-Draft XR Fragments September 2025
| | | |(or XR floor)|
| | | |to xyz- |
| | | |coord/object/|
| | | |camera |
| | | |camera and |
| | | |upvector |
+-----------------------+--------------------------------------+-----------+-------------+
|Media Fragments |media fragment |#t=0,2&loop|play (and |
|(https://www.w3.org/TR/|(#media%20fragments%20and%20datatypes)| |loop) 3D |
@ -332,7 +333,6 @@ Internet-Draft XR Fragments September 2025
van Kammen Expires 5 March 2026 [Page 6]
Internet-Draft XR Fragments September 2025
@ -870,12 +870,13 @@ Internet-Draft XR Fragments September 2025
11. Navigating 3D
+================+========+======================================+
+================+========+=============================+
| fragment | type | functionality |
+================+========+======================================+
| <b>#</b>=room1 | string | position camera to position of |
| | | objectname room1 (+userheight in VR) |
+----------------+--------+--------------------------------------+
+================+========+=============================+
| <b>#</b>=room1 | string | position camera to position |
| | | and upvector of objectname |
| | | room1 (+userheight in VR) |
+----------------+--------+-----------------------------+
Table 7
@ -892,7 +893,6 @@ Internet-Draft XR Fragments September 2025
van Kammen Expires 5 March 2026 [Page 16]
Internet-Draft XR Fragments September 2025
@ -904,9 +904,11 @@ Internet-Draft XR Fragments September 2025
headsets), except in case of camera-switching.
2. set the position of the camera accordingly to the vector3 values
of room1
3. if the referenced #room1 object is animated, parent the current
3. set the upvector of the camera accordingly to the vector3 values
of room1 (local gravity as pioneered by Patrick Lichty)
4. if the referenced #room1 object is animated, parent the current
camera to that object (so it animates too)
4. in case a href does not mention any 3D object, the current
5. in case a href does not mention any 3D object, the current
position will be assumed
Here's an ascii representation of a 3D scene-graph which contains 3D
@ -944,8 +946,6 @@ Internet-Draft XR Fragments September 2025
9. *level2*: after scene load: in case the scene (rootnode) contains
an # default view with a fragment value: execute positional
fragment via the hashbus + update top-level URL
10. *level2*: in case of no default # view on the scene (rootnode),
default player(rig) position 0,0,0 is assumed.
@ -954,6 +954,9 @@ van Kammen Expires 5 March 2026 [Page 17]
Internet-Draft XR Fragments September 2025
10. *level2*: in case of no default # view on the scene (rootnode),
default player(rig) position 0,0,0 is assumed.
12. Top-level URL processing
| Example URL: ://foo/world.gltf#room1&t=10
@ -1002,9 +1005,6 @@ Internet-Draft XR Fragments September 2025
van Kammen Expires 5 March 2026 [Page 18]
Internet-Draft XR Fragments September 2025

View file

@ -137,7 +137,7 @@ But approaches things from a higherlevel feedbackloop/hypermedia browser-perspec
<td><tt>#......</tt></td>
<td>vector3</td>
<td><tt>#room1</tt> <tt>#room2</tt> <tt>#cam2</tt></td>
<td>positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera</td>
<td>positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera and upvector</td>
</tr>
<tr>
@ -612,7 +612,7 @@ The sidecar will define (or <strong>override</strong> already existing) extras,
<tr>
<td>&lt;b&gt;#&lt;/b&gt;=room1</td>
<td>string</td>
<td>position camera to position of objectname <tt>room1</tt> (+userheight in VR)</td>
<td>position camera to position and upvector of objectname <tt>room1</tt> (+userheight in VR)</td>
</tr>
</tbody>
</table><t><eref target="https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/three/xrf/pos.js">» example implementation</eref><br />
@ -624,6 +624,7 @@ The sidecar will define (or <strong>override</strong> already existing) extras,
<ol spacing="compact">
<li>the Y-coordinate of `room1 identifies the floorposition. This means that desktop-projections usually need to add 1.5m (average person height) on top (which is done automatically by VR/AR headsets), except in case of camera-switching.</li>
<li>set the position of the camera accordingly to the vector3 values of <tt>room1</tt></li>
<li>set the upvector of the camera accordingly to the vector3 values of <tt>room1</tt> (local gravity as pioneered by Patrick Lichty)</li>
<li>if the referenced <tt>#room1</tt> object is animated, parent the current camera to that object (so it animates too)</li>
<li>in case a <tt>href</tt> does not mention any 3D object, the current position will be assumed</li>
</ol>

File diff suppressed because one or more lines are too long