Kyle Kesterson
Case study · Creative tools for kids

Freak'n Genius

Animation made toy-like. Your body puppets a cartoon through a depth camera; your voice puppets any photo on a phone.

RoleCo-Founder & CEO
Dates2010–2017
Reach11m users · 8 apps · 4 platforms
A hand reaching toward a Kinect sensor, tracking visible on the monitor
01

What it was

Real-time character animation with no rig, no keyframes and no training. Stand in front of a depth camera and a cartoon moves as you move. Kids as young as three used it. This was novel in 2010.

Launch metrics · YAKiT Kids first four days · January 2014
One new video created every…
Day 1 7.0 sec
Day 4 1.8 sec
Creation rate accelerated almost fourfold in four days, the same tool, the same feature slot, just more people finding out it existed.
#1Free kids app, App Store
10,000+Videos created on day one
~12,000New downloads per day
Lifetime: 11 million users · tens of millions of animations · 8 apps across 4 platforms · multiple App Store number ones in Photo & Video and Kids, US and international.
GeekWire · January 2014 Here’s what happens when Apple features your app in the App Store Source for the launch numbers above.
A child using YAKiT on a tablet beside a Kinect sensor
A kid using it From behind. The sensor sits beside the tablet, same engine, sensor optional. Watch video Microsoft Kinect commercial
02

The architecture

One portable C++ engine across three platforms: Kinect with DirectX 9 on PC, a Kinect build for Xbox, and OpenGL ES on iOS for YAKiT.

Capture and rendering were per-platform shells. The puppet code was shared, which is the only reason a two-person engine team could hold three platforms at once.

03

The decision that made it work

The Kinect SDK delivered 20-joint skeletons at 30 fps. The core decision was to flatten 3D to 2D on purpose.

Characters were cutout puppets, flat textured segments hinged at joints. Driving one meant mapping joint pairs to segment rotations: shoulder→elbow becomes the upper-arm angle, one atan2 per bone. No 3D rig, no skinning.

That is why any drawn character, a kid’s doodle, or a bag of Doritos could be performing by the afternoon.

A Kinect sensor beside a laptop running the flat-puppet animation tool
The whole rig A sensor, a laptop, and a character made of flat parts. That was the entire production setup.
04

Making it not look broken

Raw Kinect data bends characters in ways that look wrong, so every bone was gated by joint confidence and clamped by constraints, torso ±30°, head ±30° relative to torso.

The deepest code was two-bone foot-planting inverse kinematics: measure the puppet’s leg bones, watch the performer’s real ankles, decide which foot is anchored, and solve to keep feet glued to the floor. That is the difference between a character that looks planted and one that looks haunted.

Most of the animation engine was really a trust engine. Confidence gates, angle clamps, drop-the-frame rules, deciding which parts of the skeleton to believe, frame by frame.

05

YAKiT, same engine, sensor optional

Cut a mouth out of any photo and drive the jaw with your finger, or with your voice, chunked into 60 RMS energy samples per second through a hysteresis gate that flapped the mouth in real time.

Recording captured an event timeline synced to audio, so playback re-performed the show. Export re-rendered it at 30 fps to H.264 via AVAssetWriter. Everything ran on-device at frame rate; the network only ever carried finished videos.

yakit · street test footage
Public testing We hit the streets to get real feedback from real people Watch video YAKiT Product Testing
YAKiT featured in the App Store as #1 Best Kids App
App Store Featured as #1 Best Kids App, US and international.
YAKiT segment library — add a mouth, add a face
The flat-puppet parts Mouths and faces as flat, hinged segments. This library is the technical decision made visible, no rig, no skinning, just parts and angles.
06

What broke

Foot-planting looked magical until the sensor reported feet farther apart than the puppet’s legs could reach. Then the law of cosines goes out of domain, returns NaN, and the character’s legs vanish.

artifact · shipped source legs.cpp · two-bone IK solver
// out of domain — acos() would return NaN and the legs vanish
// Neither leg angle is possible. Let them both hang!

It sits beside an entire abandoned 3D leg solver, preserved in a #if 0 block. For cutout puppets, solving in 2D with guardrails beat solving in 3D correctly.

Flattening a 3D human onto a 2D puppet failed exactly where a human is 3D: point your arm at the camera and it foreshortens to nothing; turn sideways and half your joints become guesses.

YAKiT’s voice-driven mouth was amplitude, not phonemes, a hysteresis gate on mic energy. Beautiful in a quiet room, flapping like a screen door in a loud one. We shipped a sensitivity slider, which is another way of saying we made the user solve it.

But the real breakage was platform risk. We built for Kinect on Windows, ported toward an Xbox indies could not actually ship on, and shared through a Flash player as Flash was dying.

The engine was portable. The ground under it wasn’t. When your product rides someone else’s sensor and someone else’s platform, their roadmap is your risk register.

Six scenes of body-driven animation in use: kids on a stage, performers in front of projected characters, a demo in an aircraft cabin, a crowd watching
In the wild Stages, storefronts, an aircraft cabin, a crowd waiting their turn. One engine, and every one of these is somebody standing up in public to drive a cartoon with their body.
07 · What kids did with it

They found the magic mirror first, and the stage second.

First they just wanted to see themselves in it, pure play, no goal. The record countdown is what turned play into authorship: short skits, messages for one specific person, a character doing a bit. Same tool, completely different activity.

Outcome
11m

Users

Tens of millions

Animated video created

8

Apps across 4 platforms

#1

App Store, Photo & Video, US and international

Microsoft BUILD stage featuring Freak'n Genius
Microsoft BUILD On stage at Microsoft BUILD. Embedded with the Kinect team

Adjacent gesture and projection prototyping from the same years, the sensor work that fed the engine.

Gesture control being tested at a desk with two Kinect sensors and depth video on screen
Gesture prototyping Depth-sensor gesture control at a desk, two Kinects and live silhouette tracking.
Hands manipulating a projected photo interface on a wall
Projected interface A projected photo UI driven by hands on a wall, no screen, no controller.
A team mid-sprint around a table covered in sticky notes
Sprint, mid-session The unglamorous half: a table of sticky notes being sorted into an actual plan.
08

What I’d do differently

Think beyond the Kinect. We built the company on one sensor and one platform holder’s roadmap, and when that roadmap moved, our floor moved with it.

The engine was already sensor-optional, YAKiT proved it. I would have made that the strategy from the start instead of the escape hatch.

Next: Funko