Oculus Rift

Hi all. I was wondering if anyone has made more headway on the oculus integration. I just received my oculus and started working on it myself, though I’m not particularly experienced in c++. I’m happy to keep working on it, but it sounds like some of the users here are much more familiar with this sort of thing (sorry to not contribute anything meaningful to this topic!).

I’m still working on it, though I regret that progress is going slow on my side. Sorry, guys. I’ll have some progress soon.


Sorry to be another person bothering you, but is there any progress on this? :slight_smile:

Finding a Linux based engine that supports the Rift is hard :frowning: I’d love to be able to use Panda.

I’m interested too.

Oculus Rift SDK 0.3.1 preview release just came out.

I was going to announce that Oculus Rift support was more or less finished a few weeks back, but I just wanted to wait until they would bring out the new SDK in case they would make some API changes. I did not expect for them to change the SDK so drastically, though; it seems to be a complete overhaul, and also completely changes the way that they do distortion. I’ll probably have to significantly re-engineer my current approaches.

Amusingly, they did change their distortion approach to what I was doing earlier in the thread: using a mesh with distorted UVs. However, it seems that they want to do everything in the SDK now; you now have to pass an OpenGL texture ID of the render-to-texture result. This probably requires more changes to Panda’s internal system to expose this information. I was going to make Panda handle the distortion automatically as part of some sort of general-purpose non-linear distortion system, but that’s out of the question now.

More will follow later as I try to wrap my head around their new API.

Hy Guys,

first, I would recommended to not throw away your (rdb) first approach - to build general-purpose non-linear distortion system! I hope that the code is banned to your version control :slight_smile: It’s a great idea, regarding the fact that a bunch of other devices will enter the market (e. g. Dive or Project Morpheus) and we don’t know which open source approaches are available in the next years. Furthermore, a non-linear distortion is also interesting for other kinds of 3d enviroment applications, like exhibition demos or cave implementations!

So if panda could provide such a feature, it becomes interesting besides e.g. Unity3D as a player on real open source and free software side…

However, looking forward to your implementation! Good luck!

Thanks. I never throw good code away, but I plan to start using the SDK’s distortion for the Oculus Rift support.

Any news/progress on this? Have you looked at last version of the SDK (0.4)?

/Daniel - waiting on a DK2

Hey guys,

I am a cognitive science student trying to set up an psychological experiment using the Oculus and an 3D Engine.

I just came across Panda and it seemed perfect. I am using the Oculus DK 1 currently. From what I have read in this forum
I am unsure wheter Oculus DK 1 is being supported in Panda 3D up until now?
If so where can I find documentation on setting it up

Thanks a lot!!


It’s not currently supported. I’ve got a lot of code written so far but it’s not ready to check in yet. The 1.9 release cycle has delayed my progress quite a bit, but it’ll be the first thing I work on after it is released.

Well, 1.9 has been out for a while.

Indeed! I’ll have an update coming up soon. You can count on official support coming to the 1.10.0 release.

They changed the API again quite a bit for the latest release of the 0.6.0 SDK, sigh. It’ll take a bit more work to upgrade the Panda implementation appropriately.

It’s a bit disappointing that Oculus decided no longer to focus on Linux and Mac, though. Their latest SDK versions have very spotty support for Linux as it is. I managed to get some workarounds for this in the Panda code, but it might still be necessary to use an outdated SDK for at least the DK1 on Linux.

I might also investigate Valve’s OpenVR library as a potential solution, although I’d still share the OculusVR SDK-based solution first of course.

That’s good to hear.

I’ve heard only positive things of Valve these few years. The Linux version of Steam is solid and their Blender tools for Source games are pretty good and regularly updated as well. Seem pretty reliable company in these regards, I haven’t checked OpenVR yet but I’d expect the same case with it.
If it’s an abstraction layer to access different VR devices with the same functions I’d consider using it after first stable release. PS4 sales seem pretty good and the Morpheus VR might compete pretty well with the Oculus.

So the update I was going to make that had totally slipped my mind was that I was working on a new generalised input framework for Panda3D that brings together input devices such as trackers, gamepads, keyboards and mice under a single unified interface. When Oculus announced that they would ship with Xbox gamepads and that they were also working on their own game controllers, I figured Panda can’t support the Oculus Rift without also supporting the Xbox gamepads.

