Why we VR

The appetite of humans to escape the confines of their everyday lives is insatiable.

For this reason alone, VR is destined to succeed beyond any medium in the history of mankind. For the first, and perhaps the last time, humans will be exposed to a medium that delivers 100% total sensory immersion. They will genuinely perceive flawless 360° audio coming from every conceivable direction and distance. Within 5 years, they will experience fields of view wider and resolutions higher than the human eye can perceive. And this very year, people will gain an ability to interact and inject an idea of self into the world with creative superpowers that transcend the laws of time and physics.

Thus, VR becomes the medium to end all media. The computer that will swallow all of computing. And as for humanity? For me, I’m happy to be on the creation side. I’ve always loved creating more than consuming. For the masses… there’s going to be a hell of a lot of consumption, and a lot of, lets just say: programming, going on.

Look out, humanity. Snowcrash is coming.

Time to train up those motorcycling and katana skills.


Keys : Publishing App to the Oculus Store on GearVR

Or, how we crafted our AndroidManifest.xml manifest superfile from completely shaky and hidden online documentation rumors.

It took us waaaay too long to hunt down all the details of how to get our Android demo from a side-loading APK into a fully functioning app that would play nice with the Oculus launcher app on GearVR. For those on the same journey, we;re sharing the key resources:


Mobile Build Target: Android : SETTINGS DETAILS
Oculus Submission Validator
a nasty little piece of command-line software that will save you many many headaches:
Application Manifest Requirements
bits and pieces of what you need to insert into your XML manifest
outdated but still informative :
Oculus Mobile Submission Guidelines PDF
more general knowledge:
Unity VR Overview 5.1+
porting Unity projects from Oculus SDK (0.5.0 or prior)
to Utilities for Unity (0.1.2+ on Unity 5.1+)
For those who have been building VR for a year or more, and want to update your projects from legacy Oculus SDKs and Unity 4.6 into the present:
1. what to delete when you port
2. whats in the Uilities package
general unity forum for VR Q&A
possible 45 minute detail video session if all else fails:

Your Golden Ticket:
SAMPLE AndroidManifest.xml
First you need to copy your custom Android manifest here:
You can copy the Android Manifest that Unity generates when you compile your game,
it’s on folder:
copy from there to
Have fun, kids.

Oculus Connect 2 : Pixar v. Epic : Life in 11ms

There was so much to absorb at Oculus Connect 2, and now coming on the heels of Digital Hollywood, my brain is completely full. So instead of making my massive report as I did last year, we’re going to let the knowledge and wisdom trickle down in little pieces. Here’s the first one, from Max Planck, Sascha Unseld, and the team at Oculus Story Studio that produced Henry:

“At Pixar, with our rendering farm, we accepted the truism that it would take roughly 11 minutes to render each frame of animation, producing 24 frames per second.

With Henry, we have a hard wall of rendering each frame, in real time, at 90 frames per second, which translates to 11 milliseconds of rendering time per frame. We spent 6 months optimizing every single aspect of the models, lighting, renderers and animations to assure that we met that 11ms threshold for each and every frame, without compromise.”

11 minutes to 11 milliseconds.

Thank you Moore’s Law.
And Thank You Epic.

We accept this Truth…

…to be self-evident:

If it performs wonderfully on GearVR:
then it will be a dream on the Oculus Rift,
and take little or no effort to port, other than input harness*

If it performs adequately on the Rift + PC,
it may or may not work well on GearVR.
In fact, it may take both a massive re-factoring as well as a
total re-thinking of graphics, models, textures and code.



Be smart : Mobile First.

Develop for the Gear. Port to the Rift. WIN.



* a few words on input harnesses:

Designing input mechanisms for the GearVR touchpad is a tricky business… its a VERY limited input surface, and we tend to use both gestures AND a lot of “gaze detection” combined with taps…

for the Rift, we often take the easy way out : keyboard input. At dSky, we are especially fond of the following, which are easy to “find” for “blind” VR users:

  • space bar (easiest to find… big and central and edge)
  • cursor arrows at lower right (2nd easiest to find blind)
  • ESC key (far upper left, also “feelable”)

Truth be told, we should ALL be designing for
a) gamepad, and
b) natural hand tracking devices,
c) with keyboard as a “fallback”
d) oh, did i fail to mention the venerable mouse? ooops!

as the long-term goal for natural and intuitive VR input streams.


Arrival of a Train… and a new medium is born

