These notes were originally posted on the Discord Firestorm VR Mod channel to explain the history behind the various 3D and VR Viewers for Second Life and OpenSim. They are collected together here for convenience.
Pre-VR HMD 3D Approaches
The 3D Lab at the University of Michigan (Eric Maslowski) added 3D stereoscopic viewing capabilities to the Second Life viewer via a patch in 2007.
https://jira.secondlife.com/browse/VWR-2972 [Internet Archive]
Around 2008 Dale Glass created a version of the Second Life viewer 1.18.3/1.18.4 that included the University of Michigan stereoscopic code with mods to make it more configurable. Details at http://sl.daleglass.net/ with source at http://svn.daleglass.net/sl/.
From mid 2011 Kirsten’s Viewer added a 3D anaglyph (red/cyan glasses) viewer capability.
https://blog.inf.ed.ac.uk/atate/2012/03/04/second-life-viewing-in-3d-with-redcyan-glasses/
https://blog.inf.ed.ac.uk/atate/2017/05/05/second-life-in-anaglyph-3d-using-kirstens-viewer/
https://blog.inf.ed.ac.uk/atate/2020/04/11/kirstens-viewer-update-with-anaglyph-3d/
From 2014 David Rowe in the CtrlAltStudio viewer added 3D stereoscopic capabilities for anaglyptic (red/cyan) glasses to modify Firestorm. It could also support the Nvidia 3D active shutter glasses with 100Hz monitors (dithered between two images). CtrlAltStudio also added gesture tracking with the Microsoft Kinect Sensor.
David Rowe’s CtrlAltStudio
When the Oculus VR headsets first appeared, David Rowe amended CtrlAltStudio to do very nice VR support for the Oculus Rift. It was later amended when the Oculus Rift DK2 and software drivers appeared that allowed a more direct feed to the HMD. This approach gave a really good crisp image. But it needed a lot of maintaining, so as soon as LL said they were doing a VR viewer he stopped development of CtrlAltStudio. His approach though is probably still the best we have seen.
https://blog.inf.ed.ac.uk/atate/2014/08/20/oculus-rift-dk2-ctrlaltstudio-viewer-tests/
https://blog.inf.ed.ac.uk/atate/2015/10/16/virtual-reality-in-second-life-and-opensim-using-the-ctrlaltstudio-viewer/
https://blog.inf.ed.ac.uk/atate/2016/07/12/testing-ctrlaltstudio-viewer-1-2-6-43402/
https://blog.inf.ed.ac.uk/atate/2016/07/19/ctrlaltstudio-viewer-1-2-6-43412-performance-testing/
Technical Approach: description to be added |
@Hypnos on Discord commented… the CtrlAltStudio approach used variable focus based on distance to camera, adjusted to the scale of Second Life/OpenSim. |
Linden Lab Experimental VR Viewer
VoidPointer Linden developed the LL VR viewer through several versions and I worked with him at the time as things developed using the repository nightly builds and giving him a lot of feedback. VoidPointer was a real enthusiast for VR and even was a kickstarter backer for the original Oculus. The viewer was in my opinion almost ready to go for users willing to make sure the frame rate was appropriate for the area being used. The viewer did try (in my opinion) to put too much into VR mode… making lots of tools and windows/menus etc be in the 3D space. It assumed everyone would keep their headset on 100% of the time (as did Sansar and High Fidelity). I think personally that’s a mistake. I believe people will use 2D for most things and switch to 3D for the immersive experience when needed.
But it got put to one side as I think they thought frame rates could not be high enough. Then they really ruined it in its very final version .. NOT by VoidPointer Linden who had left by then. I understand a summer intern worked on it. Basically it was rubbish when that version was released and that seemed to be an indicator to Philip Rosedale (still there at the time) that it should be scrapped as a development route. If they go back to their approach they must ditch all the mods made in that final summer – i.e. go back to VoidPointer’s last commit.
Note added 30th April 2024 from Discord Second Life Channel discussion: Davep (Runitai Linden) it turns out worked with VoidPointer Linden on the LL VR viewer… he said this “the VR mode Voidpointer Linden and I did a decade ago wasn’t nearly that much of a (50%) FPS hit (we reused the shadow maps and only did one frustum cull for both eyes)” and “I have no idea what happened to it… I was working with VoidPointer on it then got pulled back onto Sansar and next thing I knew it was gone”.
The Linden Lab VR Viewer was using the code “DRTVWR-344” (“DRTVWR-344_viewer-hmd”) from https://bitbucket.org/lindenlab/viewer-hmd (no longer accessible). The final successful nightly automated build was on 11/11/2014 (this link) but that had the issues described above.
Request to add the “DRTVWR-344” https://bitbucket.org/lindenlab/viewer-hmd development branch to GitHub repository for secondlife/viewer made in this issue (15-Feb-2024): https://github.com/secondlife/viewer/issues/810
Alternative Approaches Using Generic VR Packages
VorpX allows some applications and games not specifically designed for VR headsets to work in 3D/VR mode. It should work with Second Life, Firestorm and other virtual world viewers.
On a test of vorpX again with the most recent version in February 2022, the tool did not seem to attach to Firestorm to provide VR capability.
Peter Kappler’s Firestorm VR Mod
Finally, from 2019 Peter Kappler created his VR Mod to Firestorm code using the SteamVR headset independent approach (so it should work with any headset make) with the intention of making an easier to insert and hence maintain approach. But its a simple approach and basically halves the frame rate, and the image quality and size is limited by the size of the 2D monitor in use… unless some techy settings are changed. Folks with 4K monitors report excellent image quality. I have a 1920×1200 monitor and on my Oculus CV1 and DK2 the image looks fine, but not as crisp as CtrlAltStudio. But the advantage is that we are able to insert the VR Mod code into Firestorm releases as they are made.
Technical Approach: Low impact insertion code to make updates easier. 3D depth quality is not as good as CtrlAltStudio and Linden lab viewer approaches were. |
@humletim on Discord along with an approach initiated by @thoys on Discord set up an automated build process for Firestorm VR Mod using Peter Kappler’s code (version 6.3.3 still being the current version which continues to work) and release versions of Firestorm to use “GitHub Actions” (GHA) to build releases of Firestorm VR Mod. This has been used since Firestorm 6.4.12 to make the release most people use and continues to work up to Firestorm 6.6.17 at March 2024.
https://blog.inf.ed.ac.uk/atate/2019/11/28/firestorm-vr-mod-6-3-3/
https://blog.inf.ed.ac.uk/atate/2020/12/11/firestorm-vr-mod-6-4-12/
https://blog.inf.ed.ac.uk/atate/2024/03/17/firestorm-vr-mod-6-6-17/
Variants of Firestorm VR Mod
A few people are experimenting with using the video frame buffer differently to get higher quality VR images but none have made it to a stage where most people use their experiments yet. The Discord group for Firestorm VR Mod has folks discussing those changes.
@sgeo on Discord created a variant of Peter Kappler’s code which sets the VR settings automatically for the various VR HMDs rather than needing the FN keys to set them up. More details via this blog post.
Cuteulala Artis told me how she improved Peter Kappler’s code. She said “Yes his VR viewer needed a lot of work. I remove the adjustment settings and things and made it automatic, made the cameras superiorly smoother and added hand tracking with physics”. But this work has not been posted publicly.
Future Developments – Crystal Frost
In 2022 GitHub JennaScvl (Berry Bunny in Second Life, Kallisti#2038 on Discord) announced work on a Unity-based viewer for Second Life and OpenSim and said a VR version would be included in her work.
Some experiments on 12-Mar-2024 by @GeenzVR to incorporate OpenXR into the Second Life viewer are reported on Twitter/X at https://twitter.com/geenzvr/status/1767501656600821793?s=58&t=0j5Oyra9DJUF4vI4rssR8Q
They include a commit into the Second Life code base in a branch https://github.com/secondlife/viewer/compare/geenz/openxr-enablement with a commit at https://github.com/secondlife/viewer/commit/b8465f5a479259675fff4f965dadad7794555a62
The code is based on a sample at https://gitlab.freedesktop.org/monado/demos/openxr-simple-example/