Skip to content

CoolScan: iPhone object scan to .untold with live styles #32

Description

@miogds

Goal

Real objects into the engine from a phone, with no desktop tools in the loop. The user walks around an object with a LiDAR iPhone, Object Capture reconstructs it, and the app cooks the result into a native .untold model on the device through the engine's public asset-format API, validated by the engine's own reader, then shows it in an engine viewport with live styles: PBR, toon, comic, pixel art and pencil sketch, each a render-extension pass so the engine's look and tone-map chain still runs. A companion macOS server takes the photos and the phone's pose checkpoints over the local network, reconstructs at full detail, cooks with larger textures and sends the bundle back, with jobs that survive the app being killed and re-cook on either side.

It demonstrates three things at once: the asset format as a target for content made outside Blender, render extensions for stylised looks, and the engine on iPhone with touch input. It is also the shortest path from a thing on a desk to a prop in a level.

Status

Step Plan Status
Style plugin Render extension: toon model-surface pipeline, comic/pixel/sketch/edge compute passes before the look chain Ready, PR pending
On-device cooker USDZ → .untold with ModelIO, recovered normals and tangents, PNG textures, validated by UntoldReader, round-trip tests Ready, PR pending
iPhone app Object Capture scan flow, scan library with re-cook, touch-orbit viewer, style picker, headless hooks for the simulator Ready, PR pending
Mac server MIOServerKit + SwiftNIO, Bonjour, photos and pose checkpoints uploaded, Full/Medium/Custom detail, jobs survive the app being killed, server-side re-cook, stub mode with a smoke script Ready, PR pending
Hardware check On-device scan on a LiDAR iPhone and the Mac round trip To confirm

Next steps

  • Confirm the hardware run, then one PR here.

Note: the simulator library targets Metal 4 and needs an iOS 26 runtime; the device libraries must be built for the package's minimum OS (#25).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions