From 5306f05c644a8eab078f1d10b2e690c7e374bbc8 Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Tue, 2 Sep 2025 16:38:16 +0200 Subject: [PATCH] milestone 7m + 7l + 7n: wip --- doc/RFC_XR_Fragments.html | 5 ++- doc/RFC_XR_Fragments.md | 5 ++- doc/RFC_XR_Fragments.txt | 34 ++++++++-------- doc/RFC_XR_Fragments.xml | 5 ++- index.html | 82 ++++++++------------------------------- 5 files changed, 42 insertions(+), 89 deletions(-) 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,
  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. +
  4. set the upvector of the camera accordingly to the vector3 values of room1 (local gravity as pioneered by Patrick Lichty)
  5. if the referenced #room1 object is animated, parent the current camera to that object (so it animates too)
  6. 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,
  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. +
  4. set the upvector of the camera accordingly to the vector3 values of room1 (local gravity as pioneered by Patrick Lichty)
  5. if the referenced #room1 object is animated, parent the current camera to that object (so it animates too)
  6. 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 - - - +