From 3cd4153822ddc4a835f7a862a803ea4d92566b3b Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Fri, 1 Sep 2023 14:20:02 +0200 Subject: [PATCH] update documentation --- doc/RFC.sh | 5 - doc/RFC.template.md | 47 -------- doc/RFC_XR_Fragments.html | 145 ++++++++++++++++++++++++ doc/RFC_XR_Fragments.md | 153 ++++++++++++++++++++++++++ doc/RFC_XR_Fragments.txt | 224 ++++++++++++++++++++++++++++++++++++++ doc/RFC_XR_Fragments.xml | 115 +++++++++++++++++++ doc/generate.sh | 7 ++ 7 files changed, 644 insertions(+), 52 deletions(-) delete mode 100755 doc/RFC.sh delete mode 100644 doc/RFC.template.md create mode 100644 doc/RFC_XR_Fragments.html create mode 100644 doc/RFC_XR_Fragments.md create mode 100644 doc/RFC_XR_Fragments.txt create mode 100644 doc/RFC_XR_Fragments.xml create mode 100755 doc/generate.sh diff --git a/doc/RFC.sh b/doc/RFC.sh deleted file mode 100755 index 9f20fbb..0000000 --- a/doc/RFC.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -set -e -mmark RFC.template.md > RFC_XR_Fragments.xml -mmark --html RFC.template.md > RFC_XR_Fragments.html -xml2rfc --v3 RFC_XR_Fragments.xml # RFC_XR_Fragments.txt diff --git a/doc/RFC.template.md b/doc/RFC.template.md deleted file mode 100644 index db3882b..0000000 --- a/doc/RFC.template.md +++ /dev/null @@ -1,47 +0,0 @@ -%%% -Title = "XR Fragments" -area = "Internet" -workgroup = "Internet Engineering Task Force" - -[seriesInfo] -name = "XR-Fragments" -value = "draft-XRFRAGMENTS-leonvankammen-00" -stream = "IETF" -status = "informational" - -date = 2023-04-12T00:00:00Z - -[[author]] -initials="L.R." -surname="van Kammen" -fullname="L.R. van Kammen" - -%%% - - - -.# Abstract - -This is a small test document. - -{mainmatter} - -# Introduction - -TODO Introduction - -# Conventions and Definitions - -{::boilerplate bcp14-tagged} - -# Security Considerations - -TODO Security - -# IANA Considerations - -This document has no IANA actions. - -# Acknowledgments - -TODO acknowledge. diff --git a/doc/RFC_XR_Fragments.html b/doc/RFC_XR_Fragments.html new file mode 100644 index 0000000..1de03ae --- /dev/null +++ b/doc/RFC_XR_Fragments.html @@ -0,0 +1,145 @@ + + + + XR Fragments + + + + + + + + + + +
+

XR Fragments

+
+ +
+stream:    IETF
+area:      Internet
+status:    informational
+author:    Leon van Kammen
+date:      2023-04-12T00:00:00Z
+workgroup: Internet Engineering Task Force
+value:     draft-XRFRAGMENTS-leonvankammen-00
+
+ + + +

Abstract

+ +

This draft offers a specification for 4D URLs & navigation, to link 3D scenes and text together with- or without a network-connection. +The specification promotes spatial addressibility, sharing, navigation, query-ing and interactive text across for (XR) Browsers. +XR Fragments allows us to enrich existing dataformats, by recursive use of existing technologies like URI Fragments & visual-meta.

+
+

Introduction

+ +

How can we add more features to existing text & 3D scenes, without introducing new dataformats? +Historically, there’s many attempts to create the ultimate markuplanguage or 3D fileformat. +However, thru the lens of authorina,g their lowest common denominator is still: plain text. +XR Fragments allows us to enrich existing dataformats, by recursive use of existing technologies:

+ + + +

Conventions and Definitions

+ + + +

{::boilerplate bcp14-tagged}

+ +

Navigating 3D

+ +

Here’s an ascii representation of a 3D scene-graph which contains 3D objects () and their metadata:

+ +
 index.gltf
+   │
+   ├── ◻ buttonA
+   │      └ href: #pos=1,0,1&t=100,200
+   │
+   └── ◻ buttonB
+          └ href: other.fbx
+
+
+ +

An XR Fragment-compatible browser viewing this scene, allows the end-user to interact with the buttonA and buttonB. +In case of buttonA the end-user will be teleported to another location and time in the current loaded scene, but buttonB will + replace the current scene with a new one (other.fbx).

+ +

Navigating text

+ +

TODO

+ +

Embedding 3D content

+ +

Here’s an ascii representation of a 3D scene-graph with 3D objects () which embeds remote & local 3D objects () (without) using queries:

+ +
  +------------------------------------------------------------+  +---------------------------+ 
+  |                                                            |  |                           |
+  |  index.gltf                                                |  | rescue.com/aquarium.gltf  |
+  |    │                                                       |  |   │                       |
+  |    ├── ◻ canvas                                            |  |   └── ◻ fishbowl          |
+  |    │      └ src: painting.png                              |  |         ├─ ◻ bassfish     |
+  |    │                                                       |  |         └─ ◻ tuna         |
+  |    ├── ◻ aquariumcube                                      |  |                           |       
+  |    │      └ src: ://rescue.com/fish.gltf#q=bassfish%20tuna |  +---------------------------+
+  |    │                                                       |    
+  |    ├── ◻ bedroom                                           |   
+  |    │      └ src: #q=canvas                                 |
+  |    │                                                       |   
+  |    └── ◻ livingroom                                        |      
+  |           └ src: #q=canvas                                 |
+  |                                                            |
+  +------------------------------------------------------------+
+
+ +

An XR Fragment-compatible browser viewing this scene, lazy-loads and projects painting.png onto the (plane) object called canvas (which is copy-instanced in the bed and livingroom). +Also, after lazy-loading rescue.com/aquarium.gltf, only the queried objects bassfish and tuna will be instanced inside aquariumcube. +Resizing will be happen accordingly to its placeholder object (aquariumcube), see chapter Scaling.

+ +

Embedding text

+ +

List of XR URI Fragments

+ +

Security Considerations

+ +

TODO Security

+ +

IANA Considerations

+ +

This document has no IANA actions.

+ +

Acknowledgments

+ +

TODO acknowledge.

+
+ + + + diff --git a/doc/RFC_XR_Fragments.md b/doc/RFC_XR_Fragments.md new file mode 100644 index 0000000..35c467b --- /dev/null +++ b/doc/RFC_XR_Fragments.md @@ -0,0 +1,153 @@ +%%% +Title = "XR Fragments" +area = "Internet" +workgroup = "Internet Engineering Task Force" + +[seriesInfo] +name = "XR-Fragments" +value = "draft-XRFRAGMENTS-leonvankammen-00" +stream = "IETF" +status = "informational" + +date = 2023-04-12T00:00:00Z + +[[author]] +initials="L.R." +surname="van Kammen" +fullname="L.R. van Kammen" + +%%% + + + + + +.# Abstract + +This draft offers a specification for 4D URLs & navigation, to link 3D scenes and text together with- or without a network-connection. +The specification promotes spatial addressibility, sharing, navigation, query-ing and interactive text across for (XR) Browsers. +XR Fragments allows us to enrich existing dataformats, by recursive use of existing technologies like [URI Fragments](https://en.wikipedia.org/wiki/URI_fragment) & [visual-meta](https://visual-meta.info). + +{mainmatter} + +# Introduction + +How can we add more features to existing text & 3D scenes, without introducing new dataformats? +Historically, there's many attempts to create the ultimate markuplanguage or 3D fileformat. +However, thru the lens of authoring their lowest common denominator is still: plain text. +XR Fragments allows us to enrich existing dataformats, by recursive use of existing technologies: + +* addressibility & navigation of 3D objects: [URI Fragments](https://en.wikipedia.org/wiki/URI_fragment) + (src/href) metadata +* addressibility & navigation of text objects: [visual-meta](https://visual-meta.info) + +# Conventions and Definitions + +* scene: a (local/remote) 3D scene or 3D file (index.gltf e.g.) +* 3D object: an object inside a scene characterized by vertex-, face- and customproperty data. +* metadata: custom properties defined in 3D Scene or Object(nodes) +* XR fragment: URI Fragment with spatial hints (`#pos=0,0,0&t=1,100` e.g.) +* src: a (HTML-piggybacked) metadata-attribute of a 3D object which instances content +* href: a (HTML-piggybacked) metadata-attribute of a 3D object which links to content +* query: an URI Fragment-operator which queries object(s) from a scene (`#q=cube`) + +{::boilerplate bcp14-tagged} + +# Navigating 3D + +Here's an ascii representation of a 3D scene-graph which contains 3D objects (`◻`) and their metadata: + +``` + index.gltf + │ + ├── ◻ buttonA + │ └ href: #pos=1,0,1&t=100,200 + │ + └── ◻ buttonB + └ href: other.fbx + +``` + +An XR Fragment-compatible browser viewing this scene, allows the end-user to interact with the `buttonA` and `buttonB`. +In case of `buttonA` the end-user will be teleported to another location and time in the **current loaded scene**, but `buttonB` will + **replace the current scene** with a new one (`other.fbx`). + +# Navigating text + +TODO + +# Embedding 3D content + +Here's an ascii representation of a 3D scene-graph with 3D objects (`◻`) which embeds remote & local 3D objects (`◻`) (without) using queries: + +``` + +------------------------------------------------------------+ +---------------------------+ + | | | | + | index.gltf | | rescue.com/aquarium.gltf | + | │ | | │ | + | ├── ◻ canvas | | └── ◻ fishbowl | + | │ └ src: painting.png | | ├─ ◻ bassfish | + | │ | | └─ ◻ tuna | + | ├── ◻ aquariumcube | | | + | │ └ src: ://rescue.com/fish.gltf#q=bassfish%20tuna | +---------------------------+ + | │ | + | ├── ◻ bedroom | + | │ └ src: #q=canvas | + | │ | + | └── ◻ livingroom | + | └ src: #q=canvas | + | | + +------------------------------------------------------------+ +``` + +An XR Fragment-compatible browser viewing this scene, lazy-loads and projects `painting.png` onto the (plane) object called `canvas` (which is copy-instanced in the bed and livingroom). +Also, after lazy-loading `rescue.com/aquarium.gltf`, only the queried objects `bassfish` and `tuna` will be instanced inside `aquariumcube`. +Resizing will be happen accordingly to its placeholder object (`aquariumcube`), see chapter Scaling. + +# Embedding text + +# List of XR URI Fragments + +# Security Considerations + +TODO Security + +# IANA Considerations + +This document has no IANA actions. + +# Acknowledgments + +TODO acknowledge. diff --git a/doc/RFC_XR_Fragments.txt b/doc/RFC_XR_Fragments.txt new file mode 100644 index 0000000..981b38c --- /dev/null +++ b/doc/RFC_XR_Fragments.txt @@ -0,0 +1,224 @@ + + + + +Internet Engineering Task Force L.R. van Kammen +Internet-Draft 31 August 2023 +Intended status: Informational +Expires: 3 March 2024 + + + XR Fragments + draft-XRFRAGMENTS-leonvankammen-00 + +Abstract + + This draft offers a specification for 4D URLs & navigation, to link + 3D scenes and text together with- or without a network-connection. + The specification promotes spatial addressibility, sharing, + navigation, query-ing and interactive text across for (XR) Browsers. + XR Fragments allows us to enrich existing dataformats, by recursive + use of existing technologies like URI Fragments + (https://en.wikipedia.org/wiki/URI_fragment) & visual-meta + (https://visual-meta.info). + +Status of This Memo + + This Internet-Draft is submitted in full conformance with the + provisions of BCP 78 and BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF). Note that other groups may also distribute + working documents as Internet-Drafts. The list of current Internet- + Drafts is at https://datatracker.ietf.org/drafts/current/. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + This Internet-Draft will expire on 3 March 2024. + +Copyright Notice + + Copyright (c) 2023 IETF Trust and the persons identified as the + document authors. All rights reserved. + + + + + + + + + + +van Kammen Expires 3 March 2024 [Page 1] + +Internet-Draft XR Fragments August 2023 + + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents (https://trustee.ietf.org/ + license-info) in effect on the date of publication of this document. + Please review these documents carefully, as they describe your rights + and restrictions with respect to this document. Code Components + extracted from this document must include Revised BSD License text as + described in Section 4.e of the Trust Legal Provisions and are + provided without warranty as described in the Revised BSD License. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 + 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 2 + 3. Navigating 3D . . . . . . . . . . . . . . . . . . . . . . . . 3 + 4. Navigating text . . . . . . . . . . . . . . . . . . . . . . . 3 + 5. Embedding 3D content . . . . . . . . . . . . . . . . . . . . 3 + 6. Embedding text . . . . . . . . . . . . . . . . . . . . . . . 4 + 7. List of XR URI Fragments . . . . . . . . . . . . . . . . . . 4 + 8. Security Considerations . . . . . . . . . . . . . . . . . . . 4 + 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 + 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 4 + +1. Introduction + + How can we add more features to existing text & 3D scenes, without + introducing new dataformats? Historically, there's many attempts to + create the ultimate markuplanguage or 3D fileformat. However, thru + the lens of authorina,g their lowest common denominator is still: + plain text. XR Fragments allows us to enrich existing dataformats, + by recursive use of existing technologies: + + * addressibility & navigation of 3D objects: URI Fragments + (https://en.wikipedia.org/wiki/URI_fragment) + (src/href) metadata + * addressibility & navigation of text objects: visual-meta + (https://visual-meta.info) + +2. Conventions and Definitions + + * scene: a (local/remote) 3D scene or 3D file (index.gltf e.g.) + * 3D object: an object inside a scene characterized by vertex-, + face- and customproperty data. + * metadata: custom properties defined in 3D Scene or Object(nodes) + * XR fragment: URI Fragment with spatial hints (#pos=0,0,0&t=1,100 + e.g.) + * src: a (HTML-piggybacked) metadata-attribute of a 3D object which + instances content + * href: a (HTML-piggybacked) metadata-attribute of a 3D object which + links to content + + + +van Kammen Expires 3 March 2024 [Page 2] + +Internet-Draft XR Fragments August 2023 + + + * query: an URI Fragment-operator which queries object(s) from a + scene (#q=cube) + + {::boilerplate bcp14-tagged} + +3. Navigating 3D + + Here's an ascii representation of a 3D scene-graph which contains 3D + objects (◻) and their metadata: + + index.gltf + │ + ├── ◻ buttonA + │ └ href: #pos=1,0,1&t=100,200 + │ + └── ◻ buttonB + └ href: other.fbx + + An XR Fragment-compatible browser viewing this scene, allows the end- + user to interact with the buttonA and buttonB. In case of buttonA + the end-user will be teleported to another location and time in the + *current loaded scene*, but buttonB will *replace the current scene* + with a new one (other.fbx). + +4. Navigating text + + TODO + +5. Embedding 3D content + + Here's an ascii representation of a 3D scene-graph with 3D objects + (◻) which embeds remote & local 3D objects (◻) (without) + using queries: + + + + + + + + + + + + + + + + + + +van Kammen Expires 3 March 2024 [Page 3] + +Internet-Draft XR Fragments August 2023 + + + +------------------------------------------------------------+ +---------------------------+ + | | | | + | index.gltf | | rescue.com/aquarium.gltf | + | │ | | │ | + | ├── ◻ canvas | | └── ◻ fishbowl | + | │ └ src: painting.png | | ├─ ◻ bassfish | + | │ | | └─ ◻ tuna | + | ├── ◻ aquariumcube | | | + | │ └ src: ://rescue.com/fish.gltf#q=bassfish%20tuna | +---------------------------+ + | │ | + | ├── ◻ bedroom | + | │ └ src: #q=canvas | + | │ | + | └── ◻ livingroom | + | └ src: #q=canvas | + | | + +------------------------------------------------------------+ + + An XR Fragment-compatible browser viewing this scene, lazy-loads and + projects painting.png onto the (plane) object called canvas (which is + copy-instanced in the bed and livingroom). Also, after lazy-loading + rescue.com/aquarium.gltf, only the queried objects bassfish and tuna + will be instanced inside aquariumcube. Resizing will be happen + accordingly to its placeholder object (aquariumcube), see chapter + Scaling. + +6. Embedding text + +7. List of XR URI Fragments + +8. Security Considerations + + TODO Security + +9. IANA Considerations + + This document has no IANA actions. + +10. Acknowledgments + + TODO acknowledge. + + + + + + + + + + +van Kammen Expires 3 March 2024 [Page 4] diff --git a/doc/RFC_XR_Fragments.xml b/doc/RFC_XR_Fragments.xml new file mode 100644 index 0000000..21b6f3a --- /dev/null +++ b/doc/RFC_XR_Fragments.xml @@ -0,0 +1,115 @@ + + + + + +XR Fragments +
+
+Internet +Internet Engineering Task Force + + +This draft offers a specification for 4D URLs & navigation, to link 3D scenes and text together with- or without a network-connection. +The specification promotes spatial addressibility, sharing, navigation, query-ing and interactive text across for (XR) Browsers. +XR Fragments allows us to enrich existing dataformats, by recursive use of existing technologies like URI Fragments & visual-meta. + + +
+ + + +
Introduction +How can we add more features to existing text & 3D scenes, without introducing new dataformats? +Historically, there's many attempts to create the ultimate markuplanguage or 3D fileformat. +However, thru the lens of authorina,g their lowest common denominator is still: plain text. +XR Fragments allows us to enrich existing dataformats, by recursive use of existing technologies: + +
    +
  • addressibility & navigation of 3D objects: URI Fragments + (src/href) metadata
  • +
  • addressibility & navigation of text objects: visual-meta
  • +
