I'm driven by my passion for creating connection between people.
I use mixed reality to investigate human perception to not only better understand people, but to also enhance digital experiences that facilitate these connections.
Humans are complicated, computers are cool. Thus I use computers to better understand people. My research interests involve investigating how people understand and process information using mixed reality. Currently, I'm working on my PhD in the Synthetic Reality Lab (SREAL) advised by Dr. Gregory F. Welch and Dr. Gerd Bruder at the University of Central Florida.
I completed my undergrad at the University of Minnesota where I studied Computer Science as well as Asian and Middle Eastern Studies, with a Chinese concentration. Through my time in the Illusioneering Lab advised by Dr. Evan Suma Rosenberg, I discovered my love of research. My work involved 3D user interface design as well as the understanding and mitigation of cybersickness (motion sickness in VR). I received an Outstanding Undergraduate Researcher Honorable Mention by the Computing Research Associate in recognition of my work with Dr. Suma Rosenberg.
During my undergrad, I also spent three summers interning for Xbox. I worked on projects ranging from Services and Operations, to Accessibility Compliance, as well as Safety and Content Moderation. Many of these projects involved applying AI and machine learning in a Gaming context.
Catch me outside the lab rock climbing, playing too much pinball, exploring new cafes and street markets, or watching movies!
Curriculum VitaeSeptember 2024: Accepted as a Student Volunteer at IEEE ISMAR 2024, see you in Seattle!
August 2024: Started my PhD journey at the University of Central Florida! Joined the Synthetic Reality Lab (SREAL), co-advised by Gregory F. Welch and Gerd Bruder. Let's get ready to rumble 💪🏽
May 2024: Received my B.S. in Computer Science from the University of Minnesota 🎓
January 2024: Our 3D User Interface Contest Demo was accepted at IEEE VR 2024, see you in Orlando!
December 2023: Honored to be named a CRA Outstanding Undergraduate Researcher Honorable Mention ^-^
May 2023: Starting my third summer at Xbox as a Software Engineer Intern. Super excited for this summer :)
March 2023: Experiencing my first in-person conference experience by attending the Virginia Tech satellite event for IEEE VR 2023.
May 2022: Returning to Xbox this summer as a Software Engineer Intern. Excited to see what's in store for this summer :)
January 2022: Our 3D User Interface Contest demo was accepted at IEEE VR 2022!!!!
December 2021: Joined the Illusioneering Lab as an undergraduate, advised by Evan Suma Rosenberg.
May 2021: Starting my first internship as an Explore Intern (SWE/PM) at Xbox woooo!
August 2019: Started my undergraduate journey at the University of Minnesota 🐣
Walk Me Through It is a guided walk-through experience of popular graph traversal algorithms, Breadth-First Search and Depth-First Search. The user follows the highlighted path walking through a maze laid out like a graph. Along the way, they construct a map to chart their path by collecting Tokens from each room. This experience was demoed as part of the 3D User Interface Contest at the 2024 IEEE Virtual Reality and 3D User Interfaces Conference held in Orlando, Florida, USA.
This project is an exploration of what type of movements precede motion sickness and how these relations are affected by exposure to virtual reality and video games. As part of this work, I managed the data collection and Simulator Sickness data analysis on a study with 50+ participants.
The Scalable World in Miniature is an extension of the well-known World-in-Miniature metaphor that enables independent scaling of objects and finer control across a spectrum of object sizes. It was developed with Unity 2021 on the Oculus Quest, designed for any general VR system. The SWIM was demoed as part of the 3D User Interfaces Contest at the 2022 IEEE Virtual Reality and 3D User Interfaces Conference held virtually in Christchurch, New Zealand.
This cloth simulation was implemented in Processing by using a mass-spring approach that binds together individual ropes with horizontal springs. It uses a combination of position-based dynamics and Hooke's Law to animate the cloth movement. The curtain of chained nodes interacts with a floating balle as it swings back and forth. Users can interact with the cloth by clicking and dragging their mouse across cloth as if it were a curtain. This simulation also uses self-collisions to simulate more realistic cloth.
This crowd simulation made in Processing features a single agent (red) trying to cross a busy sidewalk filled with other pedestrians. The crowd of pedestrians was creating using a flock of boids. The agent uses the anticipatory avoidance method of Time to Collision in order to avoid bumping into anyone.
This simple HTTP server communicates the contents of files stored on the local disk using TCP sockets. It parses incoming client HTTP requests, and then replies with valid HTTP responses. Its multi-threaded functionality uses a thread pool paradigm to create a fixed-size collection of threads that are each capable of interacting with the one client.
The theme of this pinball game made in Processing is to break the dam that these beavers have so painstakingly constructed. Break the dam by aiming for the diamond target at the center of the rock formation and earn points. Players can unlock the multiball by collecting enough points. When a pinball is first made, there will be a trail of blue sparkles that follow it and then a trail of fire when the pinball is moving fast enough. Both of these features were created using particle systems. Flippers are controlled using the "F" and "J" keys.
This project uses ray casting to implement the magic of Harold's purple crayon from the 1955 children's book "Harold and the Purple Crayon" by Crockett Johnson and the 2000 ACM NPAR paper "Harold: A World Made of Drawings" by Cohen et al. The conversion of 2D screen coordinates to the 3D virtual world is done using pick rays and intersection tests. Drawing in the sky can be done by clicking and dragging the mouse through the sky and billboards can be created by clicking and dragging the mouse from the ground to the sky. The ground mesh can even be edited to create hills and valleys by clicking and dragging your mouse along the ground. Change the view of the camera by right-clicking and dragging the mouse. Walk around in the environment using the WASD keys.
These dancing ants were animated with TypeScript using inverse kinematics and data from the Carnegie Mellon motion capture database. The mocap data was used to create a looping animation that smoothly interpolates between the beginning and end of the motion clip then overlayed onto the character at runtime. The pair of ant dancers perform a salsa loop while the lone ant dancer performs various ballet moves. There are five different ballet techniques that can be chosen from with the click of a button. The database also provided bone skeleton information which was used to form the scene hierarchy needed to create the necessary geometry for the animated characters.
I'd love to connect (•◡•) /
Let's Chat