Meta (Oculus VR)

Duration
June 20, 2022 → September 9, 2022
Position
Software Engineer Intern
Team
XR Input Data Systems
image

Meta builds technologies that help people connect, find communities and grow businesses.

  • Oculus VR: Meta’s subsidiary company that focuses on building VR headsets that redefine digital gaming and entertainment.

Project: Dynamic Body Mesh Reshaping

Languages / Tools Used: Unity, Unreal Engine 4, C++, Python

Location: Burlingame, CA

During the summer of 2022, I worked in person as a Software Engineer Intern at Meta (Oculus VR), supporting the XR Input Data Systems team. This team focuses on providing data to other teams to assist researchers and engineers with their work, model training for headset calibration being one prominent example.

The Problem

The current synthetic data pipeline has a static full-body digital human, thus largening the difference between real and synthetic data. However, just like in real life, every human has unique characteristics such as height, body / hand size, etc.

Solution

While the specific details of my project are under NDA, the project focused on adding variation to the shape of a digital human body.

  • This will greatly increase the amount of variation in our synthetic data produced from Unreal Engine, allowing us to reduce the domain gap between real and synthetic data.

With the added ability to create variation in digital rigs, the pipeline is able to quickly generate thousands of different human bodies given a set of characteristics. This strips away the need for engineers to manually generate different human bodies, increasing productivity for both the team and other engineers / researchers.

My team visit to Redmond, WA!
My team visit to Redmond, WA!
Meta interns!
Meta interns!

Learnings

  1. Working cross-functionally
    1. Given a project that involved graphics and data generation, I had the opportunity of working with technical artists and other ML engineers, rather than just regular software engineers. It was really cool seeing the different types of work going into this one product and how they all interconnect~
  2. Navigating ambiguity
    1. Coming into the internship, I wanted to understand the different roles and functions of everyone on my team and anyone closely related to my project. This was because I knew that, like any other internship project, there wasn’t a well-defined scope. However, because I was able to connect with others early on, I was able to communicate with each stakeholder to understand what are the key features and problems they want the project to highlight and solve. Talking about the different approaches and conducting small demos allowed me to figure out the best approach in tackling such a complex space in which I had not much prior experience in.
  3. Confidence
    1. Not having much experience in graphics development, specifically in Unreal Engine, I was terrified of being able to succeed in my project. However, over time, as I learned to connect with others, I was able to understand much more about the tech stack I was working with. My peers taught me what it meant to be confident, despite the imposter syndrome constantly in the back of my mind. I took advantage of the provided resources from the internet (Unreal Engine forums, internal documentation, etc) to create a solid foundation for myself in the tech stack. While it took a bit longer to ramp up due to graphics being a niche field for students, I was able to gain a new perspective moving forward, building my confidence toward becoming a stronger engineer.