Firestorm VR – Resources

Peter Kappler <pete@gsgrid.net> [YouTube Channel] (PWNED Magic in Second Life) has created a VR version of the Firestorm Viewer using OpenVR/SteamVR that should be compatible with Vive, Oculus Rift, and Windows Mixed Reality headsets (HMDs).

Wagner James Au blogged on this in January and February 2019, and David Rowe, creator of the CtrlAltStudio VR viewer, pointed me at this development just in time since CtrlAltStudio now has a messy visual glitch on exit to the operating system [Blog Post on CtrlAltStudio VR Viewer].

https://nwn.blogs.com/nwn/2019/01/windows-mixed-reality-firestorm-sl-vr-open-source.html
https://nwn.blogs.com/nwn/2019/02/firestorm-sl-open-source-vr-viewer.html

YouTube Video: Second Life Firestorm VR V0.3 test, 27 Feb 2019:
https://www.youtube.com/watch?v=Y0_PQBQ_E4I

Download

Here is the source code and compiled version (currently based on Firestorm 6.0.1.57000):
http://gsgrid.net/FirestormVR_Source_V_0_3.rar
http://gsgrid.net/Phoenix601VR-V0.3.rar

Installation

  • Install the special version of the Firestorm viewer.
  • Put the openvr_api.dll contained in the compiled version .rar/.zip in to the freshly installed firestorm folder with all the other dlls.
  • Start SteamVR. [Install SteamVR if you don’t already have it available.]
  • Start Firestorm.

Once you are logged in:

  • Go to Preferences -> Move & View and set the Field of View to 1.80 (default 1.04)
  • Go to Preferences -> Graphics-> Steam VR Tab and tick to enable Steam VR. (a viewer restart may be needed, so do that to be sure)

For the Oculus Rift these settings should also be adjusted:

  • Preferences -> Graphics -> Steam VR -> Texture Shift: Set to 0 (the default) for Oculus Rift DK2, and set to 200 for Oculus Rift CV1. If you have double vision in VR mode in your HMD, move this setting until the image is in sync.
  • Preferences -> Graphics -> Camera distance from center: Set to your inter-pupil distance (IPD) to get a good 3D image. If this setting is not accurate the 3D view can look too layered on Oculus Rift. Note that a setting of 0 means the image will be 2D.

Xbox One Controller

An Xbox One controller as used with the Oculus Rift (or an Xbox 360 controller) can be enabled, as usual, in Firestorm via Preferences -> Move & View -> Movement -> Joystick Configuration -> Enable Joystick.

You will probably find the controls are under or over sensitive, or some buttons and triggers don’t do what you expect. See this blog post and the image here (click for a larger version) for some suggestions as to how to amend the settings…
https://hugsalot.wordpress.com/2012/12/03/joystick-settings-for-firestorm-with-xbox-360-controller/

You might want to enter “-1” rather than axis “5” as an indication that axis is not mapped. With the setup suggested the “A” button toggles between the normal avatar view and “FlyCam” mode allowing you to move the camera separately to the avatar.

Usage

PRESS TAB key to enable and disable VR output.

The Camera Controls floater has two extra buttons << and >> to let you turn the angle at which your camera points.

If you move the mouse to one of the four corners of the screen the HMD view jumps to show that corner in VR mode. This enables menus and HUD attachments to be more easily reached. Return the mouse to the centre of the screen to return to normal HMD directional view.

The Firestorm VR Viewer will not work well if the Second Life/OpenSim region you visit cannot normally be displayed with a decent frame rate. The higher the better. At low frame rates bad flickering will occur in VR mode. My suggestion is to look at the framerate (in Firestorm it is displayed in the upper right hand corner of the viewer) and to adjust the graphics settings (especially draw distance and quality sliders) until you have around 50fps (30fps min.) and then try VR.

On my Oculus Rift setup SteamVR usually was launched whenever the Firestorm VR viewer was started, and that automatically started the underlying Oculus software. But if the SteamVR or Oculus Home screens shows in the HMD or the HMD is blank rather than showing the Second Life/OpenSim virtual world display, start SteamVR first, check Oculus Home is launches, and then run the Firestorm VR viewer.

Tips

