Having recorded the 360 video that constitutes the conclusion of the Be A Bird VR experience, this week I had to figure out how to “ultra key” out the green screen in Adobe Premiere and then export it, with alpha channel, in one of the two formats that the Unity video player can handle: Apple Pro Res 4444 — which the university computers don’t seem to have or H.264 — which doesn’t seem to carry the transparency information.
So I might have to make do with an edit that just blacks out the background apart from Nathan the Flute and Sammy the Seagull. It looks amazing painted all over the panoramic skybox, but I need to be able to control it’s projection angles to suit the perspective of someone lying flat on their back (in both VR and reality) looking up at the action from a low vantage point.
Flight-wise, I’ve completely changed the flight system. It was originally built on the presumption that the player would essentially be pinned to the ceiling, looking down over the terrain.
The trouble is that humans like to look where they’re going, as do birds of course. The difference with a bird is that its neck longer and bendier, than a human’s. While a bird can look forward simply by craning it’s perfectly designed neck, a human can’t pull off a 90 degree turn of the head to go from looking down to looking directly ahead with any degree of comfort. While this problem is particularly acute for the Snow Angels flight position i.e. flat on back looking up at ceiling, human necks aren’t designed to hold that head angle for any length of time, whether you’re prone or supine.
My initial quick fix was to tilt the VR camera (but not the rest of the VR player components) which worked right up until I wanted people to be able to see their wings. Clearly if you’ve tilted the angle of the camera 60 degrees then when you look at your own hands, they’re not going to be where they should be. It wasn’t until testing revealed that one user wanted even more angle i.e. 90 degrees in order to be looking squarely in the direction of travel, that the penny dropped…
Now I have the whole VR Player tilted to look in the direction of travel, allowing the motion controllers position in real space to designate the position of the bird wings in VR space. But that necessitated completely changing the Flight Controller so that the Snow Angel movements (in reality: arms stay flush with the floor throughout flapping movement) now control the velocity and arm raises control yaw (changes in direction of heading).
I’ve ditched the pitch changes caused by sliding both arms from T-pose down to sides or up towards head (to point heading upwards or downwards, respectively) because it was too easy to lose track of the continued upward trajectory or downward trajectory. You can’t feel that movement because in reality you’re just flat on your back, but neither can the visual system reliably create a sense of rising or falling in altitude without it. So to avoid this ALTITUDE DRIFT problem — where you suddenly realise you’re ascending or dropping without knowing why — I thought it would make sense to get rid of the AddTorque changes that rotated in the pitch dimension and instead just AddForce in the upward direction rb.AddForce(Vector3.up, 1.0f). Sadly this doesn’t seem to be working but I’m sure Zans will have it sorted on Monday in a nanosecond.
Next up: attach different coloured berries to different species of L-system tree. There is now a system in the Game Manager to keep score of how many of each different berry colour have been collected. Red Berries gain access to the Eyrie for the Final Concert. Orange berries teach the player how to understand bird language — once they collect 10 berries all the bird squawking switches to gossipy conversations in English. Purple berries will make the player fly faster (change “thrust” value / not “throttle” value).
Next up 2: attach different bird call sound file to each boid and also attach animation for each boid of different bird types.