IRC log of immersive-web on 2023-04-25

Timestamps are in UTC.

13:46:14 [RRSAgent]
RRSAgent has joined #immersive-web
13:46:18 [RRSAgent]
logging to https://www.w3.org/2023/04/25-immersive-web-irc
13:46:28 [CharlesL]
rrsagent, draft minutes
13:46:29 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html CharlesL
13:57:59 [CharlesL]
rrsagent, make logs public
14:51:15 [cabanier]
cabanier has joined #immersive-web
16:52:05 [atsushi]
atsushi has joined #immersive-web
16:58:18 [CharlesL]
CharlesL has joined #immersive-web
17:00:23 [atsushi]
zakim, clear agenda
17:00:23 [Zakim]
agenda cleared
17:00:28 [atsushi]
rrsagent, make log public
17:00:38 [atsushi]
rrsagent, publish minutes
17:00:39 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:00:53 [atsushi]
meeting: Immersive-web WG/CG face-to-face 2023/04 Day 2
17:00:56 [atsushi]
chair: Ada
17:01:07 [atsushi]
zakim, who is here
17:01:07 [Zakim]
atsushi, you need to end that query with '?'
17:01:11 [atsushi]
zakim, who is here?
17:01:11 [Zakim]
Present: Leonard, cabanier, CharlesL, bialpio, ada, etienne, yonet, atsushi, lajava, bkardell_, Manishearth_, Dylan_XR_Access, marcosc, lgombos, bajones, Nick-Niantic, Marisha,
17:01:15 [Zakim]
... Jared, kdashg, mkeblx, rigel, mjordan, felix_Meta_, vicki, Brandel, adarose, Yih, cwilso, jfernandez, Laszlo_Gombos, mats_lundgren, Dat_Chu, bialpio_
17:01:15 [Zakim]
On IRC I see CharlesL, atsushi, cabanier, RRSAgent, brycethomas, bkardell_, Leonard, dino7, jfernandez, general_j, sharonmary6, vianka, OverTime, sentinel1975, rzr, maxass99,
17:01:18 [Zakim]
... LawrenceKincheloe, Matthew, NicolaiIvanov, helixhexagon, fernansd, [old]freshgumbubbles, etropea73101, dietrich, Chrysippus, SergeyRubanov, bemfmmhhj, babage, KevinBush, Zakim,
17:01:18 [Zakim]
... Manishearth, mounir, ada, sangwhan, iank_, scheib, hyojin, cwilso
17:01:31 [atsushi]
zakim, bye
17:01:31 [Zakim]
leaving. As of this point the attendees have been Leonard, cabanier, CharlesL, bialpio, ada, etienne, yonet, atsushi, lajava, bkardell_, Manishearth_, Dylan_XR_Access, marcosc,
17:01:31 [Zakim]
Zakim has left #immersive-web
17:01:34 [Zakim]
... lgombos, bajones, Nick-Niantic, Marisha, Jared, kdashg, mkeblx, rigel, mjordan, felix_Meta_, vicki, Brandel, adarose, Yih, cwilso, jfernandez, Laszlo_Gombos, mats_lundgren,
17:01:34 [Zakim]
... Dat_Chu, bialpio_
17:01:44 [Zakim]
Zakim has joined #immersive-web
17:01:44 [atsushi]
zakim, who is here?
17:01:44 [Zakim]
Present: (no one)
17:01:45 [Zakim]
On IRC I see CharlesL, atsushi, cabanier, RRSAgent, brycethomas, bkardell_, Leonard, dino7, jfernandez, general_j, sharonmary6, vianka, OverTime, sentinel1975, rzr, maxass99,
17:01:45 [Zakim]
... LawrenceKincheloe, Matthew, NicolaiIvanov, helixhexagon, fernansd, [old]freshgumbubbles, etropea73101, dietrich, Chrysippus, SergeyRubanov, bemfmmhhj, babage, KevinBush,
17:01:45 [Zakim]
... Manishearth, mounir, ada, sangwhan, iank_, scheib, hyojin, cwilso
17:01:53 [atsushi]
rrsagent, publish minutes
17:01:55 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:02:02 [atsushi]
agenda: https://github.com/immersive-web/administrivia/blob/main/F2F-April-2023/schedule.md
17:02:15 [atsushi]
previous meeting: https://www.w3.org/2023/04/24-immersive-web-minutes.html
17:02:20 [atsushi]
day 1 minutes -> https://www.w3.org/2023/04/25-immersive-web-minutes.html
17:02:23 [atsushi]
rrsagent, publish minutes
17:02:24 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:02:39 [cabanier]
present+
17:03:41 [bajones]
bajones has joined #Immersive-Web
17:07:17 [yonet]
yonet has joined #immersive-web
17:07:18 [Dat_Chu]
Dat_Chu has joined #immersive-web
17:07:24 [CharlesL]
present+
17:07:28 [Dat_Chu]
present+
17:07:30 [bajones]
Present+
17:07:32 [Marisha]
Marisha has joined #immersive-web
17:07:34 [Marisha]
present+
17:07:36 [etienne]
etienne has joined #immersive-web
17:07:44 [marcosc]
marcosc has joined #immersive-web
17:07:49 [atsushi]
s|2023/04/25-immersive|2023/04/24-immersive|
17:07:51 [atsushi]
rrsagent, publish minutes
17:07:53 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:07:59 [etienne]
present+
17:07:59 [adarose]
adarose has joined #immersive-web
17:08:00 [atsushi]
zakim, who is here?
17:08:00 [Zakim]
Present: cabanier, CharlesL, Dat_Chu, bajones, Marisha, etienne
17:08:01 [adarose]
present+
17:08:01 [Brandel]
Brandel has joined #immersive-web
17:08:02 [Zakim]
On IRC I see adarose, marcosc, etienne, Marisha, Dat_Chu, yonet, bajones, Zakim, CharlesL, atsushi, cabanier, RRSAgent, brycethomas, bkardell_, Leonard, dino7, jfernandez,
17:08:02 [Zakim]
... general_j, sharonmary6, vianka, OverTime, sentinel1975, rzr, maxass99, LawrenceKincheloe, Matthew, NicolaiIvanov, helixhexagon, fernansd, [old]freshgumbubbles, etropea73101,
17:08:06 [Zakim]
... dietrich, Chrysippus, SergeyRubanov, bemfmmhhj, babage, KevinBush, Manishearth, mounir, ada, sangwhan, iank_, scheib, hyojin, cwilso
17:08:15 [bialpio]
bialpio has joined #immersive-web
17:08:16 [mkeblx]
mkeblx has joined #immersive-web
17:08:23 [Brandel]
present+
17:08:29 [Marisha]
scribe: Marisha
17:08:30 [alcooper]
alcooper has joined #immersive-web
17:08:45 [atsushi]
s|2023/04/25-immersive|2023/04/24-immersive|
17:08:48 [atsushi]
rrsagent, publish minutes
17:08:49 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:08:56 [bialpio]
present+
17:08:57 [cabanier]
new spec: https://immersive-web.github.io/real-world-meshing/mesh-detection.html
17:09:04 [Marisha]
TOPIC: Add support for 3D geometry
17:09:08 [atsushi]
agenda+ real-world-geometry#38 Add support for 3D geometry
17:09:13 [Marisha]
cabanier: I made a spec in the new repo
17:09:18 [atsushi]
agenda+ Proposals - Some sort of local shared space
17:09:31 [atsushi]
agenda+ proposals#84 Immersive Capable/WebXR meta tag
17:09:40 [Marisha]
... We don't support meshes like the hololens does but you can create shapes that come back as 3D geometry in your room
17:09:47 [atsushi]
agenda+ webxr#1264 Proposal: lower friction to enter WebXR sessions
17:10:02 [atsushi]
agenda+ webxr#1317 Some WebXR Implementations pause the 2D browser page in XR, make this optional?
17:10:08 [mkeblx]
present+
17:10:08 [Marisha]
... with the 2D planes API there's no practical way to return them but we want to be able to and return these objects
17:10:14 [Marisha]
... They are not fine meshes, they are outlines
17:10:22 [atsushi]
agenda+ navigation#13 Let's have a chat about Navigation at the facetoface
17:10:24 [atsushi]
agenda+ Unconference
17:10:28 [Marisha]
... Should there be an attribute on the mesh itself that can do basic hit testing or object detection?
17:10:34 [adarose]
q?
17:10:42 [Marisha]
... I'm not sure if the hololens supports multiple meshes or a single mesh
17:10:42 [bajones]
q+
17:10:50 [atsushi]
present+
17:10:52 [Marisha]
... The API right now has separate meshes, a table, a chair, a room
17:10:53 [atsushi]
rrsagent, publish minutes
17:10:54 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:11:00 [bialpio]
q+
17:11:00 [Marisha]
... But I'm not sure if the hololens segments the meshes
17:11:08 [Nick-Niantic]
Nick-Niantic has joined #immersive-web
17:11:11 [Marisha]
... On magic leap it just returned the whole thing
17:11:14 [adarose]
ack bajones
17:11:22 [Marisha]
bajones: A couple of observations looking through the spec
17:11:52 [Marisha]
... First, re Hololens: what I recall is that they would have submeshes not associated with any particular object
17:11:58 [evias]
evias has joined #immersive-web
17:12:00 [Marisha]
... And then the submeshes would update over time
17:12:20 [Marisha]
... So that'd be one of my first concerns, I can see on the XR Mesh you've defined that there's a last change time
17:12:42 [Marisha]
... I would want something where it could go through and indicate 'these are the meshes that have changed since last time' so I'm not scanning through every mesh every time
17:12:56 [Nick-Niantic]
q+
17:13:03 [Marisha]
... that would require me to keep a list of all meshes that I've seen before and compare against the list every single frame
17:13:07 [adarose]
q+ to ask about the can be used for occlusion property changing as meshes refine
17:13:09 [Marisha]
... would be cool to refine down to an event
17:13:18 [Marisha]
... I also recall that meshes on the Hololens had a unique ID to help with that process
17:13:37 [Marisha]
... And the last point of feedback is that vertices are a frozen array of dom point-read only
17:13:52 [Marisha]
... I would suggest that there's very little point to this, we probably want that to be a float32 array
17:14:25 [Marisha]
... since I want to put them into float32 anyway, it would make javascript easier but at this point the 3D world involves pushing things into buffers so much that it wouldn't be a problem
17:14:37 [Marisha]
... Since we're dealing with potentially large array
17:14:45 [Marisha]
cabanier: Some of your feedback also applies to planes
17:15:03 [Marisha]
... For planes I could do one thing and meshes I would have to do something else
17:15:14 [alcooper]
q?
17:15:17 [Marisha]
bajones: I expect there to be more meshes than planes in the environment, especially in the Hololens
17:15:29 [Marisha]
... the Meta approach right now seems a bit different
17:15:56 [Marisha]
... If you want it to refine further like to Magic Leap or Hololens (which seems reasonable) then I would expect a high volume of meshes and changes to be coming through
17:15:58 [Marisha]
... more than planes
17:16:12 [Marisha]
... But I'm not opposed to making those approaches more unified
17:16:23 [adarose]
ack bialpio
17:16:39 [Marisha]
bialpio: To respond to some of Brandon's comments, we're thinking about ID for planes as well
17:16:46 [Marisha]
... but the conclusion was that since planes are live objects, we're just updating for you
17:16:55 [Marisha]
... if you want to assign some kind of ID, you can
17:16:59 [Marisha]
... but it's not a best practice
17:17:07 [Marisha]
... but you can use Javascript equality operator to compare things
17:17:21 [Marisha]
... it puts the responsibility on you to hold on to the objects from the last callback to compare against
17:17:29 [Marisha]
... to evaluate meshes that are new or are removed
17:17:45 [Marisha]
... They will be able to emulate the event based approach
17:18:02 [Marisha]
... If we do want to have an event-based API, do we want to have it in a context where we can issue GL calls?
17:18:16 [Marisha]
... if not, we shoudl stick to the approach of letting the developers emulate the event-based approach
17:18:31 [Marisha]
... The other point was for planes, we expect lower amount of data, we just give the outline of the plane
17:18:59 [Marisha]
... Can we make sure this design works with whatever Hololens is doing?
17:19:09 [Marisha]
... their data is likely to be wavier than a user annotating their environment
17:19:17 [Marisha]
... especially with Hololens having a dynamic environment
17:19:28 [Marisha]
... In other versions of the Mesh API we were concerned with that
17:19:40 [Marisha]
... Just want to do the right thing here so we won't need a diffrent API to support Hololens
17:19:54 [Marisha]
cabanier: So you think the spec should say the user agent should simplify the mesh?
17:20:14 [Marisha]
bialpio: If Hololens wants to use it without having to simplify the mesh, they just won't use it
17:20:45 [Marisha]
... If there is a device that wants to implement this API but also has concerns similar to Hololens, we don't want to have to scratch this API and invent a new one that would support the future
17:20:50 [Marisha]
cabanier: What would that API look like?
17:20:56 [Marisha]
bialpio: That's the question
17:21:14 [Marisha]
... We have this design from Magic Leap I don't remember what was on it
17:21:26 [Marisha]
cabanier: There was a fan mesh that was changed while walking
17:21:37 [Marisha]
bialpio: I remember a lot of conversation about how to do the updates efficiently
17:21:47 [Marisha]
... Do we have anyone from Microsoft in the room?
17:21:58 [adarose]
q?
17:22:06 [Marisha]
cabanier: Things would also go away and come back, which is different from now
17:22:17 [Marisha]
bialpio: I'm not saying this API won't work for them, I just don't know if it will
17:22:38 [Marisha]
bajones: I assume that as long as we can be assured that the process of advertising new meshes, updated, and removed meshes, can be detected and responded to,
17:22:44 [Marisha]
... the actual content of this doesn't seem like it's that bad
17:22:55 [Marisha]
... the thing you want to avoid is putting the users in a position where they can't tell if things have changed
17:23:00 [Marisha]
... so they just upload every buffer every frame
17:23:10 [Marisha]
... I do think the float32 array would be a requirement here
17:23:18 [Marisha]
... the most flexible way to shove things off to the GPU
17:23:34 [Marisha]
... We don't know if the user wants to send this to a physics engine or something but they take float arrays too
17:23:50 [Marisha]
bialpio: The basic thing is that Hololens submeshing, they can just model it as a distinct XR mesh
17:23:56 [Marisha]
bajones: and that's how the Hololens already does things
17:24:03 [Marisha]
bialpio: If you don't have any concerns...
17:24:18 [Marisha]
bajones: I will look through their documentation and make sure I remember correctly but yes
17:24:29 [Marisha]
... I think your argument for why we don't need the same integer index is compelling
17:24:35 [Marisha]
... You can do comparison or set your own as you want it
17:24:44 [Marisha]
... as long as we are returning the same XR Mesh javascript wrapper every frame
17:24:53 [Marisha]
... that probably takes care of itself
17:24:57 [Marisha]
... removal might be the trickiest
17:25:05 [Marisha]
bialpio: You will see something that is stale and not in the new XR frame
17:25:14 [Marisha]
... it is bookkeeping that the app needs to do
17:25:27 [Marisha]
... Maybe then one more question: Do we intend to attach a semantic label to it ever?
17:25:28 [Marisha]
cabanier: yes
17:25:38 [Marisha]
bialpio: that might throw a wrench into Hololens design
17:25:54 [Marisha]
bajones: The only question I would have about semantic bits is do we expect any devices to reasonably support them?
17:25:56 [yonet]
q+
17:25:59 [Marisha]
cabanier: Not yet but in the future yes
17:26:17 [Marisha]
bajones: On Hololens where they generate a mesh but has no semantic meaning, it just comes through as unknown empty string
17:26:20 [yonet]
There are semantic labels for the mesh on HoloLens.
17:26:25 [adarose]
ack Nick-Niantic
17:26:37 [Marisha]
Nick-Niantic: I want to share our API for this
17:26:41 [Yih]
Yih has joined #immersive-web
17:26:44 [Yih]
present+
17:26:51 [Marisha]
... (displaying screen) This is from our developer documentation
17:27:03 [cabanier]
q+
17:27:04 [Marisha]
... It explains what we give today for meshes when you use our web-based systems
17:27:26 [Marisha]
... basically we have meshfound events, and the meshfound event has an ID, has a transform of hte mesh, and geometry index array and attributes
17:27:34 [Marisha]
... the attributes have a float32 position array, float32 color array
17:27:38 [Marisha]
... This is what we give people
17:27:46 [Marisha]
bajones: What do you use the color for and where does it come from?
17:27:59 [Marisha]
Nick-Niantic: These meshes come from previous scans either from developer or community
17:28:09 [Marisha]
bajones: How high res are they?
17:28:16 [Marisha]
Nick-Niantic: Whatever the resolution of the mesh is - relatively coarse
17:28:29 [Marisha]
... Color is useful for visualizing the mesh in the space, it's not high fidelity
17:28:45 [Marisha]
... I don't know that it's required but it is what we give today
17:29:06 [Marisha]
... Our meshupdates have anchor, position, rotation to account for drift
17:29:14 [Marisha]
... you can update the position of a mesh
17:29:31 [Marisha]
... I'm not sure how Oculus handle drift within a session but it might be useful to tweak location
17:29:41 [Marisha]
... Event for no longer tracking a mesh as well
17:29:47 [adarose]
q-
17:30:06 [Marisha]
... typically we don't have semantic labels, but we can give per-vertex semantic labels within a mesh
17:30:18 [Marisha]
... our preferred method of semantic labels is through a dense mask of the image
17:30:22 [Marisha]
... since you can test any portion of the image
17:30:57 [Marisha]
... I'm not sure where I stand for usefulness of labeling vertices with semantic info, but if we wanted to, having granularity on the submesh level would be valuable for us to remain compatible with WebXR APIs
17:31:21 [yonet]
q-
17:31:23 [Marisha]
... It's better to have callbacks for these things than provide every frame
17:31:29 [adarose]
ack yonet
17:31:45 [Marisha]
yonet: There's more than one way to mesh on Hololens, and semantic labels are part of it like for windows or ceilings
17:31:55 [bajones]
q+
17:32:00 [Marisha]
... Portions of a mesh are labeled, it has to be a closed mesh
17:32:13 [Marisha]
Nick-Niantic: One way to do semantic labels is a map from vertices to semantic label
17:32:25 [Marisha]
cabanier: So every mesh would have an array of submeshes
17:32:25 [adarose]
q?
17:32:33 [Marisha]
Nick-Niantic: That just came to mind just now
17:32:40 [Marisha]
... Not sure how it would work with multiple disconnected meshes
17:32:56 [Marisha]
cabanier: Accounting for drift, a mesh has an anchor associated with it, so it won't drift
17:33:01 [adarose]
ack cabanier
17:33:03 [Marisha]
Nick-Niantic: Okay so it's being kept consistent internally
17:33:17 [Marisha]
cabanier: I asked if it should return a fine mesh or not?
17:33:28 [Marisha]
adarose: It seems like a fine idea, but it would have to change over time as it gets updated
17:33:39 [Marisha]
cabanier: Hololens could use it for occlusion
17:33:46 [Marisha]
Nick-Niantic: Maybe could be an optional feature
17:34:00 [Marisha]
... Could use meshes for things like physics
17:34:14 [Marisha]
... even occlusion may be improved with a coarse mesh even though fine is better for that
17:34:18 [dino7]
dino7 has joined #immersive-web
17:34:28 [Marisha]
... if the user requests a mesh quality level, then you don't have to give it to them
17:34:35 [Marisha]
cabanier: We don't have to stop them but could inform them
17:34:43 [Brandel_]
Brandel_ has joined #immersive-web
17:34:44 [adarose]
ack bajones
17:34:50 [Brandel_]
q+
17:35:12 [Marisha]
bajones: Nick, in your system you have an update event for the anchor moving around. How do you handle actual updates to the mesh itself?
17:35:22 [Marisha]
Nick-Niantic: Currently our meshes are based on pregenerated user scans so they don't update
17:35:35 [Marisha]
... I pushed the team to allow update API but they didn't add it
17:36:22 [Marisha]
bajones: I do wonder, looking through Microsoft mapping, they have two systems now for doing this,
17:36:36 [Marisha]
... They have a breakdown between spatial mapipng and scene understanding APIs
17:36:43 [Yih]
Yih has joined #immersive-web
17:36:47 [Marisha]
... the scene understanding SDK is that it gives back static versions of spatial mapping data
17:37:02 [Marisha]
... Is there value to call out whether a particular mesh will be static or not
17:37:15 [Marisha]
... There is some certainty about whether it would be static or dynamic
17:37:21 [Marisha]
... Metadata would be considered mostly static
17:37:36 [Marisha]
cabanier: People can run room setup while in XR session so mesh could disappear
17:37:41 [adarose]
q?
17:38:00 [Marisha]
bajones: You could say meshes have been removed and put in, while still static
17:38:05 [adarose]
ack Brandel_
17:38:18 [Marisha]
Brandel_: That makes sense, especially as different purposes and functions for meshes arise
17:38:34 [Marisha]
... I don't love the terms fine and coarse because over time, 640x480 was once high-res
17:38:42 [Marisha]
... Would suggest more explicit terms for the function of the data
17:39:03 [Marisha]
... Otherwise we have to get into doublefine and ultrafine, where are fun but not good names
17:39:10 [Marisha]
bajones: It's hard to prescribe a particular use for a mesh
17:39:24 [Marisha]
... For example it might be useful for physics, but it might just be a box
17:39:40 [rigel]
rigel has joined #immersive-web
17:39:49 [Marisha]
... Tabletop and refrigerator would be good for occlusion but not a statue
17:39:55 [Marisha]
... Fine and coarse doesn't seem like the right distinction
17:40:02 [Marisha]
... marking as something for occlusion doesn't seem right either
17:40:30 [Marisha]
Nick-Niantic: The thing that makes sense to me is that you are trying to give an indication of 'dont' spend too much work to get this data to me' vs 'spend extra work to make this data better'
17:40:38 [Marisha]
... You're looking at a performance tradeoff
17:40:55 [Marisha]
... they don't care about how fine is too fine, vs spending work on the data
17:41:07 [Marisha]
... I don't know if that applies to Oculus since users are defining the meshes
17:41:15 [Marisha]
... someone could draw their mesh very carefully for a fine mesh
17:41:26 [Marisha]
cabanier: I could leave the spec as is
17:41:40 [Marisha]
... if it becomes an issue in the future we could modify it
17:41:52 [Marisha]
adarose: Maybe a "could be better" designation
17:41:57 [bialpio]
q+
17:42:04 [Marisha]
bajones: Are there going to be systems where you can meaningfully turn that dial?
17:42:11 [Marisha]
... where the user can be as detailed as they want
17:42:27 [adarose]
ack bialpio
17:42:29 [Marisha]
... if someone is scanning, they can specify the resolution?
17:42:34 [Marisha]
Nick-Niantic: There are different resolutions
17:42:52 [Marisha]
bialpio: Does it matter from the perspective of the app?
17:43:08 [Marisha]
... if all the meshes are static, I could use a different version of the code, but if things are going to change, it doesn't matter whether one thing is changing or all of them
17:43:14 [Marisha]
... Does that help us with design here?
17:43:40 [Marisha]
... It sounds like most of our current devices for this API would be handing out static data
17:43:53 [Marisha]
... don't know about Microsoft looking into this implementation, maybe it doesn't matter
17:44:11 [Marisha]
cabanier: With the example of planes, static on device, it would break on Android
17:44:30 [Marisha]
bialpio: but I can't assume that this data won't change, I have to handle it in my code
17:44:47 [Marisha]
... The assumption that things won't change doesnt' come from us, it comes from experience
17:44:56 [Marisha]
cabanier: Sounds like we should not have a static
17:45:08 [Marisha]
bajones: I can't think of a specific thing that would drastically change
17:45:20 [Marisha]
... You can tell a GPU whether it's going to be a static or dynamic mesh
17:45:30 [Marisha]
... but it's not going to matter if you're not updating the same buffer
17:45:37 [Marisha]
... unless you can assume that indices are never going to change
17:45:49 [Marisha]
bialpio: for Planes we do guarantee that positions can change without touching vertices
17:46:15 [Marisha]
... we say that change of position will not affect last-update time since pose is a property of a pair of things and not the thing
17:46:26 [Marisha]
bajones: I would expect the same to be here
17:46:47 [Marisha]
... for data that you're shoving off to the GPU, if there were a dynamic mesh, you couldn't guarantee the same number of vertices every time
17:46:54 [Marisha]
... so you're going through the same process as a brand new mesh
17:47:00 [Marisha]
... same for the physics systems
17:47:15 [Marisha]
... In that case, it's a good observation that there's not too much difference in how the user will handle that.
17:47:18 [adarose]
q?
17:47:55 [Marisha]
bajones: Dom Float array, you want to make sure we indicate the meshes are going to be the same object frame to frame if they represent the same data
17:47:58 [Marisha]
cabanier: that's already in there
17:48:13 [Marisha]
bialpio: We don't have a way to annotate it in IDL since we have sets, we cannot say if you have the same object
17:48:23 [atsushi]
s|day 1 minutes -> https://www.w3.org/2023/04/25-immersive-web-minutes.html|day 1 minutes -> https://www.w3.org/2023/04/24-immersive-web-minutes.html
17:48:27 [atsushi]
zakim, take up agendum 2
17:48:27 [Zakim]
agendum 2 -- Proposals - Some sort of local shared space -- taken up [from atsushi]
17:48:30 [yonet]
agenda:https://github.com/immersive-web/proposals/issues/82
17:48:32 [atsushi]
rrsagent, publish minutes
17:48:33 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:48:39 [Marisha]
TOPIC: Proposals - Some sort of local shared space
17:48:44 [Marisha]
scribe: Marisha
17:48:53 [atsushi]
s/agenda:https/issue -> /
17:48:55 [atsushi]
rrsagent, publish minutes
17:48:56 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
17:49:33 [Marisha]
adarose: We talked about shared anchors for a long time, but persistent and shared anchors were a future thing
17:49:33 [Marisha]
... It would be good to do some work to do a shared space, a lot of people would like it
17:49:34 [Marisha]
... How would we do this? I think there's different options
17:50:02 [bialpio]
q+
17:50:07 [Marisha]
... We could build an example where you print out a piece of paper with three numbers, use that to generate an offset reference space that both people agree on, and just have that as an example that people can do
17:50:16 [yonet]
Thanks atsushi
17:50:16 [Marisha]
... That would be a way to get people started with doing this kind of thing
17:50:23 [atsushi]
s/issue -> /issue -> https/
17:50:28 [Marisha]
... but it might be nice to standardize something for creating a shared reference space
17:50:55 [Marisha]
... Could have it so that the same space could be maintained for future sessions
17:51:05 [Marisha]
... like going from one domain to another without having to reset the space
17:51:17 [bajones]
q+
17:51:25 [Marisha]
... People would like it and it's not necessarily worth waiting for shared anchors
17:51:27 [cabanier]
q+
17:51:27 [adarose]
ack bialpio
17:51:44 [Marisha]
bialpio: If we are okay with requiring that the users are coordinating, hit testing on the same thing would be the easiest way
17:51:54 [Marisha]
... would have to maintain the same orientation..
17:52:00 [Marisha]
adarose: Yes would align on three points
17:52:19 [Marisha]
bialpio: Image tracking is something we don't have an API for but it becomes easier if it only needs to work for a few frames initially
17:52:26 [Marisha]
... based on camera access experiment
17:52:37 [Marisha]
... might not be performant enough to do the entire session
17:53:00 [Marisha]
... could establish space, create an anchor, then assume that users have the anchor in the correct space
17:53:16 [Marisha]
... is there any other API that we could leverage? Planes on ARCore wouldn't work since they're not static
17:53:28 [Marisha]
... Depth sensing might give you some information you could correlate but that'd be difficult
17:53:33 [adarose]
q?
17:53:38 [adarose]
ack bajones
17:53:51 [Marisha]
bajones: Agree with Piotr,
17:54:02 [Marisha]
... if you want to approach this with guidelines of how to set this up with existing mechanisms,
17:54:13 [Marisha]
... we already have examples like "observer mode"
17:54:39 [Marisha]
... you could do the same thing here. This would make a spectacular demo to have people standing around with their Android phones, and people with a Quest Pro, and they're all seeing the same thing in the same space
17:54:52 [bialpio]
q+
17:54:53 [Marisha]
... This would be the coolest way to show off why the web matters in this space
17:55:03 [Marisha]
... Would be worthwhile, I want to see this on Twitter
17:55:16 [Marisha]
... My biggest worry is that it'd be a bit flaky
17:55:45 [Marisha]
... In terms of what you say about going between sites, at last TPAC we talked about per-device caching or saving anchors. Is that something you've implemented?
17:55:51 [Marisha]
cabanier: Yes it's shipped, but it only works per origin
17:56:05 [Marisha]
adarose: It's something we'd have to do as a user agent
17:56:21 [Marisha]
... it'd be a user agent guide or wizard which would then give you the session
17:56:39 [Marisha]
bajones: That would be the mechanism, if each device can retain its sense of where the shared marker is
17:56:47 [Marisha]
... It would take some coordination between the sites
17:57:00 [Marisha]
... This would be one of the most compelling demos I can think of for XR on the web
17:57:04 [Marisha]
... especially between mobiles and headsets
17:57:17 [Marisha]
... I want to help organize and coordinate that if it could realistically happen
17:57:26 [adarose]
q?
17:57:29 [Marisha]
adarose: Would be good for "help wanted" post
17:57:29 [adarose]
ack cabanier
17:57:46 [Marisha]
cabanier: From our perspective there are a lot of people who have multiple devices at home, we are focusing more on mixed reality and social mixed reality
17:57:50 [Marisha]
... so we are interested in exploring this area
17:57:56 [Marisha]
... if we can do it with a polyfill that'd be awesome
17:58:05 [Marisha]
... our systems do support shared anchors but they are a pain to set up
17:58:14 [Marisha]
bajones: We're not even talking about shared anchors at this point
17:58:21 [Marisha]
cabanier: more like a shared coordinate space
17:58:47 [Marisha]
bajones: If I print out a big A B and C in the corners, and you have an app where you point at A, B, and C, and generates three anchors, triangulates them
17:59:05 [Marisha]
... If I can do that on Quest Pro, then on ARCore, they can presumably both start sharing their approximation of the same space
17:59:10 [Marisha]
... but it wouldn't require anything new
17:59:17 [Marisha]
cabanier: If you want to skip even that step...
17:59:25 [Marisha]
bajones: That would be awesome but is a much harder technical problem
17:59:50 [Marisha]
adarose: even some sort of shared function?
17:59:57 [Marisha]
bajones: might not be consistent enough
18:00:15 [Marisha]
cabanier: The thing could take three hit tests
18:00:40 [Marisha]
adarose: If there are two different sites but they have a flipped orientation... would be good to have a function on the session that generates space from three points
18:00:51 [Marisha]
... it's not trivial
18:01:02 [Marisha]
... doing it with anchors and it is updating, this space will probably change over time
18:01:14 [Brandel]
Brandel has joined #immersive-web
18:01:14 [Marisha]
... If it's something that takes care of tracking those anchors and making the space for you
18:01:20 [Marisha]
... but we probably need to show the value of it
18:01:21 [adarose]
q?
18:01:23 [adarose]
ack bialpio
18:01:43 [Marisha]
bialpio: I want to also mention cross-origin persistent anchors... they will have to be browser-coordinated, user would have to agree to it,
18:02:12 [Marisha]
... one idea of how we do this is to use the origin of a local space, localize it in a consistent manner when the user agrees to use that information
18:02:21 [Brandel]
q+
18:02:23 [Marisha]
... might be the simplest thing to do to maintain that space across multiple sessions
18:02:31 [Marisha]
... Not sure if that would work for ARCore
18:02:34 [cabanier]
q+
18:02:47 [Marisha]
... Might need to have some manner of conveying the information to the experience that the space is stable
18:03:09 [Marisha]
... with the example of some games, the site can assume the space is consistent for a user, but the challenge is how do they coordinate with each other?
18:03:19 [Marisha]
adarose: Maybe some kind of menu option to "resync space"
18:03:29 [Marisha]
... if you sit down with another person, could both resync space
18:03:34 [adarose]
q?
18:03:37 [adarose]
ack Brandel
18:03:58 [Marisha]
Brandel: Presumably all the devices we're talking about have magnetometers, compasses and IMUs that can detect gravity..
18:04:01 [Marisha]
cabanier: I don't think we do
18:04:32 [Marisha]
Brandel: Everyone agrees on gravity, it's pretty stable
18:04:51 [Marisha]
... if magnetometers were more reliable across devices, you could use that for helping anchor spaces
18:05:08 [Marisha]
cabanier: If you know the gravity, how does that help?
18:05:18 [Marisha]
Brandel: You know which way is up, and then you'd know which direction people were in
18:05:27 [Marisha]
cabanier: For refinement, I see
18:05:43 [mkeblx]
q+
18:05:50 [Marisha]
Brandel: If you have three points, someone could be looking from underneath. But if you have gravity and people are looking down, that's unambiguous
18:06:03 [Marisha]
adarose: ABC helps too with the right-hand rule
18:06:06 [adarose]
q?
18:06:27 [Marisha]
cabanier: I'm not sure if you can use the local space and just transfer the local space
18:06:46 [Marisha]
... We could have a different space, something you can request, and if it's not there it is the local space
18:06:53 [Marisha]
bajones: You're allowed to not have local space be exactly where you start
18:07:03 [Marisha]
bialpio: I think experiences might assume you start at 0
18:07:23 [Marisha]
bajones: I remember stressing about this text when we wrote it because we didn't want local space to shift between pages or between refresh of the page
18:07:45 [Marisha]
... "A local space represents tracking space with the origin near the viewer at the time of creation"
18:07:52 [Marisha]
bialpio: Something the platforms can tweak but is close enough to you...
18:08:09 [Marisha]
bajones: If your'e doing it with Cardboard or devices where that's the mode you're working in, it probably just uses 0, 0, 0 every time
18:08:24 [Marisha]
... but for the Quest it doesn't matter whether the origin is here or slightly off here (gesturing)
18:08:24 [adarose]
q?
18:08:28 [adarose]
ack cabanier
18:08:31 [adarose]
ack mkeblx
18:08:56 [Marisha]
mkeblx: The three points on a plane, piece of paper, another idea is to start in the same orientation, start in the same chair
18:09:14 [bialpio]
q+
18:09:23 [Marisha]
bajones: I thought about the same thing, but the most likely use you're going to get for that, you're going to put a paper on a flat surface, it's hard to guarantee everyone is standing at the same space
18:09:31 [Marisha]
... They could all configure themselves at roughly the same time
18:09:42 [adarose]
ack bialpio
18:09:58 [Marisha]
bialpio: At least for ARCore, you probably need to ensure we are already in reliable tracking state
18:10:12 [Marisha]
... At session start there might be phone wave thing were you want the user to go through that first before they start walking around
18:10:26 [Marisha]
... I don't know how much relying on the same starting point would work there
18:10:37 [adarose]
q?
18:10:38 [Marisha]
... but if we are in a reliable tracking state and the user is going to be in the same place, maybe could work with that
18:11:12 [Marisha]
adarose: five minute break!
18:11:40 [Marisha]
adarose: Wait do people think we should make an API for this?
18:11:46 [Marisha]
bajones: Might be better first as a library
18:12:04 [Marisha]
... Do we have image tracking enabled on Android?
18:12:17 [Marisha]
bialpio: Behind a flag or raw camera access in a way I cannot comment on without knowledge
18:12:36 [Marisha]
bajones: That could just speed it up, I don't believe the Meta Quest Pro has any sort of image...
18:12:54 [Marisha]
... you could still do image recognition without saying the image you've registered has an anchor, without giving away the camera data
18:13:00 [vicki]
vicki has joined #immersive-web
18:13:27 [Marisha]
... Does Meta have image recognition?
18:13:33 [Marisha]
Marisha: I don't think so, at least not released
18:13:41 [Marisha]
rrsagent, generate minutes
18:13:43 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html Marisha
18:14:49 [atsushi]
atsushi has joined #immersive-web
18:17:12 [alcooper_]
alcooper_ has joined #immersive-web
18:20:14 [alcooper]
alcooper has joined #immersive-web
18:23:41 [vicki]
present+
18:26:10 [etienne]
etienne has joined #immersive-web
18:26:33 [mkeblx]
present+
18:26:34 [bialpio]
present+
18:26:34 [etienne]
present+
18:26:36 [Brandel]
Brandel has joined #immersive-web
18:26:38 [Nick-Niantic]
present+
18:26:41 [Brandel]
present+
18:26:42 [yonet]
present+
18:26:49 [bajones]
bajones has joined #Immersive-Web
18:26:51 [Dat_Chu]
present+
18:26:52 [Yih]
Yih has joined #immersive-web
18:26:58 [Yih]
present+
18:27:04 [adarose]
scribenick: Brandel
18:27:54 [atsushi]
zakim, take up agendum 3
18:27:54 [Zakim]
agendum 3 -- proposals#84 Immersive Capable/WebXR meta tag -- taken up [from atsushi]
18:28:10 [Brandel]
ada: One from me, but a continuation from Apr '22
18:28:38 [Brandel]
... It would be handy if there was a way to identify that this page is webXR-enable
18:29:10 [Brandel]
... indicating the features you want to support, conferring potential benefits like SEO for XR-prioritized search
18:29:10 [Nick-Niantic]
q+
18:29:44 [Brandel]
... and used for ambient badging in search results, or on a URL bar
18:30:12 [bkardell_]
is this on github?
18:30:32 [Brandel]
... so the UA could also invoke the XR session rather than having the user hunt around for the button to invoke
18:30:41 [bkardell_]
ah https://github.com/immersive-web/proposals/issues/84
18:30:49 [cabanier]
q+
18:31:06 [Brandel]
... and for archives and researchers, it would be possible to more easily identify pages that happen to have been XR in some kind of future past
18:31:07 [bajones]
q+
18:31:36 [Brandel]
... so this is a general query about the value and function of this - is it useful, where would you use it, where would it go? Int an HTTP header, a web manifest, where?
18:31:39 [adarose]
ack Nick-Niantic
18:31:59 [Brandel]
Nick-Niantic: I got caught on one of the first things you said - declaring ahead of time the required permissions for a page
18:32:14 [Brandel]
... The inability to 'pre-flight' permissions causes us grief
18:32:50 [Brandel]
... we want to build an HTML lobby that gets everyone ready re:permissions so that players can launch into experiences with all the prerequisite permissions
18:33:17 [Brandel]
... it's a shift from the initial remit of the discussion but important to us and related
18:33:49 [Brandel]
Nick-Niantic: what is meant by 'ambient badging'?
18:34:23 [Brandel]
Ada: Ambient badging is a property on things like PWAs, indicating the "appness" of a page, allowing UAs to invoke actions related to that
18:34:45 [adarose]
q?
18:35:04 [Brandel]
... so for an approach like that, you could have the browser take on that responsibility, but we have a separate session for that
18:35:27 [Brandel]
bkardell_: I am on the call! It is hard to hear
18:35:55 [adarose]
q?
18:36:03 [adarose]
ack cabanier
18:36:10 [Brandel]
ada: It was suggested that wolvic has ambient badging of XR capability that could allow these things to launch
18:36:17 [Brandel]
bkardell_: ..maybe?
18:36:43 [Brandel]
cabanier: I think the badging just guesses that an experience is XR-capable
18:37:01 [CharlesL]
q+
18:37:08 [Brandel]
bajones: I would imagine that most pages are searching for isSessionSupported, which is a good guess that the page intends to use it
18:37:42 [Brandel]
cabanier: showign the button has the drawback that it may not account for the loading of prerequisite assets - often pages need a lot of things to go into XR.
18:37:55 [Brandel]
s/showign/showing
18:38:15 [Brandel]
cabanier: the search engines would need to be updated to leverage this
18:38:32 [adarose]
q?
18:38:34 [Brandel]
... and people could abuse this, so that could be a problem
18:38:36 [adarose]
ack bajones
18:39:10 [bialpio]
q+
18:39:20 [Brandel]
bajones: We can't have nice things - anything that allows people to game SEO things, becomes effectively meaningless once adequately abused
18:39:25 [bkardell_]
q+
18:39:53 [Brandel]
... and if you're using this to put a badge in the URL bar etc, without a hard obligation to invoke the session, that can be weird
18:40:18 [Brandel]
... it seems like the page should need to a little more work in order to guarantee that this hinting is accurate
18:40:48 [Brandel]
... PWAs are a little different, because of the difference in context and function - the manifest a better guarantee of expected functionality
18:41:03 [Brandel]
... I'm not sure of the importance and needs of archiving
18:41:21 [Brandel]
... if you're not using JS to scan through web pages, as an archivist today, you're probably not doing it properly
18:41:58 [Brandel]
... that said, I don't _object_ to it - I just question whether it will do the thing it's intended for
18:42:00 [adarose]
q
18:42:01 [marcosc]
q+
18:42:07 [adarose]
ack CharlesL
18:42:27 [bkardell_]
q--
18:42:32 [bkardell_]
q-
18:42:35 [bkardell_]
q+
18:42:38 [Brandel]
CharlesL: Discoverability via a meta tag would help, and for future ePubs in the future
18:43:12 [adarose]
q?
18:43:16 [adarose]
ack bialpio
18:43:18 [Brandel]
... in which case, schema.org would probably want to be involved - it looks like "virtual location" is the only similarly-defined attribute today
18:43:49 [Brandel]
bialpio: we already have a schema proposal, whose status isn't known, that may include this information
18:44:20 [Brandel]
... model-viewer has some representation, but I don't know whether it has what we want - but it's likely a step in the right direction
18:44:24 [adarose]
q?
18:44:24 [bialpio]
https://schema.org/3DModel
18:44:28 [adarose]
ack marcosc
18:45:00 [Brandel]
marcosc: As someone close to the web manifest, it's useful to talk about the difference between "app" and "page", since an app can span pages
18:45:26 [adarose]
q?
18:45:30 [adarose]
ack bkardell_
18:45:32 [Brandel]
... And question if / how this is a new display mode. Within Apple we often use OG as a representation as well
18:46:02 [Brandel]
bkardell_: I am finding it hard to hear, so I'm not sure if marcosc and I are saying the same thing
18:46:29 [marcosc]
q+
18:46:54 [Brandel]
... I was going to ask - there is a radical range of things that can be done with XR, so is there a single attribute that is relevant to identify XR pages / apps with?
18:46:55 [adarose]
ack marcosc
18:47:23 [Brandel]
marcosc: checking API calls isn't a great proxy for actual, legitimate use because of the prevalence of fingerprinting
18:48:16 [Brandel]
... in the past, we've had things like that - simple boolean checks typically haven't changed the UI of systems, so we shouldn't do too much
18:48:35 [Brandel]
adarose: So in summary, it would. be useful but shouldn't change things in a way to alter the presentation
18:49:22 [Brandel]
marcosc: to reiterate bajones' point, the page ought to have to do work in order to make it a fair guarantee that this is legitimately a function of the page
18:49:22 [adarose]
q?
18:49:53 [Brandel]
adarose: Last issue before lunch, and then lunch!
18:50:48 [Brandel]
[technical setup to share]
18:50:59 [adarose]
https://lists.w3.org/Archives/Public/public-immersive-web/2023Apr/0006.html
18:51:32 [Brandel]
[anticipation builds]
18:52:55 [atsushi]
zakim, take up agendum 5
18:52:55 [Zakim]
agendum 5 -- webxr#1317 Some WebXR Implementations pause the 2D browser page in XR, make this optional? -- taken up [from atsushi]
18:52:55 [Brandel]
cabanier: This is about the 'offer session', similar to the 'request session'
18:53:07 [atsushi]
zakim, take up agendum 4
18:53:07 [Zakim]
agendum 4 -- webxr#1264 Proposal: lower friction to enter WebXR sessions -- taken up [from atsushi]
18:53:31 [Brandel]
...it's like request session, in that it allows for the inclusion of optional extras
18:53:52 [Brandel]
...the button appears in the URL bar. That's the whole demo!
18:54:05 [Brandel]
bajones: This was the best demo we've seen all day
18:54:12 [adarose]
q?
18:54:33 [Brandel]
cabanier: I haven't added to the spec via PR, but did have some questions. I have written them down.
18:54:43 [bajones]
q+
18:55:07 [Brandel]
... what happens when you call 'offerSession' multiple times? do we reject the promises of the earlier sessions?
18:55:29 [Brandel]
...similarly, what do we do about iFrames who pass in and out of existence?
18:55:38 [bkardell_]
is it necessary to support it in an iframe?
18:56:01 [adarose]
q+ to ask about abort signals
18:56:04 [Brandel]
... I think that there's only one offerSession in action at a time, and can't be revoked by the offerer
18:56:22 [Brandel]
... this might require user-education, since they could be tripped up without it
18:56:31 [adarose]
ack bajones
18:57:28 [Brandel]
bajones: multiple session calls should probably just override prior ones. Libraries might misbehave, but *shrugs*
18:58:05 [Brandel]
... we should have a sense that the `offerSession` establishes some pending promise on the page, and it should be able to go away with the page offering
18:58:25 [Nick-Niantic]
q+
18:58:30 [Brandel]
... I'm not sure that it's critical to be able to make a call to cancel the 'offer'
18:58:56 [bialpio]
q+
18:59:01 [Brandel]
... it seems like users might want to cancel the offer and dismiss the chip, but that should be non-normative and up to the UA
18:59:14 [Brandel]
... we wouldn't be the first, so that can be followed the same way
18:59:38 [marcosc]
q+
18:59:43 [Brandel]
bajones: 'the chip' refers to the button and surrounding information
18:59:55 [alcooper]
q+
19:00:15 [Brandel]
... a promise, rather than a callback or an event, seems like a better match with our 'requestSession' approach we take today
19:01:02 [Brandel]
... promises feel like the right primitive here - it does mean that sessions would need to be 're-offered' if it's accepted and then dropped out
19:01:48 [Brandel]
bajones: sessions would need to be re-offered after a session has ended
19:02:04 [Brandel]
bialpio: unless the UA has the 2D _and_ the XR session present
19:02:17 [Brandel]
marcosc: can we see the code again?
19:02:29 [vicki]
vicki has joined #immersive-web
19:02:38 [adarose]
ack adarose
19:02:38 [Zakim]
adarose, you wanted to ask about abort signals
19:02:43 [Brandel]
bajones: It's the same as requestSession, but doing so in a deferred manner
19:03:05 [Brandel]
adarose: There would be ways to hide this signal, like offering a null session
19:03:36 [Brandel]
... a hack would be to invoke an iFrame that constructs an overriding offerSession, and then terminates it in order to clear it
19:03:56 [Brandel]
... so it would be good for us to give developers the right way to deal with this
19:04:30 [Brandel]
... a use case includes a time-sensitive offer based on the availability of another participant in an XR session, which could be terminated by someone getting bored
19:04:52 [Brandel]
bajones: `fetch` has a way of being terminable, via some kind of signal
19:04:55 [CharlesL]
CharlesL has left #immersive-web
19:04:57 [Emmanuel]
Emmanuel has joined #immersive-web
19:05:24 [Brandel]
... we could support the same thing here, we'd just need to explictly opt into our use of it
19:05:57 [Brandel]
bajones: it would require attending to an 'abort' signal, which we might want to incorporate into the 'requestSession' syntax as well
19:06:18 [Brandel]
marcosc: We need to have a good reason for taking the agency away from the user on this
19:06:47 [Brandel]
adarose: It's not trivial and not impossible to make codes to wipe out a session, but it will be messy
19:07:16 [Brandel]
marcosc: there is a similar problem in payments, where a payment sheet has to be cancelled by destroying the establishing context
19:07:39 [Brandel]
adarose: for this API, I would suggest using the (standard) abort controller
19:07:51 [Brandel]
bajones: the fetch API covers this approach
19:08:31 [marcosc]
q?
19:08:37 [Brandel]
adarose: Quest devices might be able to offer both immersive AR and immersive VR - giving users the ability to choose
19:09:02 [adarose]
ack Nick-Niantic
19:09:05 [Brandel]
bajones: you _could_ make the chip a drop-down - but many people's "AR" sessions are basically just VR
19:09:10 [marcosc]
q-
19:09:23 [Brandel]
Nick-Niantic: I am a little confused about what this is in service of
19:09:36 [bajones]
Abort Controller docs -> https://developer.mozilla.org/en-US/docs/Web/API/AbortController
19:09:54 [adarose]
q+ to ask about offering unsupported sessions
19:10:13 [Brandel]
... generally when a UA manages things, developers have to put big CSS arrows to point to the window chrome in order to draw user attention to it
19:10:55 [Brandel]
... relying on devices to self-report capabilities is fraught, because many phones mis-report their capabilities, or do so in a way we are not familiar with the capabilities of
19:11:08 [CharlesL]
CharlesL has joined #immersive-web
19:11:12 [bajones]
q+ to discuss issues with developers ONLY calling offerSession
19:11:28 [Brandel]
... the case where this seems to be the most sense to me is in a windows, connected headset and you are _sending_ it to your HMD
19:12:06 [Brandel]
... in an oculus[sic], you probably want to get into that immersion ASAP, e.g. in a PWA
19:12:18 [Yih]
q+ to provide user problem it solves
19:12:27 [Brandel]
... but I don't see why this is a meaningful addition
19:12:55 [Brandel]
cabanier: Last year we looked into all the problems with the button presentation for these things - often very small, or non-presenting at all
19:13:27 [Brandel]
... including a failure for a 2D page to account for a resized window at all
19:13:28 [bkardell_]
Maybe it's like controls in media element/full screen?
19:14:09 [adarose]
q?
19:14:11 [Brandel]
Nick-Niantic: I have _less_ reservation based on the presence of requestSession, but still don't see the criticality of this as a solution
19:14:17 [Yih]
q-
19:14:17 [adarose]
ack bialpio
19:14:34 [Brandel]
cabanier: we have seen many people struggle with, so we feel we are solving a problem people have
19:15:20 [Brandel]
bialpio: I'm concerned by the 'last-writer' resolution for this - is this safe?
19:15:28 [Brandel]
cabanier: you still need to explicitly grant xr permission to iFrames, so that's under some degree of control
19:15:58 [Brandel]
bialpio: It still seems like the impact on debugging could get difficult, to track down who is the ultimate offerer. Maybe we could broker that permission explicitly
19:16:37 [Brandel]
bajones: we have the "XR Spatial Tracking" permission policy, we need to continue to respect that
19:17:06 [Brandel]
... MatterPort / sketchFab / etc do a lot of their work through iFrames, so we need to keep letting them do that without random ads being able to jump in arbitrarily
19:18:07 [Brandel]
bajones: we would apply the conventions that come from abort controllers and the requestSession syntax
19:18:24 [Brandel]
... I'm still not convinced that we need this to be abortable, but could be convinced
19:19:02 [Brandel]
... maybe on a gallery page where some content is XR capable and some are not - but it sounds complicated
19:19:12 [adarose]
q?
19:19:20 [adarose]
ack alcooper
19:19:50 [Brandel]
alcooper: 2 things: Initially I thought this sounds great, but some of nick's comments made me wonder:
19:20:07 [Brandel]
... why isn't developer education our first priority to solve this problem?
19:20:15 [Brandel]
... (bigger buttons etc)
19:20:37 [Brandel]
... and second, what is the strategy for landing this, where does it go?
19:21:13 [Brandel]
... it seems like requiring UAs to add things to their OS chrome is a big ask
19:21:14 [adarose]
q?
19:21:17 [adarose]
ack adarose
19:21:17 [Zakim]
adarose, you wanted to ask about offering unsupported sessions
19:21:54 [Brandel]
adarose: when you click on the button in the URL bar, do you bypass the permission prompt? a: no
19:22:32 [Brandel]
... if it didn't entail additional permissions, would it be possible to bypass permissions?
19:22:43 [adarose]
q?
19:22:47 [adarose]
ack bajones
19:22:47 [Zakim]
bajones, you wanted to discuss issues with developers ONLY calling offerSession
19:22:55 [Brandel]
cabanier: maybe, but anything additional like hands or room would necessarily require a prompt
19:22:59 [adarose]
q+ to ask about offering unsupported sessions
19:23:29 [Brandel]
bajones: In the past I have worried that if this is well-supported unevenly, we end up with the opposite problem
19:24:18 [Brandel]
... if Meta devices support it well, but then Android devices are still only relying on requestSession, then the developer-selected user signals become fragmented
19:24:27 [bialpio]
q+
19:24:45 [Brandel]
cabanier: This is similar to the problem of having uneven support for modules like layers
19:25:13 [Brandel]
bajones: Yes, but it's slightly different in that the default expectations of if/how things can fail
19:25:55 [Brandel]
... If the method simply doesn't exist, developers should notice that it can't be used - I will have to think more about the consequences
19:26:12 [Brandel]
cabanier: It wouldn't be my expectation that everyone would use this API
19:26:36 [Brandel]
bajones: There's a difference between using the API and not exposing the end-point though
19:26:54 [adarose]
q?
19:26:57 [adarose]
ack adarose
19:26:57 [Zakim]
adarose, you wanted to ask about offering unsupported sessions
19:27:05 [Brandel]
... we have allowed people to sign on to things we don't intend to implement user-facing end-points for the sake of developer convenience
19:27:44 [Brandel]
adarose: in your example You offer a session without checking that it's supported - what would happe if it wasn't supported?
19:27:52 [Brandel]
cabanier: it would be rejected immediately
19:28:59 [adarose]
q?
19:29:05 [adarose]
ack bialpio
19:29:23 [Brandel]
... unsupported sessions wouldn't over-write supported sessions and kick them out
19:30:08 [Brandel]
bialpio: I want to refer back to the browser UI real-estate as being scarce - we would want the spec to say that this isn't always supported
19:30:21 [Yih]
q+
19:30:30 [Brandel]
... I would want the site to know that this failed, so it's not relying on it
19:31:13 [Brandel]
...this is now the biggest API that allows you to do the same thing in two different ways, which is an entire alternate entry point
19:31:56 [Brandel]
... which can encourage developers to have divergent ways of getting in, with potentially different permissions and code paths
19:32:19 [Brandel]
... in practice, there are a lot of thing we do only when resources are explicitly requested
19:32:50 [Brandel]
... our "SessionSupported" is only looking at Android, rather than e.g. ARCore presence
19:33:47 [Brandel]
... I would need to look more deeply in the 'offer' timeframe to make appropriate determinations about which sessions can overwrite which ones
19:33:54 [bajones]
q+
19:34:00 [adarose]
zakim, close the queue
19:34:00 [Zakim]
ok, adarose, the speaker queue is closed
19:34:10 [Brandel]
cabanier: The request sessions are lightweight on Quest
19:34:25 [Brandel]
bialpio: so are ours, but the spec allows us to be optimistic about the scope of capability
19:35:40 [Brandel]
... but we need to determine satisfiability of an potentially overriding offerSession actions, so that an unsupported session bumps a supported one
19:35:57 [Brandel]
cabanier: I think we can just bump it
19:36:34 [Brandel]
bajones: there might be some benefits that come from showing things inside trusted / scarce UI, but it is limited
19:37:03 [Brandel]
... you don't get to choose from an unbounded range of options there - you should probably use requestSession for that
19:37:56 [Brandel]
... we don't want sites to rely exclusively on this affordance. it helps accessibility etc - but this should probably just be for the minimum, most basic action that can be taken
19:38:28 [Brandel]
bialpio: But does that mean that we are incentivizing developers to build experiences that target the least set of capabilities possible?
19:39:05 [Brandel]
bajones: those options can be negotiated, but the UA has the ability to make those decisions and it doesn't break page logic to have those change
19:39:31 [Brandel]
... e.g. the UA could simply mute that request, if it's being too loud
19:39:53 [Brandel]
... if a user has repeatedly rejected the request
19:40:13 [Brandel]
adarose: Let's put lots of pins in this to get back to in the un-conference time
19:40:27 [CharlesL]
agenda?
19:40:47 [Brandel]
Yih: I have been trying to gauge the scope of where these things are decided, on UA vs. page
20:47:46 [CharlesL]
CharlesL has joined #immersive-web
20:49:37 [yonet]
yonet has joined #immersive-web
20:56:35 [Brandel]
Brandel has joined #immersive-web
20:58:10 [vicki]
vicki has joined #immersive-web
20:58:21 [etienne]
etienne has joined #immersive-web
20:58:53 [Nick-Niantic]
present+
20:58:59 [marcosc]
marcosc has joined #immersive-web
20:59:02 [Brandel]
present+
20:59:03 [marcosc]
present+
20:59:03 [adarose]
adarose has joined #immersive-web
20:59:05 [adarose]
present+
20:59:08 [etienne]
present+
20:59:08 [vicki]
present+
20:59:17 [yonet]
present+
20:59:21 [mkeblx]
present+
20:59:23 [CharlesL]
zakim, who is here?
20:59:23 [Zakim]
Present: cabanier, CharlesL, Dat_Chu, bajones, Marisha, etienne, adarose, Brandel, bialpio, mkeblx, atsushi, Yih, vicki, Nick-Niantic, yonet, marcosc
20:59:25 [Zakim]
On IRC I see adarose, marcosc, etienne, vicki, Brandel, yonet, CharlesL, Emmanuel, bajones, alcooper, atsushi, dino7, Nick-Niantic, mkeblx, bialpio, Zakim, cabanier, RRSAgent,
20:59:25 [Zakim]
... brycethomas, bkardell_, Leonard, jfernandez, general_j, sharonmary6, vianka, OverTime, sentinel1975, rzr, maxass99, LawrenceKincheloe, Matthew, NicolaiIvanov, helixhexagon,
20:59:29 [Zakim]
... fernansd, [old]freshgumbubbles, etropea73101, dietrich, Chrysippus, SergeyRubanov, bemfmmhhj, babage, KevinBush, Manishearth, mounir, ada, sangwhan, iank_, scheib
21:00:01 [adarose]
zakim, choose a victim
21:00:01 [Zakim]
Not knowing who is chairing or who scribed recently, I propose Dat_Chu
21:00:03 [Marisha]
Marisha has joined #immersive-web
21:00:06 [Marisha]
present+
21:00:07 [adarose]
zakim, choose a victim
21:00:07 [Zakim]
Not knowing who is chairing or who scribed recently, I propose cabanier
21:00:13 [cabanier]
present+
21:00:15 [adarose]
zakim, choose a victim
21:00:15 [Zakim]
Not knowing who is chairing or who scribed recently, I propose Yih
21:00:41 [Yih]
Yih has joined #immersive-web
21:00:45 [Jared]
Jared has joined #immersive-web
21:00:50 [Jared]
present+
21:01:41 [bkardell_]
present+
21:02:19 [Jared]
https://github.com/immersive-web/webxr/issues/1317
21:02:22 [bialpio]
q+
21:02:36 [Yih]
adarose: Been working on attaching DOM things to WebGL things via CSS, to animate properties of an object per frame. Cool, apart from entering WebXR, specifically Meta Quest Browser. Page doesn't update CSS queries each frame anymore, custom properties that are being animated stop.
21:03:24 [bajones]
q+ To take a time machine back to ye ol' 2017 https://github.com/immersive-web/webxr/issues/225
21:03:27 [lgombos]
lgombos has joined #immersive-web
21:03:35 [lgombos]
present+ Laszlo_Gombos
21:03:35 [adarose]
zakim, open queue
21:03:35 [Zakim]
ok, adarose, the speaker queue is open
21:03:49 [Nick-Niantic]
q+
21:03:55 [Yih]
q-
21:04:47 [mkeblx]
q+
21:04:52 [adarose]
ack bajones
21:04:52 [Yih]
adarose: I would like an option to not background the page, to not be asleep
21:04:56 [bajones]
https://immersive-web.github.io/webxr/#xr-animation-frame
21:05:43 [Marisha]
q+
21:06:34 [Yih]
bajones: Mostly surfacing previous discussion on this topic (referencing documentation link), headset and window may not coincide with each other
21:06:40 [bajones]
https://github.com/immersive-web/webxr/issues/225
21:07:08 [Yih]
bajones: ... previous conversation in May 2017,
21:07:28 [Brandel]
q+
21:07:58 [adarose]
q?
21:08:01 [adarose]
ack Nick-Niantic
21:08:05 [Yih]
bajones: ... it was discussed quite extensively in the past (referencing above two links)
21:09:01 [Yih]
Nick-Niantic: We also want the page to update in a timely fashion, even in background, generally support this notion.
21:09:08 [cabanier]
q+
21:09:27 [adarose]
ack mkeblx
21:11:04 [adarose]
q?
21:11:09 [adarose]
ack Marisha
21:11:10 [Yih]
mkeblx: (shows demo of animation illustrating point)
21:11:24 [Yih]
Marisha: What is the current status of DOM layers and is there overlap here?
21:11:32 [bajones]
q+
21:11:47 [Yih]
cabanier: Main page would still be frozen, but DOM layer would be animating
21:12:01 [bialpio]
q+
21:12:08 [mkeblx]
q+
21:12:09 [adarose]
ack Brandel
21:12:17 [Yih]
scribe: Yih
21:13:04 [adarose]
q?
21:13:07 [adarose]
ack cabanier
21:13:14 [Yih]
Brandel: You can use the DOM to process things, CSS animations may be what is missing
21:13:47 [Yih]
cabanier: Switching to another tab will also not work, CSS animations will be frozen on backgrounded tab if switching to another tab
21:14:01 [adarose]
q?
21:14:29 [Yih]
cabanier: Framerate may also not be smooth
21:14:57 [Yih]
adarose: The animations do look smooth, not an issue
21:15:11 [Yih]
adarose: ... not using requestAnimationFrame
21:16:03 [Yih]
adarose: ... using headset to query values
21:16:44 [Yih]
cabanier: If requestAnimationFrame is running, and framerate changes, wouldn't be a problem
21:18:18 [Yih]
adarose: Most web browsers can run at 120fps
21:18:50 [Yih]
cabanier: Would be nice if only CSS animations are being run, and not redrawing the entire page
21:19:11 [Yih]
cabanier: ... Not sure what group to ask
21:19:28 [Yih]
adarose: If we're in immersive web, the page shouldn't count as being backgrounded
21:19:35 [adarose]
q?
21:19:50 [adarose]
ack bajones
21:20:38 [Yih]
bajones: In general, browser should recognize that DOM is being displayed, similar to DOM layers
21:21:41 [cabanier]
q+
21:22:09 [Yih]
bajones: ... DOM is being read and reproduced, not recognized by the system. Possibly the solution is ubiquitous DOM layers. If I'm querying CSS, it should return an animation value.
21:22:40 [Yih]
bajones: ... this is possibly outside the purview of this group, worth finding the group to implement the fix to what sounds like a broken situation
21:23:32 [Yih]
adarose: Valid situation for CSS animations to continue playing, such as a backgrounded tab
21:24:03 [Yih]
bajones: Question I have: Is this actual intentional behavior?
21:24:15 [adarose]
q?
21:24:18 [adarose]
ack bialpio
21:24:20 [Yih]
adarose: Could be specs or compatibility issue
21:24:56 [bajones]
q+
21:25:08 [Yih]
bialpio: Does it matter that XR raf is using predictive/display time versus CSS might be using different timeline — FPS might not matter, but that it'll be slightly different timeline
21:25:52 [Yih]
adarose: If I had to do something time sensitive, I wouldn't use CSS animations — timeline isn't as important
21:27:27 [adarose]
q?
21:27:31 [adarose]
ack mkeblx
21:27:38 [Yih]
bialpio: Might be the case that this was accidentally omitted
21:29:05 [Yih]
adarose: There is a significant performance impact when attempting to do this with large number of elements, big part of frame budget is checking for updates
21:29:35 [Yih]
mkeblx: As a developer, one takes on the performance impact as an accepted tradeoff
21:30:38 [Yih]
adarose: I try to cover most cases, but accounts with contingencies. Despite performance overhead, using page logic to control WebGL is an ideal approach
21:31:24 [Yih]
adarose: ... goal is to not put page to sleep, and keep it alive
21:33:35 [adarose]
ack cabanier
21:33:38 [Yih]
adarose: ... for highest browser compat, would like a simple way of getting this solved
21:34:45 [Yih]
cabanier: Something when you request a session sounds like a reasonable push. Don't know if we need to talk to different groups about this, sounds like something we can solve in isolation.
21:35:47 [Yih]
adarose: It could be something like turning on a property by default.
21:36:44 [mkeblx]
+q
21:36:46 [adarose]
ack bajones
21:36:49 [bkardell_]
I play a 1s audio loop on my android device, otherwise my music player keeps dropping the actual sound (any player)
21:36:51 [Nick-Niantic]
q+
21:38:15 [adarose]
q?
21:38:17 [Yih]
bajones: CSS animations across browsers do not seem to pause timing when I switch tabs, seems to be consistent, not retaining state. CSS animation seems to be jumping forward to meet timeline, doesn't seem to be a concern.
21:38:18 [adarose]
ack mkeblx
21:38:39 [Yih]
mkeblx: If by default, we change this behavior, what is the expected result?
21:39:54 [Yih]
mkeblx: ... is there a downside to doing this?
21:41:03 [Yih]
adarose: A developer could be doing something improper, perhaps we can follow Three.js lead here
21:42:03 [Yih]
adarose: Could a background page that's still running impact WebXR?
21:42:07 [Yih]
cabanier: Yes, it could
21:42:40 [Yih]
adarose: I'll try putting something together and put it forward to get input.
21:42:42 [adarose]
ack Nick-Niantic
21:43:04 [Yih]
Nick-Niantic: Are we going to make time to discuss DOM overlay later?
21:43:13 [adarose]
https://hackmd.io/@jgilbert/imm-web-unconf
21:43:20 [Yih]
adarose: This is a great unconference topic.
21:44:45 [Jared]
Jared has joined #immersive-web
21:44:48 [Jared]
present+
21:46:02 [Jared]
ada: A at a last face to face, having a means to go from one page to another while staying in WebXR, there have been some ideas like waiting for an event to go to a new page, Brandon had proposed a more complex solution. I think it would be good to talk about again.
21:46:08 [adarose]
q?
21:47:38 [Jared]
brajones: At Tpac and the last face to face we had feedback. The proposal that I made, was me "pie in the sky" lets solve navigation and a11y at the same time. I like the core idea but maybe not solving all the things at the same time.
21:48:20 [Jared]
brajones: the proposal that was made last time, the capture session should be the means. Rick's proposal had a session granted.
21:48:56 [Jared]
brajones: The fact this is ambiguous it is problematic.
21:49:35 [Jared]
Cabanier: Session granted is a trigger. In the session granted event handler you request session and continue on.
21:49:45 [Jared]
bajones: I thought session granted provided you with a session.
21:49:51 [Jared]
cabanier: No.
21:50:02 [Jared]
bajones: Do you have many people that are trying to use that?
21:50:11 [Jared]
cabanier: I don't have data on that
21:50:42 [Jared]
ada: I encounter this alot when I am debugging a-frame pages. A-frame supports it and is turned on by default. Not that I know many multi-page a-frame pages.
21:50:52 [Jared]
cabanier: That is the first time I have seen it used.
21:51:04 [Jared]
Ada: I am tempted to add it to a project. Rather than having to refresh a lot.
21:52:01 [Jared]
bajones: I was just reviewing the readme on navigation so far. We need to update it. It indicates you get a session from the session granted event. I am going to assume that when you fire off the session granted event and you don't respond..
21:52:16 [Jared]
cabanier: You have an amount of time to respond.
21:53:25 [Jared]
bajones: I have a request for that. The session granted readme is out of date. If you could list out the mechanics to have it reflect what the meta experiment is doing, it would be helpful. Given that, I am going to leave the catching side alone then if it has been working well for you. And some of my assumptions were wrong. We should go back to have you initiate the sessoin.
21:53:50 [Jared]
cabiner: You can navigate however you want to. If you don't resume the session in a number of seconds you get kicked out.
21:53:59 [Jared]
bajones: that is currently limited to same session?
21:54:03 [Jared]
cabiner: same origin
21:55:16 [Jared]
bajones: None of this is new from the slide decks previously, the thing this kind of misses out on that we would want in a complete nav solution, it doesn't provide a way to provide context to the user where they are going when they navigate and it doesn't provide the user a way to have them know an action is a navigating action. So I think that, I don't think we should take that ability away. Web pages can do this, a mouse move can be a val[CUT]
21:56:06 [Jared]
We also have a href that we can use.. we should have a specific gesture that says, okay I want to do a navigation gesture now, and then go to the last place they want to go that are the navigation target.
21:56:41 [Jared]
Those two things allow you to determine where the navigation target is, and the nav is predictable and owned by the platform. I can then hold down the menu button for two seconds and navigate away.
21:56:57 [Jared]
You have more chances for the UA to mention something and context about where you are going (bank, etc)
21:57:05 [Dat_Chu]
Dat_Chu has joined #immersive-web
21:57:43 [Jared]
Those are the core elements that I feel somehow should be present. I don't know or care about the API that should provide them. There are two slides, TPAC and others in which we mark up everything, and others where we markup just navigation elements.
21:57:48 [adarose]
q?
21:57:59 [Jared]
Starting with where you are going to navigate and seems like a good place to start.
21:58:05 [Brandel_]
Brandel_ has joined #immersive-web
21:58:44 [Brandel_]
q+
21:58:56 [Jared]
Cabiner: The issues are every time you navigate there is dark, there could be several seconds of dark. The website you navigate to may not render or be ready to render especially the first time. If we have a solution, it needs to somehow allow preloading. And the page can say I am ready.
21:59:11 [adarose]
q+
21:59:57 [Jared]
So you can have a seamless transition, I don't know how that would look like. I looked at something that Google proposed that was portals. It was a noninteractive page, it doesn't know it isn't being loaded but is being displayed. It could be built on and be shown in a non interactive DOM layer. Maybe a meta dom that allows you to navigate to that.
22:00:10 [Jared]
At that point session granted could fire and seamlessly take over.
22:00:21 [Jared]
That kind of solves the problem. You want the navigation to be seamless.
22:01:28 [Jared]
bajones: So, I generally agree. I have so many fanciful wonderful ideas on how we could bridge the two sites to make them nicer. A twitter thread about endless elevators. I think those are ideas that we can add on top of the core of navigating. I would like to not always stop at that point because we figured out and more concretely build on top. I like the ieaa of portals.
22:02:07 [Jared]
If we have something like a broadcast to the page, this is where you will go if you navigate now. This can be a signal that I as a UA I could be proactive about it at that point, but you don't always want to do that. If everything is an acnhor, loading all of them.
22:02:32 [Jared]
The gesture is also something in which you need to press a button for a second or two. There is nothing to stop you thinking they are going to abondon the gesutre but I am going to preload now.
22:03:15 [Jared]
If you do the nav this way you have more control to go in and out, otherwise you hit a black wall and the page just dissapears, maybe you can show a spinner. If a user initis a gesture it gives you more chance as he UA to smooth it over. And the browser to do things like show the skybox or whatever.
22:03:26 [adarose]
ack Brandel
22:04:01 [Jared]
brandel: There are a bunch of things you alluded to, an explicit path you are going to or a specific action for that specific thing. Makes me wonder there aren't trusted UI or trusted events.
22:04:06 [Jared]
Do you have that?
22:05:33 [Jared]
Bajones: We have had bits of trusted UI, it's been iffy. We have had a floating thing that was telling you but it was annoying but then we made it https only. There was a thing where you could ask for permission for camera in XR and I know during the time we had browser for daydream we did have UI for that. It may have backrounded the session. THere are ways to do that. We are in a secanrio where we take over your whole view. THere is no gau[CUT]
22:05:53 [Jared]
the pixels are being rendered by the UI, if there is a prominent browser it becomes easier to spoof.
22:06:42 [Jared]
An environment that the browser can make that is recognizable, the browser can always render on top. Positioning is tricky they can try and put stuff above and below. There are ways that you can be more assured the thing is the browser. The concrete guarantee we don't really have that option.
22:06:50 [Jared]
brandel: do you have it rick?
22:06:56 [Jared]
cabanier: we don't
22:08:11 [Jared]
bajones: the reason we want the gesture is to know that it is explicit, whatever button on the quest when I am on a session it will bring me to a panel. I have no doubt it came from the OS becasue the page cannot override or incercept. That button will always take me to that page. If the other side is held for two seconds and then it switches away, and says you are about to navigate to evil.com the only way I could get that is from the browser.
22:08:30 [Jared]
While it is difficult to render it into the scene it is difficult to trust, but you can know for certainty you know came from you..
22:08:34 [adarose]
q?
22:09:02 [Jared]
ada: something that is new but was very pie in the sky since we last talked about this, I don't know if it has landed landed, the fade transition effect.
22:09:22 [adarose]
https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent
22:09:26 [Jared]
In 2d. Once we know the navigate from one page to another. The 2d web, had been doing this. There will be a link in IRC>
22:09:49 [Jared]
This is a part of the page transition api that allows you to animate smoothly between pages and it does the animation. I think we could hook into these events.
22:10:13 [adarose]
q?
22:10:17 [adarose]
ack adarose
22:10:20 [Jared]
Instead of a 2d transition we could have a developer know that they could do a nice transition for a interstitial state. I think it could be nice.
22:10:38 [Jared]
we can probably end that conversation there if there isn't much to add. Coffee?
22:10:54 [Jared]
After this is unconference items. Then it's the end
22:10:57 [adarose]
https://hackmd.io/@jgilbert/imm-web-unconf
22:11:08 [Jared]
There is a doc, I will paste it in IRC. You can add stuff to it if you want.
22:28:29 [adarose]
adarose has joined #immersive-web
22:29:42 [adarose]
present+
22:30:56 [etienne]
etienne has joined #immersive-web
22:32:34 [Marisha]
Marisha has joined #immersive-web
22:32:37 [Marisha]
present+
22:45:40 [Yih]
Yih has joined #immersive-web
22:46:16 [Marisha]
rrsagent, generate minutes
22:46:18 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html Marisha
22:49:41 [atsushi]
i/ada: A at a last face to face,/scribe+ Jared
22:49:45 [etienne_]
etienne_ has joined #immersive-web
22:49:51 [atsushi]
rrsagent, publish minutes
22:49:52 [RRSAgent]
I have made the request to generate https://www.w3.org/2023/04/25-immersive-web-minutes.html atsushi
22:50:03 [etienne__]
etienne__ has joined #immersive-web
22:50:44 [etienne__]
Nick-Niantic: cabanier mentionned that DOM-layers will have a different document, what are the ramifications?
22:51:01 [Marisha]
scribe: etienne__
22:51:08 [etienne__]
cabanier: each DOM layer is like a dialog
22:51:29 [etienne__]
... fullscreen only works for a single element, so it's a better fit
22:52:14 [etienne__]
Nick-Niantic: so if we want to bring something from the original page to the 3D session, how can we keep things in sync with the dom-layer
22:52:38 [etienne__]
... so could the DOM layer be the whole document?
22:52:49 [etienne__]
cabanier: people might want multiple DOM layers
22:53:19 [etienne__]
... you have to provide the URL (same origin, no foreign content) when requestion the DOM layer
22:53:32 [bkardell_]
postmessage?
22:53:34 [etienne__]
Nick-Niantic: using a separate URL could be problematic
22:54:43 [etienne__]
cabanier: you could create an empty dialog then populate it from the main page
22:55:02 [etienne__]
brandon: but what about event handlers etc... if we move element to a different document
22:55:33 [etienne__]
Nick-Niantic: if something moves to the dialog then back, what will break?
22:55:47 [etienne__]
brandel: the CSS cascade will change
22:56:02 [etienne__]
cabanier: you could getComputedStyle() on everything before sending it to the dialog
22:56:30 [etienne__]
Nick-Niantic: but that wouldn't work well after class changes etc...
22:56:50 [etienne__]
ada: looking at the adopt node spec, it doesn't mention event listeners
22:57:11 [etienne__]
cabanier: if they are on the same element they should just work
22:57:31 [etienne__]
Nick-Niantic: so the recommendation is to load `about:blank` then programatically populate everything
22:57:49 [etienne__]
Marisha: how does the origin work for `about:blank`
22:58:36 [etienne__]
ada: we might need to explicitely state that it'll work for same-origin and data URLs
22:59:09 [etienne__]
Nick-Niantic: the existing "dom tablet" concept should be implementable with enough framework work
22:59:45 [etienne__]
cabanier: still afraid that it'll be too much of a pain and people will roll their own
23:00:14 [etienne__]
Nick-Niantic: what about clicks / events?
23:00:19 [etienne__]
cabanier: event handlers should fire
23:01:33 [etienne__]
cabanier: the author will have to intercept the select event, and relay where on the DOM layer's quad it should be dispatched
23:01:48 [etienne__]
ada: if it's coming from the xr select event it should be trusted
23:02:07 [etienne__]
brandel: but is the target un-ambiguous?
23:02:38 [etienne__]
cabanier: that's why we have the same origin and security restrictions, you would be lying to yourself :D
23:03:26 [etienne__]
cabanier: should the fullscreen API work there?
23:03:34 [etienne__]
ada: it would be handy for videos
23:03:40 [etienne__]
brandon: I have a demo!
23:04:21 [vicki]
vicki has joined #immersive-web
23:04:23 [etienne__]
... demoing moving a button between windows
23:04:47 [etienne__]
... the script continues to work, event bindings work, but the style doesn't move between windows (obviously)
23:07:57 [adarose]
q?
23:08:40 [etienne__]
adarose: we should make a repo and have a place for people to file issues
23:08:55 [etienne__]
cabanier: there might be a PR to layers
23:09:21 [etienne__]
Marisha: why do we need to pass a URL instead of passing a document fragment directly?
23:09:32 [etienne__]
cabanier: we need it to get a new document
23:09:46 [etienne__]
brandel: document have a path, need dimensions etc...
23:10:24 [atsushi]
i/Nick-Niantic: cabanier mentionned/scribe+ etienne__/
23:10:34 [etienne__]
cabanier: yes you need to pass dimensions too
23:11:10 [bialpio]
https://www.w3.org/TR/webxr-dom-overlays-1/#xr-overlay
23:11:26 [etienne__]
cabanier: but dom _overlays_ work similary to fullscreen so you don't need to pass dimensions
23:11:39 [etienne__]
... and you can only have one
23:12:14 [etienne__]
adarose: if you only want one element, could you get the same treatment as overlays
23:12:17 [bajones]
q+
23:12:20 [etienne__]
... oh but it wouldn't work for events
23:12:22 [adarose]
ack bajones
23:12:28 [mkeblx]
q+
23:13:20 [etienne__]
bajones: 1. how do we determine the rasterization size? which is distinct from the size of the element in space, and needs a limit
23:14:02 [etienne__]
... 2. interaction wise how do I know what I'm pointing at? which ties into the keyboard integration from yesterday
23:14:06 [mkeblx]
q-
23:14:56 [etienne__]
... the keyboard blurs the scene, but that maybe wouldn't work for dom panels. but maybe it's a good place to start
23:16:32 [etienne__]
... the user needs to be confident about where they're pointing
23:17:22 [etienne__]
adarose: but again, with the same origin limitations as a developer you can't do anything you couldn't do before
23:17:47 [etienne__]
... no need user input hack
23:18:22 [etienne__]
bajones: correct, but still concerned. do we need an explicit mode switch depending on what the user is interacting with
23:18:51 [etienne__]
... what would actually trigger the pointer events?
23:19:13 [etienne__]
cabanier: needs to be specified, but would probably be an API on the layer
23:19:48 [etienne__]
Nick-Niantic: could the browser do everything here?
23:20:13 [etienne__]
cabanier: how? the layer could be occluded (and we can't read back the depth buffer)
23:20:42 [adarose]
q?
23:20:51 [etienne__]
cabanier: when casting a ray, only the author knows if you hit the layer
23:22:19 [mkeblx]
q+
23:22:20 [etienne__]
adarose: accessibility wise, we have access to the accessibility tree here, could we do anything based on gaze? move a virtual cursor?
23:22:41 [adarose]
ack mkeblx
23:22:46 [etienne__]
cabanier: things like hover events are going to be compex
23:23:08 [etienne__]
mkeblx: we need more than click interactions (scroll etc...)
23:23:39 [etienne__]
adarose: maybe the events should be treated as non-artificial events
23:23:59 [etienne__]
... so more things would work (sliders etc...)
23:24:23 [etienne__]
... and then we could just do pointer events
23:24:55 [etienne__]
brandel: users of this API would taylor the interactions for this setup
23:25:20 [etienne__]
Nick-Niantic: but we would like to make the effort minimal for developers, and have things working on phones etc....
23:25:54 [etienne__]
bajones: I would expect an even split between people building XR UIs with the DOM, and people bringing existing UIs in
23:27:10 [etienne__]
cabanier: the main document might have the same restrictions. so you couldn't have 3rd party scripts on the main document handling events from the DOM layer
23:27:46 [etienne__]
Nick-Niantic: the use case we care the most about is having the outer page controlling the DOM layer's content
23:28:00 [etienne__]
... so anything you can do on your one page should work here
23:30:54 [etienne__]
... for scroll alone, it seems that it would be much easier if a controller could be assigned to the DOM layer, letting the browser handle event dispatch (not the author)
23:31:40 [etienne__]
bajones: the more I think about it, the more I think we should have a mode switch where the OS takes over (and handles input events)
23:32:36 [etienne__]
... on daydream the platform conventions for scrolling were different than on quest
23:32:57 [etienne__]
... so the author couldn't reproduce it while respecting the OS conventions
23:32:58 [adarose]
q?
23:33:20 [etienne__]
adarose: this feels like the onbeforeselect event
23:33:58 [etienne__]
... both get the event but the xr content can ignore them
23:34:48 [etienne__]
bajones: on the quest, do you show a cursor or just a ray?
23:34:52 [etienne__]
Marisha: yes we show a cursor
23:35:56 [etienne__]
... for a 2D browser
23:36:59 [etienne__]
bajones: the idea would be to have the OS cursor be the "source of truth" for where the input event will be dispatched
23:37:14 [etienne__]
... the web content stays in control of the ray
23:38:05 [etienne__]
Marisha: we might have some implementation issues, but theorically it could work
23:38:30 [etienne__]
brandel: where do we put the limit? would the document also get devicemotion?
23:38:39 [etienne__]
... and resize
23:38:50 [etienne__]
cabanier: currently you can't resize a layer
23:39:30 [etienne__]
adarose: one thing developers might use this for is a custom DOM-layer based keyboard (to avoid the blur?)
23:40:01 [etienne__]
... and for the extra control
23:40:19 [etienne__]
brian: some people to that on mobile already
23:40:51 [etienne__]
bajones: native apps too
23:41:18 [adarose]
q?
23:41:51 [etienne__]
adarose: let's wrap up, it's a very cool thing
23:42:17 [etienne__]
cabanier: need to confirm if the CSP needs to be set on the parent document or not
23:42:34 [etienne__]
adarose: which would break people loading three from a CDN etc...
23:44:05 [etienne__]
brandel: (and others) the CSP is set in the HTTP header, not the page, so github pages would break too
23:44:25 [etienne__]
cabanier: points that a meta tag is also available
23:44:43 [etienne__]
brandel: but then who wins?
23:45:57 [etienne__]
adarose: we definitely don't want things like bank's iframes being loaded
23:46:03 [etienne__]
... but scripts should be fine?
23:46:34 [etienne__]
cabanier: the spec says that if you use the meta tag, you could load scripts _before_ the meta tag at it'd work
23:47:08 [etienne__]
adarose: it would be nice if only the subpage had the restrictions