Download

[VR] Creating simple loading screen between levels

How hard is it to create simple loading screens between each level? How does one go about this?

One of my levels is quite large and takes some time to load… I think it would just be helpful to have the player look at a load screen vs some blank or generic Steam VR screen while it’s loading. They may feel like the game has frozen or broken.

@vr_marco

Thank you. Splash Screens I guess was the keyword to look for. I had no clue. :wink:

You can also load a 3d stereo or cubemap if you are using SteamVR to replace the home environment during load. I have nodes to support that in the OpenVR plugin.

@mordentral

Where should I look for examples of this in the template/plugin? Googling Unreal Cubemap makes it seems like it wouldn’t be all that difficult to create. What are the differences or benefits of a 3d Stereo vs Cubemap?

Would I load this just before the Load Next Level?


    // VR compositor

    // Override the standard skybox texture in steamVR - LatLong format - need to call ClearSkyboxOverride when finished
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool SetSkyboxOverride_LatLong(UTexture2D * LatLongSkybox);

    // Override the standard skybox texture in steamVR - LatLong stereo pair - need to call ClearSkyboxOverride when finished
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool SetSkyboxOverride_LatLongStereoPair(UTexture2D * LatLongSkyboxL, UTexture2D * LatLongSkyboxR);

    // Override the standard skybox texture in steamVR - 6 cardinal textures - need to call ClearSkyboxOverride when finished
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool SetSkyboxOverride(UTexture * tFront, UTexture2D * tBack, UTexture * tLeft, UTexture * tRight, UTexture * tTop, UTexture * tBottom);

    // Remove skybox override in steamVR
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool ClearSkyboxOverride();

    /** Fades the view on the HMD to the specified color. The fade will take fSeconds, and the color values are between
    * 0.0 and 1.0. This color is faded on top of the scene based on the alpha parameter. Removing the fade color instantly
    * would be FadeToColor( 0.0, 0.0, 0.0, 0.0, 0.0 ).  Values are in un-premultiplied alpha space. */
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool FadeHMDToColor(float fSeconds, FColor Color, bool bBackground = false);


    /** Get current fade color value. */
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool GetCurrentHMDFadeColor(FColor & ColorOut, bool bBackground = false);

    /** Fading the Grid in or out in fSeconds */
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool FadeVRGrid(float fSeconds, bool bFadeIn);

    /** Get current alpha value of grid. */
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool GetCurrentVRGripAlpha(float & VRGridAlpha);

    // Sets whether the compositor is allows to render or not (reverts to base compositor / grid when active)
    // Useful to place players out of the app during frame drops/hitches/loading and into the vr skybox.
    UFUNCTION(BlueprintCallable, Category = "VRExpansionFunctions|SteamVR|Compositor", meta = (bIgnoreSelf = "true"))
        static bool SetSuspendRendering(bool bSuspendRendering);

These functions are all available on the OpenVR plugin module that comes with the plugin. They are accessible in blueprint.

@mordentral Where/how do I get the OpenVR plugin? And how would I access it within a blueprint to change it?