Curious Side Quests
← Back to the cabinet

Watching The Addams Family pinball from the ball's point of view

A camera riding just behind the ball on The Addams Family table. Real gameplay, rendered in Blender.

The Addams Family pinball table viewed from close behind the ball.

September 2026

This is a game of pinball seen from just behind the ball. I built it for The Addams Family table in Visual Pinball X, using AI to help, and rendered it in Blender.

8 seconds from the finished video, at normal speed.

Normally you see a pinball table from above, the way you stand at the machine.

Overhead view of The Addams Family playfield in Visual Pinball X
The Addams Family table from above, the way it looks when you play it.

In the video the camera stays down at the ball and follows it wherever it goes. Posts, rubbers, and ramps go by at eye level. When the ball goes under a ramp, the ramp is over the camera too.

Chrome pinball rolling between clear plastic posts and white rubber rings
The ball passing clear posts and white rubber rings, with the camera just behind it.
Chrome pinball rolling under the edge of a plastic ramp, with colored lights in the dark room behind
Rolling under the edge of a ramp. The colored panels in the background are LED lights in the room around the machine.
Chrome pinball crossing the middle of the playfield over The Addams Family logo
Crossing the middle of the playfield over The Addams Family logo.

The ball is chrome, so it reflects everything around it: the lamps on the table, the ramps, and the dark arcade room I put the machine in. Most of the room only shows up in those reflections.

The full video is 30 seconds of real gameplay at normal speed, with the game's own sound. I tried slowing it down, but the audio sounded warped. I went back to full speed and repaired the audio.

The full video: 30 seconds, 1280 x 720, interpolated to 60 fps, with game audio.

How I built it

Visual Pinball X runs the actual game with its real physics. It records where the ball is, how the flippers move, and when each lamp turns on. Blender renders that recording frame by frame, so this isn't something you can play live.

The flippers are automated, not me playing. I worked on the timing so they didn't just flip every time the ball got near the bottom.

My first versions let the camera see through solid objects. After problems getting the camera working inside VPX, I moved the table's geometry and textures into Blender so ramps and posts block the view the way they should.

Early untextured Blender render of the playfield with a gray ball
An early Blender render. The table is there, but the materials and lighting aren't.

The rubbers had picked up textures from other parts of the table when they should have been a solid color. I fixed them and the posts, then added ray-traced reflections to the ball and the other chrome.

Chrome ball with ray-traced reflections on a brightly lit playfield
Ray-traced chrome on the ball, still under plain overhead light.

For light I used the machine's own lamps instead of overhead lights. The colored inserts in the playfield should look like plastic with light coming through, with darker lettering and edges. They came out too bright, then too dark, before they looked right.

Playfield lit only by the machine's lamps, with the chrome ball in shadow
Lit by the machine's own lamps. The inserts aren't right yet.
Final render: chrome ball on the playfield with glowing colored inserts
The final look. Light comes through the colored inserts, the lettering is opaque, and the lamp changes come from the game.

I added 2 vertical lights, one on each side of the ball, and a large, distant softbox for fill. I excluded the ball from those lights so they wouldn't put bright shapes in its reflections.

I tried a camera that chased the ball independently, like a mouse running after it. It couldn't keep up. I went back to close tracking: when the ball bounces back, the camera backs away with it and turns into the new trailing position.

I rendered this version across 3 RTX 3090s, with 256 samples per frame. An earlier run crashed when I forgot to limit power on the dual-GPU machine. Saving each frame separately meant I could resume without starting over. RIFE interpolation adds frames between the 900 rendered ones, bringing the video to 60 fps without changing its speed or audio.

I want this to work with other VPX tables. First I want to get this one right.

Back to the collection