Skip to content

macOS (Experimental)

Experimental

macOS editor support is experimental. It is not yet verified on all hardware, and tracking in the macOS editor may not work yet. Building for iOS from a Mac is unaffected. Your feedback is welcome on the Developer Discord or at support@formulaxr.com.

XRTracker includes experimental support for Apple Silicon Macs as a desktop platform, using the same native capture and calibration paths as Windows. Rendering goes through Metal.

Supported Image Sources

Mode Description Depth
Native C++ OpenCV capture via AVFoundation from built-in or USB cameras No
Sequence Recorded frame playback from disk Optional

Note

RealSense depth cameras are not available on macOS. If you need depth tracking, use Windows.

Build Settings

Setting Value
Minimum macOS 14.0 (Sonoma)
Architecture Apple Silicon (arm64)
Scripting Backend IL2CPP or Mono
Native Library formula_tracker.bundle (loaded automatically)

Warning

The plugin is built for Apple Silicon only. A Unity Editor running under Rosetta reports itself as Intel and will not load the plugin — install the Apple Silicon Editor build. Intel Macs are not currently supported.

Camera Permission

macOS gates camera access per application. The first time you enter Play mode with Native image source, macOS prompts for camera permission on behalf of the Unity Editor. If you dismissed that prompt, re-enable it under System Settings > Privacy & Security > Camera.

For a standalone player build, Unity writes the camera usage description into the app's Info.plist. Set Camera Usage Description under Player Settings > Other Settings so the prompt explains why your app needs the camera — a build without it is rejected by macOS at runtime.

Distribution

A standalone macOS player containing a native plugin must be signed and notarized before it will run on another machine. An unsigned build is blocked by Gatekeeper on first launch. Sign the app after building:

codesign --deep --force --options runtime --sign "Developer ID Application: ..." MyApp.app
xcrun notarytool submit MyApp.zip --keychain-profile "..." --wait
xcrun stapler staple MyApp.app

The bundle links its dependencies statically, so there are no extra dylibs to sign or ship alongside it.

Camera Calibration

Calibration works exactly as it does on Windows. Open Tools > XRTracker > Camera Calibration, capture checkerboard poses, and save. See the Camera Calibration guide.

Without a calibration file, intrinsics are estimated from the camera's reported field of view. Built-in FaceTime cameras report reasonable values, but a calibration pass measurably improves tracking stability.

Performance Tips

  • Resolution vs. speed: 720p is a good default. Higher resolutions help at distance but cost CPU time.
  • Target FPS: 30 FPS suits most cases. Raise it for fast-moving objects if the camera supports it.
  • Multiple objects: Each tracked body adds per-frame cost. Disable bodies you do not need via TrackedBody.enabled.