Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
MaxArch's avatar
MaxArch
Heroic Explorer
7 years ago

[Quest] how to match guardian to a real room ?

I'm testing how to match a VR experience in the Quest to an actual room (4x7m) using an accurate 3d model of the room and a fixed starting position (center of the entry door).

I edited the Oculus boundary example for visualizing the guardian points + play area in Unreal.
The room is a blueprint (with several static meshes) that gets properly aligned to the rotation of the PlayAreaTransform (level BP).
The pivot of the 3d room (BP) is at the center of the door as well.
Re-setting the view by pressing the OculusHome button puts me at the center of the door.

The problem is;
- the play area-mapping to the actual room is ok-ish but mostly some 10cm off and sometimes slightly rotated.

My question is;
- what would be the right strategy for matching the play area to the actual room more precisely OR are these relative minor errors within the accepted limitations of the guardian algorithms?

Max

9 Replies

  • Meet the same problem,i think write a script to simply the guardian points and disable the home button for reset view
  • MaxArch's avatar
    MaxArch
    Heroic Explorer
    I had a few more tries at this. I had better results by;
    • Moving the starting point (3d model and real world) to the center of the play area (same for guardian setup point).
    • Now when the play-area rotation is applied to the 3d model it will be
      from the center. This reduces the angular difference at the far points
    Also;
    • Setup of the guardian has to be as accurately as possible to work well.
    • I put a marker on the real floor to stand at the initial starting point in the real world. Most of the times it still needs re-setting the view a few times to match the play area to the 3d model.
    • When re-setting the view, don't look at the floor but look straight ahead (horizontal)
    Still interested to see how other people do this and/or what the actual official documentation is regarding this
  • I know I am necroing this thread but hear me out.

    I haven't done this yet, but am planning to buy a quest for this purpose alone.

    My idea was initially to have a cube (measured with precision instruments) in the real world and the vr world, then touch 2 sides of the cube, using those coordinates to sync the vr world with the real world.
    I believe this world work, but it would most likely work even better if you use the walls themselves as you could get more accurate rotation over longer distances that way. You could touch one side of the wall, then move over to the other side, calculate the rotational differences, then rotate the vr world to match.
    You would only need to use 2 walls for this, and (optionally) the floor as well if your floor height isn't calibrated perfectly.

    • Spacebar1739's avatar
      Spacebar1739
      Explorer

      johnad194 I set up this approach in Unity and it worked really well, especially if you can have a large distance between the points. Have you made any progress getting the point system to work? I'll keep you posted on my progress. 

  • MVRKDEV's avatar
    MVRKDEV
    Honored Guest
    In my experience the points of the Guardian System change virtual positions every single time you run the application, so you would have to orient and position the world every single time you start the game. If that's an acceptable limitation, by all means. I've been working on this problem and here's my approach.

    So I split this problem into 2 distinct parts: orientation, and position.

    To get the proper orientation, my approach was to use the Guardian System's array of points to find all of the "lines" in the space. My constraint here is that I must always have at least one wall that is completely straight. I'm essentially looking for the wall that is represented in my office via the Guardian System, creating a vector out of it, and setting my world's forward vector to that vector. 

    To get the proper position, my approach was to find the center of the Guardian System's array of points, and set the center of my 3D office to that point by manipulating its pivot. The challenge here is to find the point in your 3D office that matches up 1:1 with your guardian system (ideally without calibration). This is the part I'm currently stuck on. 

    Once you can solve both problems, you should be able to have a consistently matched virtual world to real world set up every time you run the app with minimal if any calibration. 

  • MVRKDEV said:

    In my experience the points of the Guardian System change virtual positions every single time you run the application, so you would have to orient and position the world every single time you start the game. If that's an acceptable limitation, by all means. I've been working on this problem and here's my approach.

    So I split this problem into 2 distinct parts: orientation, and position.

    To get the proper orientation, my approach was to use the Guardian System's array of points to find all of the "lines" in the space. My constraint here is that I must always have at least one wall that is completely straight. I'm essentially looking for the wall that is represented in my office via the Guardian System, creating a vector out of it, and setting my world's forward vector to that vector. 

    To get the proper position, my approach was to find the center of the Guardian System's array of points, and set the center of my 3D office to that point by manipulating its pivot. The challenge here is to find the point in your 3D office that matches up 1:1 with your guardian system (ideally without calibration). This is the part I'm currently stuck on. 

    Once you can solve both problems, you should be able to have a consistently matched virtual world to real world set up every time you run the app with minimal if any calibration. 


    Is there no way to disable the guardian system / make it invisible with the quest? I don't see a need for guardian after proper calibration. Haven't had a chance to try out the quest yet. I've got the Rift CV1 & Rift S, this experiment seems nearly pointless without hand tracking and larger play area though, thus the reason I'll be purchasing a quest.
  • MVRKDEV's avatar
    MVRKDEV
    Honored Guest
    Oh yeah I forgot to mention that I'm using the Quest. 

    It only shows your boundaries when you begin to approach them, and you can change how close you have to be before it shows the boundaries and some other sensitivity values but those are all Quest user settings, not in app settings. I don't think you can disable it entirely. 
  • Anonymous's avatar
    Anonymous
    Hi! Okay, i’m there too...
    i would like my to be able to align and rotate my view based on my guardian.
    i Would like that setup to be fixed. Not dependant of my starting point of view.
    i am fighting with vectors and world location with a limited sucess.
    Anybody ended with a good solution?
  • Anonymous's avatar
    Anonymous



    Is there no way to disable the guardian system / make it invisible with the quest? I don't see a need for guardian after proper calibration. Haven't had a chance to try out the quest yet. I've got the Rift CV1 & Rift S, this experiment seems nearly pointless without hand tracking and larger play area though, thus the reason I'll be purchasing a quest.


    You can disabled the guardian in the Quest menu > Developper
    Then you can use the helmet with no distance limits.
    But this way you have to create your own calibration system (and calibrate each time) without the help of guardian nodes.