Why File Size Matters for AR
Augmented reality places unique demands on 3D assets that desktop rendering does not. The device must simultaneously run the camera feed, perform surface detection, track motion sensors, and render your 3D model in real time. All of this shares the same pool of memory and GPU compute. A model that renders perfectly in a desktop viewer can cause frame drops, overheating, or crashes when placed into an AR scene on a phone.
Apple AR Quick Look loads USDZ files directly in Safari and iMessage without installing an app. The experience must feel instant. Apple's developer guidance recommends keeping models under 100,000 polygons and textures at 2048×2048 or smaller. Exceeding these targets does not trigger a hard error, but loading times increase noticeably and frame rates drop on older devices. A 4096×4096 texture consumes around 64 MB of device memory when decompressed (or up to 85 MB with mipmaps), which is significant on devices where GPU and system memory are shared.
Android Scene Viewer has more explicit constraints. Google recommends a maximum of 10 MB for GLB files loaded in Scene Viewer and caps validation at 15 MB. The recommended polygon count is under 100,000 triangles, with 30,000 to 50,000 as the ideal range for smooth performance. Textures are limited to 2048×2048 and must use PNG or JPEG in sRGB color space.
USDZ: Apple's AR Format
USDZ was created by Apple in collaboration with Pixar and launched with iOS 12 in 2018. It is built on Pixar's Universal Scene Description (USD) framework, which Pixar first published as open source in 2016. A USDZ file is a zero-compression ZIP archive containing USD scene data and referenced assets (textures, audio) with files aligned on 64 byte boundaries for efficient memory-mapped access.
The format is read-only by design. To edit a USDZ file, you must unpack it, modify the underlying USD layers, and repackage. This constraint exists because USDZ is optimized for delivery and consumption, not authoring. Apple's ecosystem uses USDZ extensively: AR Quick Look in Safari and iMessage, Reality Composer, Reality Composer Pro, Keynote 3D objects, and spatial experiences on Apple Vision Pro.
For visionOS and Apple Vision Pro, Apple recommends keeping models under 100,000 polygons per object and using baked textures to reduce draw calls. RealityKit on visionOS supports a maximum of approximately 500,000 triangles per immersive experience across all visible models. Profiling with Reality Composer Pro's geometry statistics panel is the recommended way to verify performance.
GLB for Android AR and WebXR
GLB (binary glTF) is the standard format for Android AR experiences and WebXR applications. Google's Scene Viewer loads GLB files to display interactive 3D objects in the real world on ARCore devices. The format is also the default for Google's model-viewer web component, which provides AR viewing on both Android (via Scene Viewer) and iOS (via AR Quick Look with a USDZ fallback).
Google's Scene Viewer documentation specifies several constraints: maximum 10 materials per model (only 2 may use transparency), a single UV set per mesh, PBR (physically based rendering) materials required, and HTTPS loading mandatory. These constraints exist because Scene Viewer renders in real time alongside the camera feed and surface tracking, leaving limited GPU headroom for complex materials.
WebXR extends AR beyond native apps into the browser. Chrome, Edge, Opera, Samsung Internet, and the Oculus Browser all support WebXR. Safari supports WebXR on visionOS. For WebXR applications, GLB files optimized with mesh decimation and texture compression load faster and render more smoothly, especially on mid-range Android devices where thermal throttling can reduce GPU performance during extended AR sessions.
How Mesh Optimization Works for AR
The meshoptimizer simplification algorithm evaluates every vertex using the quadric error metric and removes vertices that contribute least to the visible surface shape. For AR specifically, the relevant quality threshold is what the user can perceive at typical AR viewing distances of 0.5 to 2 meters on a phone screen. At these distances and screen resolutions, polygon counts above 100,000 rarely produce visible improvement.
The algorithm preserves UV seams, material boundaries, and hard edges during reduction. This is important for AR models that use PBR materials with normal maps, where a naive decimation algorithm would create visible seams at material transitions. meshoptimizer processes the geometry in a Web Worker via WebAssembly, keeping the browser responsive during optimization.
For product visualization in AR (the most common commercial use case), aggressive optimization is usually safe. A furniture model exported from CAD with 800,000 triangles can be reduced to 50,000 with no perceptible quality loss when viewed on a phone screen. The file size drops from tens of megabytes to a few megabytes, making the difference between a smooth AR experience and one that stutters or fails to load.
Privacy First Processing
All optimization happens entirely in your browser using WebAssembly. Your 3D files are never uploaded to a server. This is critical for product designs, unreleased merchandise, architectural models, and any assets covered by NDA or intellectual property agreements. Files up to 100 MB are supported, with no server queue wait times.
Benefits of AR Optimized 3D Assets
- Faster AR loading : Smaller files load instantly in AR Quick Look and Scene Viewer instead of showing a loading spinner.
- Stable frame rates : Fewer polygons and compressed textures keep rendering smooth while the device tracks surfaces and motion.
- Lower memory usage : Resized textures at 2048×2048 use a fraction of the memory that 4K textures require on shared-memory mobile GPUs.
- Cross platform output : Export USDZ for Apple devices and GLB for Android, WebXR, and Google model-viewer from the same source file.
- Broader device support : Optimized models run on older phones and tablets that would struggle with unoptimized assets.
- Higher conversion rates : E-commerce AR experiences that load fast and render smoothly lead to more engagement and fewer product returns.