Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Blackout in additive scene loading in WMR headset

Discussion in 'VR' started by plmx, Dec 17, 2017.

  1. plmx

    plmx

    Joined:
    Sep 10, 2015
    Posts:
    308
    I've posted this over in the generic XR forum, but have not received a response, so I am trying my luck here as well.

    When I load a scene in Additive mode (whether asynchronously or synchronously), I expect that the previous scene stays on the screen until the new one is loaded; this is how I understand the additive mode. This works pretty well on a standard monitor.

    However, when using the VR camera, this is not the case in the headset view (while the monitor (mirror) view is still fine). Instead, the behavior is dependent on the underlying platform:

    • Windows Mixed Reality: Total blackout
    • Oculus SDK: Scene stays visible where the headset was pointed when loading started, but with an hourglass on top; moving the camera to the side or backwards shows blackness.
    • HTC Vive/OpenVR: Headset view switches to a "Loading" screen from OpenVR, which displays the title of the game and some "loading" animation.
    I guess this is a known problem, since both the OpenVR toolkit and the Oculus toolkit provide a low-level option to set an image to the headset, bypassing Unity completely, for use during such load operations. However, such an option seems not to exist on Windows Mixed Reality. So, my questions:

    a) Is there such an option somewhere for WMR which I've overlooked?
    b) Does Unity itself support such an option in a generic way, or can I change additive loading behaviour somehow?
    c) If not b), is Unity thinking about implementing this?

    Thanks!

    Edit: Bug reported, case id is 979468.
     
    Last edited: Dec 20, 2017
    265lutab likes this.
  2. 265lutab

    265lutab

    Joined:
    Sep 15, 2014
    Posts:
    155
    I'm also having the same problem. Seems like an issue everyone would be having. Anyone have a solution?
     
  3. 265lutab

    265lutab

    Joined:
    Sep 15, 2014
    Posts:
    155
    I don't see that bug in the issue tracker. Could you put a link to it here?
     
  4. plmx

    plmx

    Joined:
    Sep 10, 2015
    Posts:
    308
    Unity have not yet been able to reproduce this behavior; I am in conversation with them. It will only show up in the issue tracker once acknowledged.

    The easiest way to reproduce this on any platform is having two scenes, the second taking a long time to load (easiest to fake this is having 10 cubes with different substances on them, each set to "Build on level load"). Then look through the HMD and/or enable the platform-specific headset mirror view (since this isn't visible in the game view nor in the normal desktop "view"/"left eye mirror" by Unity) and load the second scene with

    Code (CSharp):
    1. SceneManager.LoadScene(1, LoadSceneMode.Additive);
    I have just reproduced this issue in 2017.3.0f3 with
    • a Vive + SteamVR + the Headset Mirror view,
    • a Rift + Oculus runtime and OculusMirror.exe,
    • an Acer WMR headset + WMR runtime + "Camera Preview"
    It seems however that the asynchronous version seems to work out in my simple example repro project with the substances, but not in my full game (where the above behavior still occurs, though not through the entire load time, but only at the end). I am not sure why and haven't created a simple project to reproduce yet.