A Bridge Between Bodies: Puppetry-Based Interfaces for Virtual Reality is a exploration of third person interface design in VR and my master's thesis. As of the time of writing, I was aware of very few third person VR video games, and only one that could arguably be a third person video game (the one being Xortex in the lab, although it didn't have the player play as a character). This, to me, was an interesting unexplored design space, and one with a connection to a real world cultural practice; puppetry.
Puppetry already contends with the question of how to control other characters using motion. Puppetry has what I would describe as physical interfaces, in the form of handles and rods, that map the movement of the puppeteer to the puppet. I only needed to reinterpret existing forms of puppetry and apply that design to VR interfaces.
To that end, I developed a video game prototype made in Unity for the Oculus and Vive. In the game, the player controls three acts of a circus. Each act features a different puppet, with a different interface based off a form of puppetry and a different circus act. The player’s goal is to keep the audience excited by performing each puppet’s act.
Note - This project was developed in a private repo, so there is no commit history here. I developed the project using a private repo because I used and referenced purchased assets. I've removed the purchased assets from this version of the project, but to anyone curious about the project's history please reference the documentation.
Unity 2017.3.1f1 or above
HTC Vive/Oculus Rift with Touch Controllers
Either open the the root folder as a project in Unity
How to Play
Press TAB to switch between sandbox mode, which features all puppets, and testing mode, which features one puppet at a time (Testing mode was how I completed a pilot IRB study)
Press SPACE in testing mode to progress to the next puppet or loop from the last puppet to the first
Press R to reset the scene and all puppets/objects, if at any point a puppet or object is lost or broken
This project is licensed under the Apache License - see the LICENSE.md file for details