Custom loading screen on VR?

I’m designing a custom loading screen for a game I’m working on, and would like to know how custom loading screens are handled in with VR headsets.

I’ve experienced that the default loading screen for VR is different than anywhere else - you see the skybox, and is presented with a white and blue-themed tiny loading screen where I need to stretch my neck to the point where I could have my head roll off, so high up it is.

My guess on how to implement a loading screen for VR is to have an invisible sphere for the background with some repetive image, and show a 2D GUI facing the camera using a SurfaceGui

Here’s a demo gif with non-smooth update rate to show some clipping.

Hmm, not sure if @SolarCrane comes on the devforums too often, but he would know.

Here’s the code for it though: https://github.com/ROBLOX/Core-Scripts/blob/master/CoreScriptsRoot/Modules/LoadingScreen3D.lua

Since it contains the following code, I’m fairly sure you can remove the default loading screen:

if ReplicatedFirst:IsDefaultLoadingGuiRemoved() then
	OnDefaultLoadingGuiRemoved()
else
	ReplicatedFirst.RemoveDefaultLoadingGuiSignal:connect(OnDefaultLoadingGuiRemoved)
end
1 Like

So - I just tried out the loading screen I had made in VR.
Using Camera.CFrame, the contents of the loading screen appeared a few studs behind me, while using UserInputService:GetUserCFrame(Head) made the contents of the loading screen appear in the baseplate in front of me.

So just how exactly are we given the coordinate of the viewer’s head? If I want to encapsulate them in a sphere.

edit: with forced 1st person view, offsetting the bricks some studs and rotating 90 degrees(?) made the trick. :neutral_face:

Either Camera.CFrame*GetUserCFrame(Head) or Camera:GetRenderCFrame() would do it.