Arkwood is an airspotter, if there is such a word. He was once arrested for impersonating a pilot.
So you can imagine his excitement when I told him that I had created an air traffic control centre for my Oculus Rift virtual reality headset. Here’s how I did it…
First I added an OpenGL point light and a spotlight as per my post OpenGL multiple lights. The spotlight takes the form of a flashlight attached to my head. Lighting plies the virtual room with muchos atmosphere.
Next, I added a TV set as per my post Watching TV on Oculus Rift. The TV will display the live air traffic.
Here’s the virtual room with lighting and TV:
Great. But how did I get live air traffic to display on said TV?
Flightradar24 provides live images of air traffic. I continually took screenshots of the live images in my browser, using them as fresh textures for my TV screen. Anton on StackOverflow provides the screen capture code for a thread in my C++ Microsoft Visual Studio application (with Oculus SDK for Windows).
Here’s the TV displaying live air traffic:
The aeroplanes are moving about the runway of Heathrow airport, taking off and landing!
And to top things off, I add some original recording of air traffic control (courtesy of cityrocker on Freesound). I use 3D audio so that the sound emanates from the TV set and can be heard in my left ear, behind me and in my right ear as I turn around, as per my post Oculus spatializer plugin for FMOD.
Here’s a video of Arkwood enjoying live air traffic on the Oculus Rift virtual reality headset:
Wow! He can watch all his favourite planes moving along their flight paths from the comfort of a virtual room.
‘Screw being a pilot. I am now God of the skies!’ my buddy exclaimed, rubbing himself in a disturbing way.
Oh well, some folks are nautical, and some are airtical I guess. If there is such a word.
I closed the living room door – the real door that is, not virtual – and left Arkwood to his aircraft and rasping.
Here’s a video of live air traffic at Hong Kong airport. I am using glGenerateMipmap(GL_TEXTURE_2D) for diffuse textures on each render cycle, granting sumptuous visuals: