Living Pixels

Winning 2nd place 3D/4D in Cal Poly’s 2026 Juried Student Show, Living Pixels takes a live image feed and frame-by-frame changes each pixel’s color to the color of a random neighboring pixel. Each rendered image is then fed back into the program in a loop, making each pixel look like it is alive.

My goal was to write a set of rules and let them run; to define the boundaries and the means by which my code will distort the images, but to ultimately allow the code to create an output I couldn’t fully predict or control. 

You can try it yourself at the bottom of this page.

Racecars at Sonoma Raceway.

Seeing Motion

Living Pixels is able to detect motion with a secondary program that is looking for pixel differences between the current frame and the previous frame that meet a threshold set by the user. Pixels that meet the threshold difference are added directly on top of the current render, essentially allowing moving objects to be visible through the noise. But, as soon as these objects slow down or stop, their forms blend back into abstraction.

Interacting with living pixels

The inclusion of the live camera input and the motion detection are there to make this effect visible and engaging to viewers in real time, giving viewers a way to interact with the distortion while still having no control over the final output. Imagine Living Pixels on a huge screen installation where the camera is pointed at the viewers, who can see themselves becoming abstracted if they stay still too long.

People on Kirby Beach with the Golden Gate Bridge in the background.

Living Pixels on display at Cal Poly’s 2026 Juried Student Show

Try it yourself below!

Interactive Camera Artwork

Living Pixels

Created by Josh Hakman for ART-315: Art History Since 1945.

Runs at 24 fps
How to use it
1
Press Start Camera and allow camera access.
2
Stabilize the camera for best results.
3
Press Render to begin the effect.
4
Try moving in front of the camera then holding still.
5
Pause or reset when you’re ready, then save your video if you want.
Live Canvas
Your camera feed will appear here, then transform as you move.
Idle
Generation: —
Start the camera to begin.
Controls
Motion sensitivity
Lower values react to smaller movements. Higher values react only to bigger movement.
Mirrors the canvas horizontally.
Best on a phone or laptop with camera access enabled.