One of my earliest motivations to learn 3D graphics was a computer generated video of an airplane doing a canyon run, not even a flight simulator but a rendered video with complicated twists and turns closer to the dog fight in Independence Day instead of the Death Star trench run. Several years later, not only is it achievable on a desktop PC on a real-time flight simulator but also in virtual reality with head tracking and looking out the cockpit.
I opted to write a flight control system on VR Platforms spanning Oculus, Google Daydream and the Microsoft Mixed Reality headset when I got access to the hardware and developer tools — I get to write a simulator and also pursue my interest in automated vehicle controls. The sample I made is based on a quadcopter drone supporting 3rd person and 1st person view with manual flight controls and pilot assistance to stabilize and simplify flight management using vector forces to make the functionality feel closer to reality.
3rd Person View from Ground
1st Person View on Drone
The app uses a dual-axis gamepad such as the Xbox One controller and is based on Quadcopter and Helicopter controls managing the lift force and the platform angle to move laterally. Movement speed and altitude are vector components based on the platform angle and the lift force. Mastering the controls take practice including basic hovering so coding in some flight assistance is an interesting activity.
Without pilot assistance each command must be counteracted to stop and hover, with force computations movement stabilization can be applied similar to the way flight control gyroscopes manage the micro adjustments needed. Implementing stabilizer logic enables the drone to hover when all controls are released.
Altitude management is also challenging with the need to adjust the lift force to counteract the applied gravity and platform angle. Setting up a target altitude becomes the easier implementation and let the system compute the necessary lift force adjustments.
The app is based on Virtual Reality view camera tracking enabling the user to move in-scene camera with head tracking and is applicable in 3rd person and 1st person views. In the following example, I switch between the external view point and in-cockpit views.
For questions, comments or contact – Twitter @rlozada