September 12, 2016

Henry Wins an Emmy! Learn How Oculus Made the Animated VR Experience

By Dana Cowley

We’re pleased to congratulate Oculus Story Studio on winning an Emmy for Outstanding Original Interactive Program for their charming animated VR experience, Henry. A jury panel have unanimously recognized this creative achievement in interactive media, making Henry the first VR original narrative movie to ever win an Emmy. 

While this is great news for VR creators, there’s even more for Unreal Engine developers to gain: Oculus Story Studio has released the project and assets on GitHub! 

On the blog the Story Studio team acknowledges that while VR storytelling requires significant effort, they’re eager to demystify the process by sharing their work. By looking at Henry’s project files you can see how they organize assets, how to control Henry’s gaze through Blueprints and how to design and animate a stylized character. 

They mention, “The project also contains a few extra easter egg assets from Henry’s world that aren’t used in the trailer but may be useful for your education or prototyping.” Keep reading for instructions on how to get started below. 

Oculus Story Studio Technical Founder Maxwell Planck also appeared on our Twitch stream to talk through the technical details of making Henry:

How to Download and Launch Henry

To use the project, you’ll need a PC running Windows 7 or 8.1 with the 0.7+ Oculus Runtime. Once installed and built, the total package will take up about 40GB of hard drive space. In order to install, you’ll need to:

1. Download UE4 (click the Get Unreal button in the top right corner of this page) 
2. Link a GitHub account to your Epic account (created when you download UE4)
3. Get Visual Studio 2013 

While Story Studio didn’t make many changes to the Unreal codebase an important one (see below) will require you to build the project from source rather than just running on a stock version of the engine.

Once you're set up on GitHub and have become a registered Unreal developer (all free), you can fork or clone/download Story Studio’s repository.

NOTE: If you are not signed into GitHub with a registered / linked account, you will get a 404 error when loading the URL above.

Next, follow the instructions in the README.md file found in the root directory of the repository (you can also read this file directly from the GitHub repository site which might be useful as it contains information about how to clone or fork the repository to your local machine). 

There’s an added a step to the standard Setup.bat file that will download the trailer project and binaries to your machine so if you are familiar with the stock Unreal setup, this should be exactly the same.

Once setup is complete you should see a Henry folder in the root of your forked/cloned repository. You can either launch directly from Visual Studio or, after successfully compiling, you should be able to open the Unreal Editor by clicking on the Henry/Henry.uproject file.

Overview of the Project:

The project contains .umap and .uasset files, UE4’s scene description files that contain definitions of shading, lighting, animation, textures, modeling, and logic. Along with the .uasset files, you’ll find some of the original source files that were imported into the project, including wav, png, and tga files. There is also a set of four C++ plugins that are custom logic written specifically to build Henry.

The “Content” of the project is loosely organized into 10 sections:

1. Animation – where the .fbx and .uasset files live for Henry’s skeletal animation in the trailer
2. Audio – where the .wav and .uasset files live for the narration, music and foley of Henry’s trailer
3. CharacterProps – a grab bag of some of the character props used in Henry’s world
4. Characters – contains Henry’s Unreal skeletal mesh, his shading files, and the Blueprint assets that control his gaze
5. Globals – contains a grab bag of assets used across all of Story Studio’s projects, like cameras, player controller defines, player pawn defines. Some of these assets are not used in the trailer.
6. Lighting – contains lighting functions, LUTs, and textures used to light Henry. A lot of these assets are not used in the trailer.
7. Maps – contains the .umap files used to define the trailer scene. TRAILER_Main is the persistent level. TRAILER_Logo, TRAILER_Sets, TRAILER_Title are all sub-levels.
8. PostFX – contains Blueprints and postprocess shaders for applying post image effects.
9. Sets – contains static mesh, and texture assets for some of the architectural props from Henry’s world.
10. TrailerLogo – contains textures, materials and curves used to animate the title cards in the Trailer.

The four C++ plugins located in the “Plugins” folder are:

1. OSSInteraction – a handful of custom functions used to drive Henry’s interactive gaze
2. OSSStageManager – a small, unfinished system for managing when story events should be cued
3. OSSShading – a handful of helpful material function extensions for shading Henry and his world.
4. OSSUtilities – a small grab bag of utility functions to extend Blueprints

Changes made to stock UE4 for the Henry VR Trailer:

1. Story Studio made a small change to USkeletalMeshComponent for manually writing to bone transforms from Blueprint (used for controlling Henry’s eyes during the interactive moments).

You can read more and ask questions in this forum thread.

Thanks again to Story Studio for sharing their award-winning work with the Unreal development community!