Skip to content

AristidesAI/Splat-Frame

Repository files navigation

Splat Frame App Icon

Splat Frame

Turn your iPhone into a window to another dimension.

Website   App Store

Platform Swift Metal ARKit License


Real-time head-tracked parallax depth illusion — like peering through a portal on your phone.


What Is Splat Frame?

Splat Frame uses your iPhone's TrueDepth front-facing camera to track your head position in real time and creates a 3D parallax "window" effect — the perspective inside the screen shifts naturally as you move, making it look like you're looking through a real portal into a 3D room.

Place your photos and videos from your photo library onto the 5 inner walls of the room. Move your head. Watch them come alive.

The same off-axis projection math used in real 3D window displays and museum installations — running at 60fps on your iPhone.


The Effect

         ┌─────────────────────┐
         │     ╔═══════════╗   │
         │    ╱│  ceiling  │╲  │
         │   ╱ ╚═══════════╝ ╲ │
         │  │left│  back  │right│
         │   ╲ ╔═══════════╗ ╱ │
         │    ╲│   floor   │╱  │
         │     ╚═══════════╝   │
         └─────────────────────┘
             Your iPhone Screen

     Move your head → perspective shifts
     Like looking through a real window

Features

Feature Description
Photo & Video Walls Place media from your library on any of the 5 cube faces
Cube or Portrait Switch between square and tall rectangular room shapes
Real-Time Head Tracking ARKit face tracking at 60fps for precise parallax
Gyroscope Tracking Phone tilt also drives the perspective — works together with face tracking
Adjustable Sensitivity Fine-tune smoothing, movement scale, and gyro sensitivity
Physics Effects Wobble/jello, inertia/slide, and bounce effects on the cube and wireframe edges
Screen Recording Built-in recording to capture and share your creations
Pinch to Zoom Scale the room depth to your preference
One-Tap Calibration Reset head tracking origin instantly

How It Works

┌──────────────────┐    ┌────────────────────┐    ┌──────────────────┐
│   TrueDepth      │    │  Off-Axis           │    │   SceneKit       │
│   Camera          │───▶│  Projection         │───▶│   Renderer       │
│                    │    │                      │    │                  │
│  ARKit face       │    │  Asymmetric frustum  │    │  5-plane room    │
│  tracking         │    │  from head position  │    │  + camera        │
│  (x, y, z)        │    │  (like a real        │    │  override        │
│                    │    │   3D window)         │    │  @ 60fps Metal   │
└──────────────────┘    └────────────────────┘    └──────────────────┘
         ▲                                                  │
         │              ┌────────────────────┐              │
         └──────────────│  Gyroscope +        │◀─────────── │
                        │  Motion Effects    │
                        │  (wobble, inertia, │
                        │   bounce)           │
                        └────────────────────┘

The parallax illusion uses an asymmetric frustum — the projection shifts inversely to your head movement:

nearOverDist = near / headZ
left   = (-halfScreenWidth  - headX) × nearOverDist
right  = ( halfScreenWidth  - headX) × nearOverDist
bottom = (-halfScreenHeight - headY) × nearOverDist
top    = ( halfScreenHeight - headY) × nearOverDist

Requirements

Requirement
iPhone X or later (TrueDepth camera required)
iOS 26+
Xcode 26.2+ to build from source

Tech Stack


Open Source Libraries

Splat Frame is built on top of these open source packages:

Package Description Link
MetalSplatter High-performance Gaussian splat renderer for Metal. Provides SplatRenderer, SplatChunk, and scene file I/O. scier/MetalSplatter
spz-swift Swift bindings for the .spz compressed splat format — fast loading of Gaussian splat files on Apple platforms. scier/spz-swift
swift-argument-parser Apple's library for straightforward, type-safe command-line argument parsing in Swift. Transitive dependency of MetalSplatter. apple/swift-argument-parser

All packages are managed via Swift Package Manager.


License

This project is open source. See the LICENSE file for details.


Links

Website  ·  App Store  ·  Report Bug  ·  Request Feature


Built with off-axis projection math