Been a while since my last post…and that was on the old forums. Happy to be posting this on a shiny new forum!
Today (7/7) is the birthday of Cinder’s fearless leader, Andrew Bell. There’s no known history of any Cinder birthday traditions so in following with that - I’d like to wish him a “Happy Birthday!” along with introducing Cinder-VR: https://github.com/cinder/Cinder-VR
Nothing says caring like C++.
VR is pretty hot right now - and it’s also fun to play with! About a month ago, we set out to consolidate VR functionality into one place and try to make it as accessible to Cinder users as much as possible. Poor @num3ric had to endure endless questions about the Oculus Rift - hopefully he’ll forgive me one day. Starting with @num3ric’s Cinder-OculusRift Block the design was evolved to incorporate OpenVR for the HTC Vive.
Currently, OpenGL is the default and only supported render. We’re looking into making Vulkan possible in a sane way.
Cinder-VR will attempt to automatically detect which headset is present when it starts up. It has not been tested on a system with both plugged in. If someone has this config, please let us know how it turns out.
What APIs are used?
Oculus Rift - Oculus SDK
HTC Vive - OpenVR (Rift doesn’t always play nice with OpenVR - so that combo is not recommended)
What controllers are supported?
Oculus Rift - Remote and Xbox controller (Touch will be added once it’s released)
HTC Vive - Vive Controllers
There were two primary design goals:
Support major devices (Rift and Vive for now) that accessible to Cinder users
Create common coordinate system between the different environments (Rift and Vive)
As far as coordinate systems go, the major things to know:
Device Coordinate System - coordinate system that’s local to the device (similar object space for those familiar with 3D packages)
Tracking Coordinate System - base coordinate system that’s used by the device to track its position.
World Coordinate System - coordinate system defined by an “origin” matrix applied to the Tracking Coordinate System to move the origin into a more accessible place.
The samples provide an idea of how all this comes together. More samples to come soon! @bantherewind has been talking one up.
Please check it out and let us know what you think! This is the initial release, so still very much a WIP. We welcome any feedback to improve the design so Cinder-VR becomes a solid VR solution taht works for Cinder users!
Our Vive finally arrived today and I got to fire this up - worked perfectly right out of the box. Thanks for this Hai - one of the best and probably the most abstract birthday gift I’ve ever received :).
A quick question here - It has been asked before in this discourse with no answer. I have a HTC Vive and starting the view works fine and all, but what if I want to stop rendering to vive device (monitor only). endSession @ openvr causes cinder to crash. Any ideas on this topic?
Edit: Visual Studio outputs a warning that some files output same obj file - it makes a difference which (Context.cpp for example) file was being built last. Renaming \cinder\vr\context.cpp to \cinder\vr\icontext.cpp (controller, device manager too) resulted in a different obj to be build and endSession working properly. A quick patch.