Assignment 9 - Video and Pose Estimation

For this week's body-centered interactive experience, I wanted to create something both technically interesting and relieving (for a certain demographic). With all the Luka Doncic trade drama and the Dallas Mavericks currently as the last place in the West (we’re talking about the NBA here for non-sports fans), I decided to make a Nico Harrison Punching Simulator - because sometimes you just need to express your feelings about front office decisions. I’m actually a Lakers fan so I love the trade but you have to feel for Mavs fans.

How does bro still have a job (https://www.foxsports.com/stories/nba/what-10-most-shocking-trades-all-time)

How does bro still have a job (https://www.foxsports.com/stories/nba/what-10-most-shocking-trades-all-time)

The Process

Getting Hand Tracking to Work

The biggest technical challenge was getting the hand pose detection system working reliably. I used ml5.js's HandPose model, but I leaned on AI (Claude Sonnet 4.5) to help me understand how to properly track hand velocity and detect punch gestures. The HandPose model returns 21 landmark points on your hand, but translating that raw data into meaningful "punch detection" was tricky.

The key was calculating the speed between frame-by-frame wrist positions and setting a threshold - if your hand moves fast enough toward the center of the screen, it registers as a punch. I also had to flip the video horizontally as we did in class so it felt natural (otherwise moving your right hand would move the cursor left, which is super disorienting).

Building the Damage System

Once I had punch detection working, I wanted it to feel like a real arcade fighting game similar to Wii Sports boxing with a little Smash Bros nostalgia. I implemented:

The hardest part was making the visual effects feel impactful. I spent a lot of time tweaking the shake intensity, text animations, and color transitions. The hit text needed to feel "punchy" (pun intended), so I added rotation, scaling, outlines, and color-coding based on damage amount.

Adding the Personal Touch

What started as a generic "punch the image" game became way more fun once I added Nico Harrison's face. The cathartic value of virtually punching the GM who traded Luka cannot be understated. I kept the option to upload custom images though, so anyone can punch whatever they want.