Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

AristidesAI/Splat-Frame

Open more actions menu

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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.