Room scale matching IRL location - How to manage the Quest2 orientation?

Hi all,

I’m creating an app for the Meta Quest2, where a user can walk in and out a room ( L shaped with an open door, nothing fancy ), which has been built based on a real life location, so the virtual environment ( built in Maya using technical drawings of the place ) match the IRL environment.

Now I’m having the following issue and I would like some advices:
While doing the room scale, I tracked both the inside of the room and a little bit outside the room ( in front of the door ) and set the pawn start location outside the room, at a specific distance from the door, so IRL I also have the same distance as the starting point of the pawn…as soon as the app starts, the pawn has a predefined orientation ( always looks towards the door ), while if I start the app and I’m not looking towards the door IRL, I have a misalignement between the virtual and IRL locations.

To temporarily solve this issue I created a 3d printed stand for the Quest2, so that it sit thight there, and I placed the stand in front of the door at a specific distance ( the stand is also placed on top of a pedestal to be able to have the Quest2 at eye level ), so that it matches the distance between IRL and virtual start location.

In order to sort out the orientation, I used one of the buttons on the controller to turn on the visibility of the room scale tracking area ( show/hide Guardian Visibility ), so that while the Quest2 is still on the stand, I can look inside the Quest2 and physically rotate the stand to match the orientation between the Guardian tracking area and the virtual environment, using the Guardian tracking area as a guide.
When the two environment seems to be aligned, I get the Quest2 from the stand and test it by walking inside the room, and with still the Guardian visibility turned on, I check if the two envirnoments aligned properly.

It works, but is not very user friendly, and if the stand is not locked in place after the orientation alignment, the entire calibration is messed up.

So is there a proper/different way to align/orient the Quest2 so that the IRL environment match with a virtual environment which has the same geometry?

Thanks in advance.

Whether it is possible depends on if the Quest 2 retains its calibration between sessions and always places the playspace in the same location. I don’t have a Quest, so I don’t know if this is that case.

The origin of the default player pawn from the VR template will always be in the center of the playspace (relative to the real world), so if you can make sure the player pawn is always spawned in the same location and doesn’t move in the game world, it should retain the same pose in the room.

Meta also has a proprietary OpenXR extension for spacial anchors. I don’t know if there is any implementation available for Unreal though.
https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#XR_FB_spatial_entity

Hi Enter Reality,

My idea would be to instruct the user to stand in a specific spot + facing a specific direction. (0,0,0) And create an input that triggers the ‘Reset Orientation and Position’ blueprint node. (I like to use the input of clicking down both thumbsticks at the same time for this)

I think in general the Quest should retain its orientation even when locking the screen. (Like when the HMD switches users) But if not it’s easy to realign.

Spatial anchors would be very cool, but I have never seen any used with the Quest.

Let me know if you end up trying my idea, I’m happy to talk more about this subject too.

1 Like

@Astrotronic I forgot to mention that in my setup, beside starting the app when the Quest2 is on the stand, I also enable the right trigger to act as a reset for both location and orientation ( the Reset Orientation and Position node ).
That reset has been added in case you push the power button and put the the Quest2 on standby while the app is running, and when you turn exit from standby ( press the power button again ) the tracking usually is completely lost, so the idea was to have the reset button quickly available, without the need to restart the app.

The general idea is that, once a customer is done with walking around, the Quest2 is placed on the stand ( which also act as a charger ), so that if another customer want to try it, you either restart the app or, if the Quest2 is on standby, you simply use the reset pos/orietation button and you’re good to go.
Yes spatial anchors would be great and I thought about using a QR code to help with the orientation, but I think that the predefined position and orientation idea that I have might be one of the safe and sound solution that can be used.

I’ll let you know if this setup works and is a reliable setup, also because the same setup will also be used in different locations, so finger crossed.

@Rectus_SA Thanks for the advices, I need to test if this would be a consistent behaviour that can solve the issue or if is not that reliable due to variables ( room scale setup, user position/orientation and so on ), but I’ll give it a shot.

1 Like

Hi @Astrotronic, I ended up building an aluminium frame and test the entire setup on location, and well it works!

First I built a designed a Quest2 holder using CAD software and print the prototype using a 3D printer, then I also create a big frame ( 1.6x0.8meters ) that will act more as a panel with a front panel with the company ad ( in the picture there’s still no front panel ) and on top of it there is the 3D printed Quest2 holder ( it is shiny because I just used a pint to make the print stronger, without any nice aesthetic paint on top of it ), where on one side you have a knob with a single hole, while on the other side you have a circular slot also with a knob, but if you unscrew the knob you can turn the 3D print so that you change the alignment of the Quest2.

The test went very well and using the setup to view the guardian boundaries allows to have a pretty good alignment between the VR location and IRL location.

The next step would be to eventually remove the frame and just have a hinged aluminimum bar with the 3d print attached, fixing the hinge on the wall, so that you can have the aluminium bar at 90° to the wall, do the alignment, and then lower the alinimium bar ( thanks to the hinge ) so that it’ll stay parallel to the wall.

2 Likes

That, is a thing of beauty! Doing a project with extruded-aluminum is something I’ve always wanted to do.

You mentioned before you’d want to incorporate charging into this. I’ve seen some ‘drop in’ chargers on amazon.

Also, why not face the HMD the other direction? In my mind I’d want to be able to walk up to it without needing to rotate the HMD to put it on. (But maybe approaching from the side with the angle/support is not too far of a reach)

Thanks!
The charging station was the first idea, but it wasn’t capable of holding the Quest2 tight, so I ended up modeling creating a 3d print of a custom made support, but I left openings on both sides to let the user turn the Quest on and to also insert the charging cable, since they will probably use a power bank which will be hidden below the 3d printed support.

The reason why the HMD is facing that way is to have the entire front part of the aluminium frame with a big advertisement panel, and the HMD will just be placed there, while the entire frame is virtually hidden behind it.
Also the operator, behind the frame, will turn on the Quest, start the app, removing the Quest from the support and then help the customer wearing it.
By doing so the Quest won’t lose the tracking, the customer will wear it in few seconds and the orientation is matched as best as possible.

I also posted on the Oculus forum and someone suggest the use of the Spatial Anchors, which I’m going to explore, since the next project with the Quest2 will need to match an entire apartment with several rooms, so I need to find an alternative and bullet proof solution.
The frame pricing was around 300€, so nothing super expensive, but with the front panel with advertisement it will look very cool and the customer is happy about the idea :slight_smile:

As soon as I’ll sort out the spatial anchor setup I’ll open another thread.

Hi! This looks very interesting! Could you please share the holder?