Tips from using CtrlAltStudio Viewer that may be relevant:

  1. To improve your frame rate, reduce your draw distance and/or tweak other display settings such as advanced lighting model, shadows, FOV, pixel density, etc.
  2. Make sure you don’t have Preferences > Graphics > Rendering > Limit Framerate enabled.
  3. You can use keyboard shortcuts to show and hide dialog boxes such as the Conversations window (Ctrl-T), Inventory (Ctrl-I), e.g., if you want to select a landmark to teleport to, Ctrl-Shift-M to display the minimap, etc. Keyboard shortcuts are shown beside menu items.
  4. To display avatar toasts in the Rift — Preferences > Chat > General > Show chat in bubbles above avatars.
  5. With floating text you may want to adjust the distance the floating text fades at so that distant text is not so annoying in Riftlook: Preferences > Graphics > Rendering > Floating text fades.

Debug Settings

There is a Firestorm Viewer Debug Setting “EnableSteamVR”. This performs the same function as the Settings -> Graphics -> Steam VR -> tick on/off. Default Off.

There is a Firestorm Viewer Debug Setting “TextureShift”. This performs the same function as the Settings -> Graphics -> Steam VR -> Texture Shift. This may need to be adjusted for different VR headsets. I found it could be left at the default setting of 0 for the Oculus Rift DK2, and needed to be set to +200 for the Oculus Rift CV1. Adjust this if you have double vision in VR mode.

There is a Firestorm Viewer Debug Setting “EyeDistance” to adjust the interpupil distance (IPD). This performs the same function as the Settings -> Graphics -> Steam VR – Camera distance from center slider. This is an important setting to get good 3D depth. Set it to the Interpupil distance for your headset (64mm is a sensible default). If set to 0mm the image will be 2D. If set wrongly you may find that the 3D effect is in distinct layers or not as good as it can be.

Firestorm JIRA

A Firestorm JIRA Issue relates to this…
https://jira.firestormviewer.org/browse/FIRE-24047

This JIRA issue has comments concerned over low frame rates and poor support for all the menus, popups and creator/editing facilities in Second Life and OpenSim. Personally, I don’t think ALL the creator/build menu facilities are needed all the time, and those can be done by switching back into VR mode… which is easy with the TAB key method uses to switch between 2D and VR mode. Concerning frame rates, some users are probably seeing very busy mainland regions with tens of thousands of objects. When I use Firestorm on OpenSim builds with a few avatars in training modes I can get 160fps frame rates! And high frame rates when we have used private regions on Second Life for educational meetings.

User Experience with Firestorm VR 6.0.1

  1. Question: In the Steam VR settings tab, what does “Zoom out the display” do?
  2. Text: Peter Kappler’s notes indicate “The slider “Lens distance” lets you adjust the distance between the 2 cameras to improve stereo depth separation. ((There is a bug with world not updating while slider > 0)). Slider set to 0 uses only 1 camera (non-stereo) and doubles your fps.“. There is not a “Lens Distance” slider… but it is the Steam VR tab setting for “Camera distance from center”.
  3. Improvement: The “Texture Shift” slider is difficult (impossible?) to reset to 0 if needed. You can instead set it to 0 (or any specific value) via the Debug Settings for “TextureShift”.
  4. Bug:The default value set for “EyeDistance” in Debug Settings is 0.064. It should be 64.0. I.e. in millimetres not metres. It can be amended in
    <firestorm-install-dir>/skins/default/xui/en/panel_preferences_graphics1.xml
  5. Improvement: The mouse cursor in VR mode only shows as a simple arrow pointer. It does not change to the custom cursors such as seat, hand, etc as active items are pointed at.
  6. Bug: The Debug Setting descriptive text for “TextureShift” is incorrect. It is a copy of the descriptive text for “EyeDistance”.
  7. Bug: On the Camera Controls tool, after using the <> added buttons the circular movement controls get squashed to the lower left or disappear.
  8. Clarification: F5 button is described as disabling and enabling HMD direction changes. Peter’s read me text says that it is better to disable HMD direction interface when editing and flying with the camera. Does this work as described? F5 seems to make the screen view go further away rather than showing a view that fills the visual field.
  9. Improvement: Change the app_settings\grids.xml loginpage strings for the Second Life and Second Life Beta grids to http://viewer-login.agni.lindenlab.com/ rather than http://phoenixviewer.com/app/loginV3/

