EST. 2023
01 // PROJECT // MFA THESIS

Ocean of Memories (2026)

SITUATION & TASK

Developed to push the boundaries of real-time cinematic VR storytelling. The core creative challenge was to orchestrate a continuous, high-fidelity 50-minute immersive narrative that fluidly bridges advanced character pipelines, environment design, and complex technical interaction systems inside Unity.

ROLE & SYSTEM

Director, Writer & Lead Technical Artist. Handled the end-to-end creative vision and technical execution. Directed mocap performers and scripted the entire 50-minute narrative arc. Architected the full-body VR immersion scripts, engineered custom Python tooling in Maya for CC-to-Rokoko integration, developed custom shaders, and orchestrated the master timeline.

TECH STACK

Unity (URP), Gaea, Character Creator (CC), Autodesk Maya, Python Automation Scripting, Rokoko Smartsuit Studio, FMOD for Unity integration, Advanced VRIK Integration.

PROJECT INFO

Duration: 6 Academic Semesters
Context: MFA Digital Media Thesis Project
Deliverables: 50-Min Experience, Pipeline Blueprint, Custom Maya Tooling Suite.


THE NARRATIVE FOUNDATION

Turning Trauma into Immersion

At its core, Ocean of Memories is a deeply personal interpretation of psychological defense mechanisms. The narrative stems from a four-year period during my childhood where I experienced severe social exclusion and isolation. Years later, when tasked with developing the concept for my MFA thesis project, my immediate instinct was to return to those formative years and extract a specific event to anchor the story.

However, as I attempted to map out the narrative, I discovered a profound mental block: I could barely recall any specific details from that era. My subconscious had manifested a "black hole" in my memory—repressing the trauma as a survival mechanism to allow me to turn over a new leaf and rebuild my self-confidence in adult life.

This personal realization became the absolute bedrock of the project. While the script underwent ten major revisions to reach its final structure, the psychological pillars remained untouched. The thematic core of the experience—total amnesia, suppressed trauma, haunting flashbacks, and the ultimate pursuit of a clean slate—directly drives every technical and artistic decision in the project, transforming my personal story into a universally relatable interactive VR journey.


Why VR? The Sync of Disorientation

Most First-Person VR experiences treat the player as an external observer stepping into another identity. In Ocean of Memories, I chose VR because the medium’s inherent disorientation perfectly mirrors the protagonist's narrative arc. When the player puts on the headset, they enter the story knowing absolutely nothing about the world or the past—matching Thomas’s exact state of total amnesia. As Thomas wakes up and physically learns to reconnect with and control his body, the player is simultaneously adapting to the VR mechanics. This synchronization of narrative perspective and physical input creates an immediate, unbroken cognitive link between player and protagonist from the very first frame.

Gaea Terrain Generation Pipeline

World Generation: Procedural Terrain Pipeline

To construct the environment for the nature reserve scene, I used an interconnected world-building pipeline starting from concept design to procedural execution. I began by creating a fictional map for the reserve to serve as an in-game brochure asset. To maintain absolute spatial consistency within this specific environment, I then translated this graphic layout into Adobe Photoshop, generating a curated 16-bit grayscale heightmap based on the fictional landscape's boundaries.

This heightmap served as the foundational node within Gaea's node-based framework. I applied advanced geological operations, routing the custom map through procedural Erosion, Thermal breakdown, and Slope filters to generate realistic cliffs, natural sediment accumulation, and organic valley flows. The finalized high-resolution heightmap and accompanying splatmaps were then imported into Unity's Terrain system, serving as the performant canvas for this major narrative segment.

Custom Editor Tools: Procedural Grave Painter

Populating a vast environment with hundreds of assets manually is inefficient and prone to human error. To optimize the production environment pipeline, I developed a custom Unity Editor window extension (GravePainterEditor) to procedurally paint and layout grid-based assets onto the scene's terrain in real-time.

The tool utilizes Raycasting within the scene view to cast a position preview, locking the matrix boundary upon interaction. The system loops through an adjustable row/column array, dynamically calculating local height-offsets via terrain.SampleHeight and mathematically aligning each object's up-vector with the surface topology using terrainData.GetInterpolatedNormal. To break visual repetition across the large scenery, I integrated a weighted randomization algorithm that swaps base assets with unique prefab variants based on a user-defined probability percentage. The entire generation is baked into Unity's Undo architecture, allowing non-destructive iteration during world-building.

vr ik rig setup

VR IK Rig Integration & Character Animation Controls

To establish a full-body presence, I integrated a comprehensive VRIK rig inside Unity using foundational tracking architecture from Valem Tutorials. While the baseline setup provided core headset and controller tracking, I independently designed and implemented a hybrid animation system to handle character locomotion. Relying on my own technical understanding, I utilized Unity's Animation Controller to isolate skeletal animations strictly to the lower body (legs), leaving the upper body and hands fully bound to the user's live VR inputs. I developed a custom script that listens for movement events driven by the Meta Quest left joystick; traversing the environment triggers a smooth blending of walking animations, which seamlessly halts when input ceases.

Furthermore, I modified the baseline IK target-following scripts to better suit my character pipeline and integrated an external arm-stretching mathematical script to bridge the visual discrepancy between the user's real-world arm reach and the VR asset's structural limits. While the medium of full-body VR IK naturally introduces an inherent, uncanny "puppet effect", I learned that players ultimately adapt to and accept it, knowledge that allowed me to keep developing the experience with confidence.

The Ghost Shader

During the experience, flashbacks from the past directly overlay the present reality. To achieve this narrative layer, I developed a custom Ghost Shader in Unity's Shader Graph to serve as a distinct material that transforms past characters into ethereal, semi-transparent entities, visually separating them from the grounded present environment.

The technical architecture combines a procedural Fresnel Effect to drive a high-intensity rim light around the character’s silhouette with a view-space distance calculation that generates a soft, volumetric interior glow. Additionally, the shader utilizes object-space vertical position channels filtered through a custom RevealHeight mask and a dynamic Lerp function, granting precise programmatic control over the character's spectral solidity and allowing smooth, vertical transitions as the past intertwines with the present.

Ghost Shader
Lookdev
<>

Spatial Audio & Narrative Integration

Delivering a feature-length, continuous VR narrative without traditional cinematic cuts required a robust and independent audio framework. Because the standard FBX format does not preserve embedded audio data, importing pre-synced character animations from Autodesk Maya into Unity wasn’t an option. The entire structural synchronization of dialogue, motion capture data, and facial blendshapes had to be constructed from scratch within Unity's Timeline.

Without a physical camera or a synchronized digital marker between the separate audio recordings and the skeletal data during the live mocap sessions, traditional slating fell short. To bridge this production gap, I took a hands-on approach and refined the timing frame-by-frame—manually aligning every dialogue track with the characters' mouth shapes and body movements entirely by ear and visual lip-reading. This post-mortem workflow takeaway highlighted the necessity of a physical performer clap during capture to act as a digital sync point for future pipelines.

To keep the 50-minute continuous experience seamless and immersive, I detached the musical score from this main chronological timeline, routing it instead through FMOD. This architecture allowed the cinematic soundtrack to adapt dynamically, shifting its intensity and arrangement based on the player’s interactive progress and spatial exploration without ever interrupting the narrative flow. Furthermore, solving performance bottlenecks late in development highlighted the importance of runtime audio optimization, where proper file compression and encoding protocols drastically reduced memory layout overhead and improved FPS stability

Unity Timeline Audio Synchronization Layout