That was quite a while ago, and this has all been implemented. The new low-level input framework is present on the input-overhaul branch and supports there is support for Xbox gamepads on both Windows and Linux. The high-level gamepad interface is still forthcoming, but the important stuff is there and works well.

Unfortunately Oculus has been locking down their API more and more, becoming more opinionated and less flexible with every SDK release. It’s a bit tricky to redesign the parts of Panda’s interface to make this fit well into a general design while conforming to Oculus’ restrictive rendering procedures, but I’ve managed to work out the design considerations necessary to make this work. As soon as I’ve updated it to their latest SDK release I’ll be able to push it to a public branch. Supporting Linux has become only a secondary priority, I’m afraid, since it’s hard to support both the new SDK and the very-old SDK, but I’ll still do my best.

All this is on track to be in Panda3D 1.10, which is slated for early 2016.

Thank you for the update.
I understand the frustration caused by the oculus devs constantly changing their API. When you actually know how the technology works, most of it is completely unnecessary I would argue.
But in my opinion it’s one of the few things we have to live with. Like using Windows.

I now work in a small company who offer stage equipment for rent and operation, including some powerful lasers, LED walls and also 3d mapping. We sometimes create a 3d emulation of the aerial laser shows and 3d projections by creating a 3d version of the stage, building, etc. and showing it to the customer. There are some show visualization programs out there, but the ones we have worked with look like some PC game from the early 2000, while it’s helpful for us, for the customer it might not tell much or even be worse than not showing anything.
We have had the idea of writing our own visualization program and even showing it to the customer with an Oculus device. From the reactions of people in our area from some equirectangular videos ( youtube.com/channel/UCzuqhh … zMuM09WKDQ ) it’s clear that an Oculus visualization of future shows is the best option for marketring our services. I personally wouldn’t want to switch to Unity just for this.

Someone I know from an architectural firm has had the same idea but for showing their interior designs to their customers and allowing them to “walk around” in the simulation in realtime instead of showing them some 3d renders.

In short, even if some of us personally won’t benefit from Oculus support, it’s clear that even businesses are starting to use them and Panda could relly benefit from such usage.

So, the Oculus Rift came out yesterday. Along with a new version of the SDK, with (again) a changed API. They also introduced a “Platform SDK” that Oculus games can use for DRM, friends, chat, achievements, etc. Games are expected to be distributed through the Oculus platform (and Oculus takes a cut of the sales). Distribution outside the Oculus platform is possible, although users must explicitly enable “allow software from unknown sources” to do this.

Unfortunately, I can’t get my DK1 working with the new Oculus software. It just shows a black screen. I’m guessing they don’t care about supporting it any more. I pre-ordered a consumer Rift so I can finish and test the integration, but it will take until May to arrive.

This essentially means a delay of Panda 1.10 (since there’s no way I can develop for the actual consumer Rift software using the DK1), unless I can find someone locally to borrow a DK2 from. I can’t develop on the 0.8 SDK since it is incompatible with the consumer Rift software.

Have you emailed them about this?

Perhaps we could also donate to help you get a DK2?


I received my Rift a week ago and wondered if there is some sample Python code for the Rift and
the 1.10 devel build to play around with; I didn’t find anything in /usr/share/panda3d, and the
only samples on the net that I found are 2-3 years old, probably referring to an older API.
I am looking towards data visualization in VR, and it would be great to do anything at all with
a high-level engine like Panda3d and Python on the Rift, even if it’s completely unstable at the

Cheers, Johann

osvr.org/ is also worth looking into for cross headset (and open source) development.

I know there’s no full support for use of the Oculus rift in Panda3d applications, and I don’t have enough knowledge of what’s required to make the oculus rift work with Panda. But suppose:

  • I use a FreePie python script read the pitch, roll, yaw and head position as measured by the Oculus Rift, and send it to the Panda3d application, via Direct Memory Access, to control the camera
  • use Stereo FBO/multiview textures for stereoscopic rendering
  • and apply a barrel distortion shader to correct for the lenses of the Oculus Rift.

What else do I need to make the Oculus work with Panda3d? Do I need to use the Oculus SDK and compile libraries of the SDK with Panda or are there any other things to take account of?