diff --git a/doc/RFC_XR_Fragments.html b/doc/RFC_XR_Fragments.html
index 880718e..5f10a2e 100644
--- a/doc/RFC_XR_Fragments.html
+++ b/doc/RFC_XR_Fragments.html
@@ -210,7 +210,7 @@ Instead of forcing authors to combine 3D/2D objects programmatically (publishing
#...... |
vector3 |
#room1 #room2 #cam2 |
-positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera |
+positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera and upvector |
@@ -733,7 +733,7 @@ The sidecar will define (or override already existing) extras,
| #=room1 |
string |
-position camera to position of objectname room1 (+userheight in VR) |
+position camera to position and upvector of objectname room1 (+userheight in VR) |
@@ -745,6 +745,7 @@ The sidecar will define (or override already existing) extras,
- 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.
- set the position of the camera accordingly to the vector3 values of
room1
+- set the upvector of the camera accordingly to the vector3 values of
room1 (local gravity as pioneered by Patrick Lichty)
- if the referenced
#room1 object is animated, parent the current camera to that object (so it animates too)
- in case a
href does not mention any 3D object, the current position will be assumed
diff --git a/doc/RFC_XR_Fragments.md b/doc/RFC_XR_Fragments.md
index 0e2a12a..4bf3471 100644
--- a/doc/RFC_XR_Fragments.md
+++ b/doc/RFC_XR_Fragments.md
@@ -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 |
|----------|--------|------------------------------|
-| #=room1 | string | position camera to position of objectname `room1` (+userheight in VR) |
+| #=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)
[» discussion](https://github.com/coderofsalvation/xrfragment/issues/5)
@@ -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
diff --git a/doc/RFC_XR_Fragments.txt b/doc/RFC_XR_Fragments.txt
index 1a4edfd..f200296 100644
--- a/doc/RFC_XR_Fragments.txt
+++ b/doc/RFC_XR_Fragments.txt
@@ -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,14 +870,15 @@ Internet-Draft XR Fragments September 2025
11. Navigating 3D
- +================+========+======================================+
- | fragment | type | functionality |
- +================+========+======================================+
- | #=room1 | string | position camera to position of |
- | | | objectname room1 (+userheight in VR) |
- +----------------+--------+--------------------------------------+
+ +================+========+=============================+
+ | fragment | type | functionality |
+ +================+========+=============================+
+ | #=room1 | string | position camera to position |
+ | | | and upvector of objectname |
+ | | | room1 (+userheight in VR) |
+ +----------------+--------+-----------------------------+
- Table 7
+ Table 7
» example implementation
(https://github.com/coderofsalvation/xrfragment/blob/main/src/3rd/js/
@@ -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
diff --git a/doc/RFC_XR_Fragments.xml b/doc/RFC_XR_Fragments.xml
index 0efa7c1..85325c9 100644
--- a/doc/RFC_XR_Fragments.xml
+++ b/doc/RFC_XR_Fragments.xml
@@ -137,7 +137,7 @@ But approaches things from a higherlevel feedbackloop/hypermedia browser-perspec
#...... |
vector3 |
#room1 #room2 #cam2 |
-positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera |
+positions/parents camera(rig) (or XR floor) to xyz-coord/object/camera and upvector |
@@ -612,7 +612,7 @@ The sidecar will define (or override already existing) extras,
| <b>#</b>=room1 |
string |
-position camera to position of objectname room1 (+userheight in VR) |
+position camera to position and upvector of objectname room1 (+userheight in VR) |
» example implementation
@@ -624,6 +624,7 @@ The sidecar will define (or override already existing) extras,
- 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.
- set the position of the camera accordingly to the vector3 values of room1
+- set the upvector of the camera accordingly to the vector3 values of room1 (local gravity as pioneered by Patrick Lichty)
- if the referenced #room1 object is animated, parent the current camera to that object (so it animates too)
- in case a href does not mention any 3D object, the current position will be assumed
diff --git a/index.html b/index.html
index 1730406..6f4ec96 100644
--- a/index.html
+++ b/index.html
@@ -78,27 +78,7 @@ A tiny specification for controlling any 3D model using URLs
-
-
-
+