Ever since watching Sascha Unseld’s talk at Oculus Connect last year, which prominently featured “Arrival of a Train“, one of the very first silent films, we’ve been noodling on a little side project concerning a VR capture of a train locomotive in action.

After many trials and errors, and much reverse-engineering of train schedules, and inclement weather, we’ve finally captured a nice little rough draft piece of footage. We’ve posted the 360 footage, captured with our Ricoh Theta, to YouTube, for your enjoyment.

Here are a few stills. Scroll down for the complete video. Be sure to a) fullscreen it using the little [__] icon in the lower right of frame, and b) click and drag around with your mouse (or look around if in googles).

Oh, and we’ve included the original “Arrival of a Train” for your viewing reference. The reason its so famous? Reportedly, crowds fled the theatres waaaaay back in the day, convinced that the 2d animation on the screen was in fact a train headed directly for them. This allegory is often used to communicate how audiences viscerally experience a brand new medium — half is the content, half is the novelty of the experience.





I was quite concerned that the train would knock over the tripod, it was within inches of the car extents. Thankfully, the rig survived, and we even got a friendly wave from the engineers.



and, finally, the original to which we pay homage:
Arrival of a Train at La Ciotat (The Lumière Brothers, 1895)

Just Business : Inspiration from Hollywood

This post will be a departure from our irregularly scheduled technical, design, and development musings. Today, we are focusing on that elusive topic called business. Enjoy.

Back in the day, my boys and I were on the high-school wrestling squad. We actually competed at a fairly high level, Varsity won state that year. And at least once a month, the night before match, we’d gather in front of the TV, and watch our deepest wrestling inspiration: VisionQuest. The scene with Matthew Modine beasting up the peg wall then running up and down the stadium bleachers are etched into my brain for life. I can still recall them when I need that last little boost for triathlons.

So now we get to the topic at hand, business. Who’d have thought, there are movies that inspire there too. And here they are. Watch and learn.


5. the Color of Money



4. Wall Street

“Greed is Good.” Watch the speech. Again. and Again. That is all.




3. Blood Diamond
“What’s the business in this one?” you ask. Quite simply: Hustle. If you need the abbreviated lesson, just skip to the scene where DiCaprio barters the weapons for the diamonds…

The-Social-Network-movie-poster-David Fincher


2. The Social Network

The youngest, richest, most successful entrepreneur of the 21st century deserves a decent treatment… and this one is genius.





1. Jobs

Steve Jobs captained Apple from a “has been” into the most profitable, most valuable company in the world. There are lessons here. We shall say no more.





Further Inspiration & Investigations…

This list is the companion piece to “Required Reading for VR.”
Your choice. Reading or viewing. Programming, either way.

…did I mention the Matrix?

And now, back to our regularly scheduled programming…


Capturing Virtual Worlds to Virtual Cinema : How To

We’ve just read once, twice, three times this most excellent tutorial / thought piece by D Coetzee, entitled “Capturing Virtual Worlds: A Method for Taking 360 Virtual Photos and Videos“.

The article gets into the dirty details of how we might transform a high-powered, highly interactive VR experience into a compact* file sharable with all our friends on a multitude of platforms (cardboard, mergeVR, oculus, webVR, etc)

Having spent a great deal of time figuring out these strategies ourselves, its good to see someone articulate the challenge, the process, and future development paths so well.

360 3d panorama thin strip stitching

Most accessible present-day solution: a script that renders thin vertical strips with a rotating stereo camera array, then stitches into the final panorama


  • the term “compact” is used here liberally. A typical 5 minute VR experience might weigh in at 500MB for the download. Transforming this into a 120MB movie might be considered lightweight… for VR. Time to beef up your data plans, kiddies. And developers, say it with me now : algorithmic content :)


Into the Deep : Water, Physics, Bubbles, Sunlight & such

We’re doing a rapid prototype of how an underwater VR cinematic journey might play out. A primary dynamic visual element is the bubbles. Refraction, expansion, sound FX… all of it! Right after bubbles, come rays of light, caustics, and the miraculous mirror reflection of the surface from below. It should be a fun design and rendering challenge, esp. when we port to the resource-challenged mobile headsets.

Here are some of our sourcebook visual inspirations for the math & physics ahead:

PA13971041404 PA13971041412 PA13971041437 PA13971041461


scuba bubbles rising



Vivian Spiral dancing beneath the waves. photo credit: Orion Fredericks

Got ideas about VR underwater?

Do you have experience with shaders and rendering and particle animation of underwater scenarios? Post your links below and / or send us your resume!