Endurance VR

Technical Artist, Technical Designer

Created for Oculus Quest

“A fully immersive leadership experience that transports executives, MBA students and undergraduates onto Earnest Shackleton’s 1914 ship, the Endurance.”

Project Summary

Endurance VR was made in conjunction with the wonderful team of developers and staff at the UNC Reese Innovation Lab. This project was created based on the attempted Trans-Antarctic Expedition, the first land crossing of Antarctica by Earnest Shackleton and his crew. During this journey their ship, Endurance, became beset in the ice of the Weddel Sea before reaching their intended goal of the Vahsel Bay. The ship drifted northward held in the pack ice throughout the Arctic winter of 1915. The crew would face many hardships, but under the intense leadership of Shackleton, all 28 crew members survived for two years in the antarctic before they were rescued. Though the expedition failed in its original objective, it is now recognized as an incredible feat of endurance and leadership. The goal of this project was to create a realistic experience that would put users in the shoes of Earnest Shackleton during this journey. Along their journey the player would have to make many important and difficult decisions in order to lead and protect all 28 crew members.

Duties

  • Creating all of the landscapes for the experience including:

    • Endurance trapped in Pack Ice

    • “Patience Camp” Ice Floe

    • Elephant Island

    • South Georgia Island

  • Lighting & Post Processing for all levels in the game.

  • Android mobile/VR friendly ocean water shader that would be used throughout the rest of the game levels.

  • Android mobile/VR friendly ocean wave simulation for specific narrative sequences requiring large ocean waves.

  • AI navigation system and blueprint tool that was used by other developers to create “patrol paths” for ambient characters.

  • Main Menu UI and level navigation

  • Snow/Ice Procedural texture generator for use in all exterior environments

  • Procedural Materials/Textures for 3D artist to use for Whaling Station Buildings / Assets

WaterShader1.gif

Water

One of the biggest challenges of this project was the water. Both the shader and the large ocean waves were very important for an experience that is largely sea-based. I created a simple panning shader that would be used for scenes with calm water. For the large ocean waves, I experimented with many different solutions and found that the most performant waves I could create were by using an old-school method of baking simulations onto joints, typically used for cloth simulations.

I figured that I could mimic realistic water by layering sin waves on a plane, then running a script that would create a joint for each vertex, and then bind the joints to that plane and finally bake the simulation onto the joints so it could be exported and used in unreal.

One issue with this method was that the Oculus Quest has a technical limitation of only 75 bones per skeletal mesh, and this baked simulation needed a minimum of about 300+ vertices / joints in order for it to look fluid enough to resemble water. In order to surpass this limitation, I split the plane into 5 pieces and baked each simulation separately. Each piece of the water was then exported individually at 0x0y0z using the same naming convention for each bone, allowing UE4 to read the imported pieces in as 1 skeletal mesh, with 5 separate animations, thus saving a little bit more on draw calls vs. having 5 separate skeletal meshes.

AI “Patrol Path” System and Tool

After creating all of the environments and placing characters, we felt the scenes were a bit too static and thought some movement from ambient characters would add to the atmosphere and immersion of the experience. I created simple AI behaviors for walking around to specific locations and playing various animations with possible breaks at these locations in order to add some variety and randomness to the AI patterns. I created a blueprint tool for this system so that other developers could easily utilize this system for creating paths for all other necessary levels in the experience.

Snow & Ice

I created a snow and Ice generator in Substance Designer to quickly and procedurally create all snow and Ice textures that would be necessary for all of the exterior environments.

Optimization

Optimization for this project was extremely important as it was being developed for the Android-based Oculus Quest. This meant that there were large technical limitations in terms of poly count, texture sizes, lighting, shadows, and overall fidelity. All environments/levels needed to fit within roughly 50,000-100,000 triangles / vertices per frame and have a maximum of 50-100 draw calls per frame. As this experience has a heavy emphasis on narrative and animations, this meant all landscapes needed to be as low poly as possible to allow for maximum freedom for the character artists / animators. Texture atlasing was used as often as possible to reduce overall draw calls.

Previous
Previous

Hidden No More VR - UNC Reese Innovation Lab