The Act of Observation (AO) was intended to be an exploration into the societal space of virtual reality. This experience was my first time developing for VR, and I wanted to play with the lines between player and player character, the power of voyeurism in virtual space, and environmental character development.
When a player puts on the headset and enters the virtual space, they perceive it as real, or at least more real than a traditional format video game. I recently played a horror VR experience at the CMU ETC. My friend played the game first and I watched her and the experience on unfold on the television. The experience used a predictable set of horror tropes to establish the mood, but my friend screamed and jumped. When it was my turn, I thought I already knew the experience well enough to get out unscathed, but I too was terrified. The immediacy of the space, both as a novelty and as a spatial setting, really do make the experience. This experience is also an example of how individualized the current VR scene is. One player, one headset, one experience. The lines for VR experiences are long for this reason, and the experiences are generally taylored for the singular player (though this is not all VR experiences, of course, just the bulk.)
In AO, I wanted to address this odd space and the powers that come with the VR headset. As a player in the VR experience, you are you, not a player character. There is no blaming Mario when you fail to do something. It is your fault, always. And if you are you in the experience, then should your actions have real consequences in the virtual environment? Do the inhabitants of the world see you pop in an out of existence when you put on the headset? What does your presence in their space mean? And what does it mean to look into their world through this ocular device of the headset? A device with, in my case of the Google Cardboard, very limited tangible input but the incredible power to view a different existence?
I built the experience for the Google Cardboard and used a droid turbo phone to host the experience. I chose the GC because of its accessibility ( I am a huge fan of the cheap/free democratization of game development) and its inputs. The GC has a one button input system (and not a haptic system) and is held up to the head instead of strapped on. This gives the player the power to immediately chose to enter and exit the virtual system whenever they please.
I modeled the game in Maya and animated the blendshapes there. The rest of the animation happened in Unity’s animation system.
I chose a young woman’s bedroom because of the “classic” voyeurism scenario of the peeping tom. As a player stuck sitting on the edge of her bed, you see her most private actions through the animations. The animated objects have a separate material (translucent gold) to differentiate them from the room. I did this to give mystery to the objects and the dweller of the space: is this a playback of her or is this how you imagine her in her space?
I separated the animations into escalating reaction “scenes”, beginning with her unsuspecting actions and ending with her realization that you are in her space. I transitioned these scenes with messages left on her answering machine by a friend, and eventually her, which echo her thought process of what is happening in her space. I did all the voice acting for the game.
A big part of setting the tone of the experience was lighting and sound. I went through several iterations of each to fine tune the late night/early morning feel and to get the core of her interactions across in the animation. Originally I did not plan to put sounds to her animation, but tried it at the suggestion of playtesters and found that it worked.
Acquired Knowledge and Skills
Over the course of making this game I became very familiar with Unity’s animation system. I learned how to edit animations via curves, something I had never touched before. I also learned how to create and export blendshape animations from Maya to Unity. I learned how to use normal maps in Unity materials and the importance of uniform geometry on models. I also became more confident in my 3D modeling, and learned the beautiful Sculpt Geometry Tool in Maya, which made all my modeling dreams come true. This was also my first attempt at a VR/360 experience.
Setbacks and Solutions
My first big issue with the project was importing animations from Maya to Unity. My initial plan was to animate everything in Maya and export it into Unity where I would cut the clips up and trigger them from scripts. No matter what format I used from FBX to Maya binary I could not get animation to export. The only thing I could get to export was blendshapes in Maya binary format. So I decided to animate in Unity. This led to my second big problem and I think the biggest issue: automatic curving in Unity’s animation system. Since I didn’t have cut clips I chose not to use Mechanim’s graphical editor, but animated all the objects from scratch in the scene. Unity automatically curved between my keyframes, creating wildly over-exaggerated movements. I solved this by exploring the different curve types in Unity: some situations called for linear or constant breaks between keyframes. In some cases the added motion ending up working for the motion, so I kept it. I also had issues with relational animation. This was especially bad with rotation. If an object had multiple parts that really didn’t need to be animated through a blendshape (for example: the lock tumbler and the lock latch) I parented them to an empty gameobject and put animation on that game object. This moves the center of rotation to the empty game object and rotations occur in essentially random relational space to the parent. I some cases I could fix this with a grandparent object with animation that could animate both the grouping of objects and the individual pieces, and in some cases I had to adjust the scaling to get it to look right.
I also had issues with trigger zones for animations. The player triggers all the animations by looking at things (there is no traditional input). I did this via a long raycast from the center of the player’s camera viewport that collides with a trigger zone around each animatable object. I had to fine tune each zone so that animations could be triggered one at a time from the central vantage point. I also had to space out trigger zones for the 360 viewing. I really wanted to take advantage of the 360 viewing, so I tried to put interesting triggerable things in all four corners of the room to give the player a reason to turn around.
AO has been an exploration into voyuerism, 3D animation, and VR design. I hope to continue to work in this space (both technically and conceptually) with later iterations of this work.