Amended Firestorm XML Configuration Files

I have created two amended .xml configuration files which can be placed in the special version Firestorm installation directory to (hopefully) improve some of the Settings tool tips, and correct two of the bugs described above…

<firestorm-install-dir>/app_settings/settings.xml
<firestorm-install-dir>/skins/default/xui/en/panel_preferences_graphics1.xml

Obtain these at:
http://openvce.net/resources/downloads/Firestorm-VR-6.0.1/

Sample Tests

Some specific figures I observed on one Second Life scene trying to make the view distance (256m), graphics settings (High), etc the same…

  • Linden Lab 6.2.4 96-106fps
  • Firestorm 6.0.2 176-188fps
  • Firestorm VR 6.0.1 2D mode 136-144fps
  • Firestorm VR 6.0.1 VR mode 82-84fps

Put simply it looks roughly like Firestorm 6.0.2 100%, Firestorm VR 6.0.1 2D mode 75%, Firestorm VR 6.0.1 VR mode 50%. But the 6.0.1 VR mode is still roughly the same as the Linden Lab 6.2.4 viewer in 2D mode.

The following images were take on a Dell Precision T5180 with 32GB Memory and Nvidia GeForce GTX 1080 GPU, with Ultra graphics settings and 512m view distance.

On OSGrid RuthAndRoth region showing approx. 50fps in VR HMD mode…

On OSGrid Black Rock region showing approx. 40fps in VR HMD mode, nearer 75fps when seated in the vehicle…

HMD Black Screen on TAB

Unfortunately after a successful initial test period and what appeared to be a working setup I experienced the (Oculus DK2) HMD screen going black when switching to VR mode in Firestorm VR via the TAB key. And whatever I tried did not seem to fix it. I tried reinstalling Steam and SteamVR, uninstalling and reinstalling afresh both, upgrading to the Steam and SteamVR Betas, downgrading again to the release versions, and reinstalling Firestorm VR.

The following worked for me after the black screen in the HMD TABbed view occurred…

Start Firestorm VR… turn off the Steam VR enabled tick box. Change the graghics settings (I went between High and Ultra or vice versa). Then DO NOT enter VR mode with TAB. Instead stop Firstorm VR, SteamVR (and Oculus Home). Then launch Firestorm VR again, tick Steam VR enabled (I did that before login but that may not matter) and TAB to VR. My assumption is that something about the gpahics settings interferes with the VR mode HMD display unless the settings are committed in some way when a relog and Steam VR enable takes place. Just ticking Steam Enabled on and off while its running does not seem to fix this problem.

Peter Kappler gave me feedback which indicates it could indeed be related to specific graphics settings or changing them…

There are people that have issues with having tracking but no image.
It may have something to do with deferred lighting or shadows in the viewer.
Or GPU buffer settings since I copy the images directly from BACKBUFFER before swap.

This entry was posted in OpenSim, Second Life, VR and tagged , , , , , . Bookmark the permalink.

