Hi all,
I am in the early stages of planning a new research project involving spatial audio and learning. It basically involves a VR headset and a fairly straight forward OpenGL application.
I was just interested to hear about anyone else's experience with it. There is not much actual technical knowledge on the internet other than kids just fiddling about with VR plugins in toys like Unity. So far my findings:
For the Oculus Rift, Facebook's libOVR is Windows only and the older versions are Linux only. It is a shame, I really quite liked the look of this API for the binding between OpenGL, you basically just create some GL frame buffers and attach them to the system. I am quite happy to use an older hardware (Oculus Rift DK1/2) but I am past the point where I actually can be arsed with Linux any more XD
For the HTC Vive, Valve has created what initially looked great, called OpenVR, basically a specification that wraps many VR headsets. Unfortunately the only implementation is called SteamVR where it has a dependency on Steam which I simply cannot accept the license agreement of (I don't like to be digitally raped). Also this is Windows, Ubuntu and macOS only without frigging about with Wine (if it wasn't for the Steam DRM, I would possibly take this route). I have very little respect for developers who tie their own work and efforts to invasive DRM schemes like Steam. Valve has really done a disservice to the VR community here, shame on them.
So the next is OSVR (Open-Source VR) which is basically vapourware with a bunch of hardware offerings which simply do not exist to purchase. I hate this kind of thing.
So next is OpenXR (https://www.khronos.org/openxr) - Khronos's offering. Now I like OpenGL as a specification but unfortunately there are very few implementations of the OpenXR spec. Loads of companies (Valve, Facebook) all are members, but have not contributed *any* code. What a bunch of absolute arses. Ultimately I predict that OpenXR will be dominant in the future. There is one implementation called Monado which is Linux only and looks fairly OK but then I saw that it depends on OpenHMD...
OpenHMD (http://www.openhmd.net/) used directly so far looks to be the best solution for VR. It's provided drivers supports some Oculus Rift hardware and the Vive hardware (rotation sensors supported but no movement or input, which is fine for this project).
The drivers themselves are all provided with OpenHMD in a monolithic manner, this is great.
It provides its own API which is a little bit manual, i.e you need to simply render the scene twice with different view matrix and also compile up a suitable distortion shader to undo the lenses bending the light but it all looks manageable and there is some (messy and outdated) sample code that does the general tasks using the fixed function pipeline. That said, these guys look like the only people to have actually done some work, reverse engineering the crap churned out by the VR corporations.
So I have compiled a binary up on FreeBSD and it is running with a dummy device but unfortunately I have display port on my GPU not HDMI, so I will have to resume it later this week with an (ironically) older GPU! The great news is that you don't need a stupidly high end gamer graphics card to use, unlike the proprietary drivers and the artificial limitations in the proprietary installers. It seems it is even runnable on a Raspberry Pi (http://www.openhmd.net/index.php/showcase/vr-zero-pri/)
So, that is my findings this far. All in all, it was a terrible state of affairs, overly monetising a very early technology almost to death. Almost everything is for a consumer, everything is pretty flakey and hobbiest. I will keep this thread up to date if I run into any other issues.
tl;dr
VR is a mess on all platforms, but it seems like it can work if you avoid all the idiots. How is anyone else finding it?
I am in the early stages of planning a new research project involving spatial audio and learning. It basically involves a VR headset and a fairly straight forward OpenGL application.
I was just interested to hear about anyone else's experience with it. There is not much actual technical knowledge on the internet other than kids just fiddling about with VR plugins in toys like Unity. So far my findings:
For the Oculus Rift, Facebook's libOVR is Windows only and the older versions are Linux only. It is a shame, I really quite liked the look of this API for the binding between OpenGL, you basically just create some GL frame buffers and attach them to the system. I am quite happy to use an older hardware (Oculus Rift DK1/2) but I am past the point where I actually can be arsed with Linux any more XD
For the HTC Vive, Valve has created what initially looked great, called OpenVR, basically a specification that wraps many VR headsets. Unfortunately the only implementation is called SteamVR where it has a dependency on Steam which I simply cannot accept the license agreement of (I don't like to be digitally raped). Also this is Windows, Ubuntu and macOS only without frigging about with Wine (if it wasn't for the Steam DRM, I would possibly take this route). I have very little respect for developers who tie their own work and efforts to invasive DRM schemes like Steam. Valve has really done a disservice to the VR community here, shame on them.
So the next is OSVR (Open-Source VR) which is basically vapourware with a bunch of hardware offerings which simply do not exist to purchase. I hate this kind of thing.
So next is OpenXR (https://www.khronos.org/openxr) - Khronos's offering. Now I like OpenGL as a specification but unfortunately there are very few implementations of the OpenXR spec. Loads of companies (Valve, Facebook) all are members, but have not contributed *any* code. What a bunch of absolute arses. Ultimately I predict that OpenXR will be dominant in the future. There is one implementation called Monado which is Linux only and looks fairly OK but then I saw that it depends on OpenHMD...
OpenHMD (http://www.openhmd.net/) used directly so far looks to be the best solution for VR. It's provided drivers supports some Oculus Rift hardware and the Vive hardware (rotation sensors supported but no movement or input, which is fine for this project).
The drivers themselves are all provided with OpenHMD in a monolithic manner, this is great.
It provides its own API which is a little bit manual, i.e you need to simply render the scene twice with different view matrix and also compile up a suitable distortion shader to undo the lenses bending the light but it all looks manageable and there is some (messy and outdated) sample code that does the general tasks using the fixed function pipeline. That said, these guys look like the only people to have actually done some work, reverse engineering the crap churned out by the VR corporations.
So I have compiled a binary up on FreeBSD and it is running with a dummy device but unfortunately I have display port on my GPU not HDMI, so I will have to resume it later this week with an (ironically) older GPU! The great news is that you don't need a stupidly high end gamer graphics card to use, unlike the proprietary drivers and the artificial limitations in the proprietary installers. It seems it is even runnable on a Raspberry Pi (http://www.openhmd.net/index.php/showcase/vr-zero-pri/)
So, that is my findings this far. All in all, it was a terrible state of affairs, overly monetising a very early technology almost to death. Almost everything is for a consumer, everything is pretty flakey and hobbiest. I will keep this thread up to date if I run into any other issues.
tl;dr
VR is a mess on all platforms, but it seems like it can work if you avoid all the idiots. How is anyone else finding it?