Monday, March 17, 2014

The "Foculus Rift" part 3: Spoofing the EDID

The libOVR SDK recognizes if an Oculus Rift is attached to the PC by checking two particular things:
  1. The USB tracker with the right VendorID, ProductID must be present (this has been solved in Part 2)
  2. The Head Mounted Display (HMD) must be attached, which is nothing more than an ordinary monitor connected over HDMI. The HMD is identified by its so called Extended display identification data (EDID).

Tuesday, March 4, 2014

The "Foculus Rift" part 2: Reverse engineering the motion tracker

The function of the motion tracker is to estimate the current roll, pitch and yaw angles of the head mounted display (HMD), which allows the 3D game to know what you are looking at and render the scene accordingly.

The original Rift uses the following configuration (as nicely shown by ifixIt):
  • Invensense MPU-6000, gyroscope and accelerometer sensor
  • Honeywell HMC5983, magnetic field sensor / compass
  • ST  32F103C8, ARM 32 bit microcontroller (with USB connection)

Monday, March 3, 2014

The "Foculus Rift" part 1: Building a Head Mounted Display

Some time ago I read BitCortex's manual on building a homemade "head mounted display" (HMD), just like the Oculus Rift:
http://bitcortex.com/oculus-libre-open-source-hmd-inspired-by-oculus-rift/

The concept is surprisingly simple and low tech. A LCD panel presents seperate pictures to the left and right eye, lenses are used to place the panel close to the eyes and hence produce a wide field of view (FOV). What I read about these very simple homemade glasses made me curios. The people on the mtbs3d forums (the birth-place of the rift) claimed that the 3D effect is fantastic and the head tracker allows the games to become extremely immersive.

It was clear, I had to try to build some of these fancy 3D goggles.
These posts will document the progress I have made, the problem I encountered and the improvements I came up with along the way.