+
+ +
Conventions and Definitions + +
    +
  • scene: a (local/remote) 3D scene or 3D file (index.gltf e.g.)
  • +
  • 3D object: an object inside a scene characterized by vertex-, face- and customproperty data.
  • +
  • metadata: custom properties defined in 3D Scene or Object(nodes)
  • +
  • XR fragment: URI Fragment with spatial hints (#pos=0,0,0&t=1,100 e.g.)
  • +
  • src: a (HTML-piggybacked) metadata-attribute of a 3D object which instances content
  • +
  • href: a (HTML-piggybacked) metadata-attribute of a 3D object which links to content
  • +
  • query: an URI Fragment-operator which queries object(s) from a scene (#q=cube)
  • +
+{::boilerplate bcp14-tagged} +
+ +
Navigating 3D +Here's an ascii representation of a 3D scene-graph which contains 3D objects () and their metadata: + + index.gltf + │ + ├── ◻ buttonA + │ └ href: #pos=1,0,1&t=100,200 + │ + └── ◻ buttonB + └ href: other.fbx + + +An XR Fragment-compatible browser viewing this scene, allows the end-user to interact with the buttonA and buttonB. +In case of buttonA the end-user will be teleported to another location and time in the current loaded scene, but buttonB will + replace the current scene with a new one (other.fbx). +
+ +
Navigating text +TODO +
+ +
Embedding 3D content +Here's an ascii representation of a 3D scene-graph with 3D objects () which embeds remote & local 3D objects () (without) using queries: + + +------------------------------------------------------------+ +---------------------------+ + | | | | + | index.gltf | | rescue.com/aquarium.gltf | + | │ | | │ | + | ├── ◻ canvas | | └── ◻ fishbowl | + | │ └ src: painting.png | | ├─ ◻ bassfish | + | │ | | └─ ◻ tuna | + | ├── ◻ aquariumcube | | | + | │ └ src: ://rescue.com/fish.gltf#q=bassfish%20tuna | +---------------------------+ + | │ | + | ├── ◻ bedroom | + | │ └ src: #q=canvas | + | │ | + | └── ◻ livingroom | + | └ src: #q=canvas | + | | + +------------------------------------------------------------+ + +An XR Fragment-compatible browser viewing this scene, lazy-loads and projects painting.png onto the (plane) object called canvas (which is copy-instanced in the bed and livingroom). +Also, after lazy-loading rescue.com/aquarium.gltf, only the queried objects bassfish and tuna will be instanced inside aquariumcube. +Resizing will be happen accordingly to its placeholder object (aquariumcube), see chapter Scaling. +
+ +
Embedding text +
+ +
List of XR URI Fragments +
+ +
Security Considerations +TODO Security +
+ +
IANA Considerations +This document has no IANA actions. +
+ +
Acknowledgments +TODO acknowledge. +
+ +
+ +
diff --git a/doc/generate.sh b/doc/generate.sh new file mode 100755 index 0000000..565c57c --- /dev/null +++ b/doc/generate.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -e + +mmark RFC_XR_Fragments.md > RFC_XR_Fragments.xml +xml2rfc --v3 RFC_XR_Fragments.xml # RFC_XR_Fragments.txt +mmark --html RFC.template.md | grep -vE '()' > RFC_XR_Fragments.html +#sed 's|visual-meta|visual-meta|g' -i RFC_XR_Fragments.html