8 Responses to Firestorm VR – Resources

  1. Kristof says:

    Hey how does the TAB key work? because when i press tab i just cycle trough fields or buttons on my screen. I see nothing in my headset, nor do i see a stereoscopic view.

    • bat says:

      Kristof… that sounds like the VR mode is not kicking in. Install StreamVR in Steam if you have not already done that. Check you put the openvr_api.dll in the special version Firestorm install folder, where other .dlls are, and checked SteamVR on in the Settings -> Graphics-> StreamVR tab. Maybe restart the viewer then to be sure, though I did not find that was needed. Start Steam and make sure you also start SteamVR. Then launch the viewer… make sure it starts, launches the Oculus app (assuming you are using Oculus Rift) which will happen automatically when you start SteamVR. Then try again abd fingers crissed.

      • Really useful stuff, thanks! How good is the performance in terms of framerate and fidelity?

      • bat says:

        Fidelity is very good… once I realised I had to set the “EyeDistance” accurately to the same setting as my HMD Inter-Pupil Distance (IPD). Otherwise it looks more like a series of layers if that is out too much.

        I was just testing frame rate and posted an extra section on the end of the blog post. Of course it depends on the framerate that can be achieved in the region and with the graphics settings. I just posted some tests with Firestorm VR 6.0.1 in VR mode compared to Firestorm 6.0.2 (no VR) with same scene, same settings, etc. It looks to me like framerate is only down 25% or less in VR. I will be doing a much more careful comparison in the coming days for a separate blog post.

        I had a mainland region Houseboat on a very busy Second Life region that barely achieves 10fps in normal views, and that definitely did not work in VR, it flickers very badly.

  2. bat says:

    Warning: My Steam software updated from the Aug 5, 2019 version to Aug 12, 2019 and now when switching to VR mode in Firestorm VR I just get a black screen in the HMD. I cannot see any other changes in the environment. SteamVR is still 1.6.10. Nvidia GPU drivers are identical at 431.60 07/23/2019. Still investigating but something seems to have happened with this Steam update.

    Update: After trying various fixes, reinstalling Steam and SteamVR seems to have fixed this issue even though the Steam version appears to be identical after the update (Aug 12, 2019) and SteamVR is still 1.6.10.

    Update: Most annoyingly, after working fine most of the day, suddenly for no apparent reason the HMD view again goes black when switching to VR mode using TAB. Still exploring why.

    I tried reinstalling Steam and SteamVR, uninstalling and reinstalling afresh both, upgrading to the Steam and SteamVR Betas, downgrading again to the release versions, and reinstalling Firestorm VR.

    It looks like this problem relates to certain graphics settings that may be incompatible with OpenGL and SteamVR. More experimentation needed to find out exactly which.

  3. bat says:

    People have asked what sort of rig I am using to get good frame rates…

    Dell Precision T5810 with Xeon CPU E5-1620 v3 @3.50GHz.
    32GB Memory, SSD drives, Nvidia GeForce GTX 1080 GPU.
    100Mbps broadband connection at home, 1Gbps at work.
    Oculus Rift DK2 at home, CV1 at work.

    On OpenSim regions I frequently see high frame rates. I usually have the Firestorm window set at pretty much full screen at 1920×1200 and use Ultra settings, all shadow options on, and 512m draw distance, though I up that for snapshots.

    For VR I usually go down to High graphics settings (rather than Ultra) and 128m draw range (rather than 512) and the Firestorm viewer window at around 2/3rds of the screen.

    Just tried Second Life Bellisseria Houseboat region in Firestorm 6.0.2. I get 150-180fps using High quality and 128m draw distance, but that drops to 16fps (!) when I use High and 512m draw distance on that same view… as there is so much content within view. And then another drop to 8fps if I use Ultra graphics quality settings. So on Second Life regions the draw distance, and hence number of objects in view, is the critical thing.

  4. bat says:

    A lot of people may think you need frame rates up near 75fps or 90fps continuously for good VR or to avoid nausea… but modern HMDs and the software that drives them have a lot of tricks up their sleeves to allow good smooth images even when frame rates vary up and down or are too low…

    Note from Peter Kappler, 17-Aug-2019:
    SteamVR has in its default config file (default.vrsettings) the “motionReprojectionMode” setting which is the same as Asynchronous Spacewarp (ASW) for Oculus Rift and “motionSmoothing” for Vive. If enabled the HMD basically doubles the FPS by interpolating the images in HMD’s movement direction and is showing them twice… which looks way smoother than without. It is automatically enabled on Oculus Rift and SteamVR by default.

    For more details see https://steamcommunity.com/games/250820/announcements/detail/1705071932992003492
    and https://developer.oculus.com/blog/asynchronous-spacewarp/

    Note: This feature is ready to kick in the moment a SteamVR application starts dropping frames and shuts off when no longer needed. Of course, if you prefer to run without this feature, just look under SteamVR Settings -> Video or Settings -> Applications to control when it is enabled.

    Vive HMD typical path for default.vrsettings file is…
    …\Steam\steamapps\common\MixedRealityVRDriver\resources\settings\default.vrsettings

    The feature may not be explicitly available as a setting for Oculus HMDs… but a typical path for default.vrsettings file is…
    …\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings

Comments are closed.