Case study — 04

Pixomondo Innovation Lab

An augmented reality app for filmmakers

Studio
Pixomondo — Sony Pictures Entertainment
Group
Innovation Lab
Role
iOS application — design & development
Devices
iPhone / iPad with LiDAR
Started as
Unreal Engine · Blueprint · C++ · Objective-C bridges
Rebuilt as
Swift · SwiftUI · Liquid Glass · ARKit 6 · RealityKit · Reality Composer Pro
The app on an iPad: a stone troll among real trees with a person standing beside it, arms out, a cabin behind. Tilt, roll, pan, height and lens read across the top; an animation timeline runs along the bottom.
A troll standing in a real forest — scale holds when someone walks into the shot

The Innovation Lab pushes at what is possible in filmmaking — Gen AI, Gaussian splatting, augmented reality. My main project there was an augmented reality app for filmmakers, on iPhone and iPad: place the CG in the real location, on the day, and look at the shot before anyone renders it.

It started in Unreal

The first version was built in Unreal Engine, a mix of Blueprint and C++. We kept hitting stability problems with the tracking, and fixing them meant reaching the newest framework Apple had shipped.

Unreal only supports ARKit 4. To get at the current ARKit — version 6 at the time — I had to write Objective-C bridges into Unreal's C++. Long, tedious work. Who wants to be writing Objective-C today?

The interface had the same problem from the other direction. Unreal Motion Graphics (UMG) felt like building a menu system for a video game rather than a mobile app, and CommonUI was no closer.

Why it was rebuilt native

After a few months and a lot of dead ends, we accepted that the only way to use the Apple platform properly was to go native. Every framework becomes available the day it ships — no bridge to write, nobody else deciding when you get the API — and rendering moves to RealityKit. SwiftUI and Liquid Glass gave it the premium feel the app needed, which matters for something a crew is handed on set.

What it cost in assets

Going native meant dropping FBX — Unreal's preferred format — in favour of USD. Fortunately there is an Unreal plugin that exports assets and animations straight to USD.

For anything more complex I leaned on Reality Composer Pro: placing assets, and checking that materials and textures survived the trip. Hair and fur are still a pain, though they get better with every RealityKit release.

What the app does

  • Scan the environment to improve tracking
  • Place one or several CG assets in a real location
  • Play, pause, stop and scrub each animation on a timeline
  • Move assets with virtual joysticks, or with gestures
  • Record video of the session
  • Save the world tracking and every asset position, and restore them later
  • Change lens, white balance, tint, shutter speed and exposure duration
  • Add blur to the background
  • Occlude part of an object
  • Import USDZ files from the device, so nobody waits on a conversion
  • Record animation from Sony mocopi sensors

It runs on iPhone and iPad with a LiDAR sensor.

The app went to set on House of the Dragon, where it put a live dragon into the shot on location.

Looking up at the stone troll among the trees, a figure small beneath it, with the app's camera readouts across the top and the animation timeline along the bottom
Camera readouts across the top, the animation timeline along the bottom — the operator's whole view