Oculus VR founder Palmer Luckey told me not to buy an Oculus Rift. That was two years ago, and he's repeated the plea every time I've seen him since. Don't buy it. It's not ready. It's just a developer kit. He's right, but I'm tired of waiting. I want a VR headset and I want it now. So I built one. Sorta.
I'm no hardware guru. I don't know anything about head-tracking, interpupillary distance or the kind of optic lenses you need to build a VR headset from scratch. I do have a Google Cardboard headset, however, and I'm a wizard at search engines. I chose my terms carefully. "DIY Oculus Rift." "Google Cardboard." "VR headset." "Cheap." After a few minutes I found it: an Android app designed to turn Google Cardboard and a common smartphone into a makeshift PC gaming VR headset. It's called Trinus Gyre.
At its core, Trinus Gyre is just another desktop-streaming app. It's like Splashtop or the Gamestream software that powers NVIDIA's Shield -- it basically mirrors whatever is happening on your PC or laptop and streams it to your phone. Yes, it's tech we've seen before, but Trinus Gyre packs loads of VR specific features: lens correction, head tracking, calibration tools and more. The idea is simple: start a game, use Trinus Gyre to pipe it to your phone and drop that sucker in Google Cardboard for glorious, cheap virtual reality gaming.
Like all my half-baked dreams, this was easier said than done. Google Cardboard was my first problem: Most VR headsets are designed to be strapped to your face -- Cardboard just expects you to hold it there. With your arms. That wasn't going to work.
I tried a few methods of attaching the Cardboard to my eyeballs: a repurposed head-mounted-flashlight (too tight), a fluffy faux-feather boa I found in my wife's closet (too ticklish), a pair of rubber bands and an old baseball cap (a failure in every way imaginable). I eventually settled on using an old Boy Scout belt and some masking tape. A Scout is thrifty, after all.
It's an ugly headset, and its rough cardboard edges burrow painful ditches into the bridge of my nose. It's weak, too. Every time I tighten the belt, it crushes the flimsy headgear just a little more. It's not a good headset, but it's good enough. For now.
Trinus Gyre is a lot like my makeshift headset: it works, but it's a bit rough around the edges. Like all desktop streaming software, Gyre has two components, a server app (on the PC) and a client app (on the phone). Connect both devices to the same wireless network, press the start button and, hopefully, you're streaming. Unless you're me.
Gyre's default wireless settings just don't work right for me -- the stream starts, but it's addled with stuttering frame rates, freezing hiccups and sudden disconnections. I don't know what I expected -- my network never played nice with NVIDIA Gamestream or Steam In-Home Streaming either.
Fortunately, Trinus Gyre has a direct USB connection mode, and it's better in almost every way. Turn on USB tethering (normally used for sharing internet connections from your smartphone), start the app on both devices and Gyre will automatically detect and use the cable instead. It's beautiful: no more stuttering, no more unexpected disconnections, no more screaming at my router. Now we're getting somewhere.
As happy as I was to have figured out the streaming app, getting into VR wasn't quite as simple as dropping my phone into Google Cardboard. Gyre will pipe your PC to the headset, and even warp the image to match lens distortion, but it won't convert the stream into a VR-friendly format. To look right, VR content has to be displayed in stereoscopic 3D -- two images placed side-by-side that render the same scene from a slightly different angle. Surprise, surprise: most games don't support this natively. Back to Google to find a solution.
There are a lot of programs out there that will force games to render 3D, but I settled on Vireio Perception, mostly because it's easy to use. Converting Fallout: New Vegas and The Stanley Parable to VR was as simple as turning on Perception, launching the game and, finally, turning on Trinus Gyre. It worked, but it was a tad tedious -- adding another layer of hassle to my homegrown VR experience.
Perception didn't always work, either. Some games refused to be converted to VR. Driver: San Francisco and Titanfall, for instance, both crashed every time I tried to launch them in side-by-side 3D. It's a shame, too -- driving cars and piloting mechs seem like ideal seated virtual reality experiences. I did eventually get these titles working by using Trinus Gyre's "fake 3D mode," but the keyword here, is fake: all the feature does is double the same image twice. This makes it "work" with the headset's optics, but there's no stereoscopic 3D effect. No depth to what you see. It's passable in a pinch, but it's not nearly as satisfying as the real thing.
Games with native 3D support, on the other hand, were wonderful. Crysis 3 was ironically the easiest game to configure for my FrankenRift -- all I had to do was select side-by-side stereoscopic 3D in the game's menu and start the stream. It even worked with Trinus Gyre's rudimentary head-tracking:
Awesome. The default head tracking mode is little more than a mouse emulator that matches cursor movements to the phone's accelerometer input, but with a little sensitivity tweaking it ran like a dream.
What about Oculus Rift apps? To be honest, I gave up on those pretty quickly: a lot of Rift experiences are designed only to work with the Rift. Most of the time, I just couldn't launch them: "Oculus Rift not detected," my computer complained. Bummer. I was able to get a few Rift applications to work in "fake" mode, but unless someone can find a way to emulate Oculus hardware, we're all out of luck.
So yes, Trinus Gyre can help you turn your phone into a passable, but limited VR headset -- but doing it isn't easy. It took me hours of tweaking, reading forums and adjusting settings to make my Faux-culous Thrift a reality. The program's interface just isn't all that intuitive.
Some of the features are basic enough -- I had no trouble figuring out what the difference between low, high and ultra stream quality settings was -- but others I had to look up online. What's the difference between OpenTrack and TrackIR? Is USB-adb the same thing as normal USB? No clue. More reading, more Google, more trial and error.
To Gyre's credit, its desktop program has a help box that offers a brief description of every feature the mouse hovers over. It helps, but it's not enough to make setup "easy." I didn't stumble across Gyre's lens calibration tool until I'd been using the rig (with massive overscan) for a few hours. That's a pretty big deal -- it took the experience from slightly nauseating to pretty darn good.
Even with lens calibration, I couldn't see everything. Cardboard's optics don't provide a very wide field of view -- every image, no matter how well calibrated, was masked by the lens' circular total. This is impossible to photograph, but it looks a little like this:
That left image? That's what is pushed to your phone. The right image is what you actually see through the goggles. It's ok, but between the limited view and the painful cardboard nose-gouging, I'm looking for a more comfortable VR phone mount.
The app is pretty picky about game settings as well. If your game isn't running in a window, Gyre probably won't stream it. It's a little annoying, but it works out for the best: most games stutter and lag at higher resolutions anyhow.
Despite all the problems, hiccups, technical headaches and many, many returns to Google for help, I have no regrets building my Mockulous Rift (I'm running out of puns, help). How could I? It cost me almost nothing. It provided me with hours of entertainment, a post for work and a ridiculous, tape-covered, belt holstered eyesore to show off to my friends. If you have an Android phone, some sort of smartphone VR headgear and some spare time, try it. There's even a free, test-version of Trinus Gyre if you don't want to pony up $US5. It's fun… but not fun enough to stop me from buying the real thing. I'm ready when you are, Palmer.