How to make a load screen for VR

Has anyone yet figured out how to create a proper loading screen for VR? What I mean by that is something that works in the VR space i.e. not a static image stuck to the player’s head.

For clarity, I’m talking about when we call OpenLevel, which is a fully blocking call.

I have several methods to do the loading screen for VR:

  • pure black screen (this one is easy)
  1. make a widget with animation for fade in/out;
  2. when you trigger the reset level, create widget and add to view port, then delay for the length of fade out
  3. after the delay, fire OpenLevel(NextLevelName)
  4. I’ve not tested fade in yet, but you can try to repeat step 2 but with fade in animation, in the level BP’s BeginPlay
  • animated loading "level 1
  1. set GameMode’s Use Seamless Travel to true
  2. make a loading level, put whatever you want in it, like a rotating cube, and make sure your camera sees them, like put it in (200, 0, 0)
  3. Project Settings / Maps & Modes / Transition Map, set it
  4. like using pure black screen, you can do a fade out, then fire Execute Console Command, with string “ServerTravel NextLevelName”; this one would put you inside Transition Map, and put you in the NextLevel when it’s loaded.
  5. if you want to package your game, also make sure Project Settings / Packaging / List of maps to include have the Transition Map in.
  • animated loading “level” 2
  1. make an empty level, this is to be the entry level
  2. Project Settings / Maps & Modes / Game Default Map, set the entry level
  3. the entry level should contains at least 2 sub levels, 1 is the transition level (the one with the rotating cube is fine), 1 is the main level
  4. the real process is a bit complicated; the idea is to stream-load transition level first (visible after load = true), then stream-load main level (visible after load = false); so, when you watching the cube rotating, the main level is loading in background; when it’s completed it’s invisible, then unload the transition level and show the main level.
1 Like

But there’s problems for each method, hope someone could help to solve. The most annoying one is the screen hang/block/freeze when switching from transition level to main level. It’s desired to do a fade out here, but there seems not any useful event to override.

Based on my Rift experience:

widgets are stick to your screen while ‘open level’ is loading your next level. There are two problems in VR with this:

1.open level’ freezes the main thread while loading the level therefore your VR tracking freeze with it. So no VR tracking until your loading is complete.

2.to have a proper loading widget in VR you have to create a 3D widget. Unfortunately this way you have an actor placed on your level. When you call “open level” it will remove your actors from the actual level when the main thread is freezed while loading and you will end up with a black screen.

The most relevant and promising feature connected to this topic is the VR section: ‘set splash screen’ which sometimes works sometimes not even if I leave my BP untouched. Tried different variations of it even though this meant to be the right way I guess the feature so far is a disappointment…

As long as unreal dev will not fix the ‘set splash screen’ for VR I can’t even try is it able to use a media texture as an animation video or not.

Therefore to me the only working option so far for an animated loading screen in VR is the: Streaming level

Streaming level will not freeze your actual level when you call ‘load stream level’ as it uses different thread for this so you are able to create a loading stream level while your actual streaming level is loading. Streaming level method is definitely not build for this, but unreal dev keep improve their VR support. Hopefully soon we are able to easily implement a loading animation in VR between levels.

If someone has another solution or experience with the ‘set splash screen’ which is tested and works in VR I would glad if you share your solution with us. :slight_smile:

can’t get any of this to work either

where did you get stuck?

Hey, this helped a lot! I was trying to fade to white and Transition Map works perfect.
Thank you!