A 3D model optimized used in ARCore

Optimizing 3D Models for ARCore (Update 2024)

June 24, 2024

Share this post

ARCore is Google’s platform for building augmented reality experiences. Using different APIs, ARCore enables your phone to sense its environment, understand the world and interact with information. Some of the APIs are available across Android and iOS to enable shared AR experiences.

This guide outlines key considerations and steps for ensuring optimal performance of 3D assets, including polygon count, file size, texture resolution, and draw calls, using RapidPipeline to streamline the optimization process.


What is ARCore?

ARCore is a software development kit (SDK) developed by Google that allows developers to create augmented reality (AR) applications for Android devices. It provides APIs for tasks such as motion tracking, environmental understanding, and light estimation, which are essential for building AR experiences.

  • Motion tracking: ARCore tracks the device's position and orientation in real-time, allowing virtual objects to stay anchored to the real world as the device moves. 
  • Environmental understanding: It detects and understands the environment by recognizing surfaces like floors and tables, enabling virtual objects to interact realistically with the physical world. 
  • Light estimation: ARCore estimates the lighting conditions of the environment, allowing virtual objects to cast shadows and blend more naturally with their surroundings. 
  • Plane detection: It identifies flat surfaces in the environment, such as floors or tables, where virtual objects can be placed. 
  • Point cloud generation: ARCore generates a 3D point cloud of the environment, which helps in accurately placing virtual objects and understanding the spatial layout. 
  • Anchors: Virtual objects can be anchored to specific points or surfaces in the real world, ensuring they remain fixed in place even as the user moves around. 
  • Augmented images: ARCore can recognize and track images in the environment, allowing developers to create AR experiences triggered by specific images. 
  • Cloud Anchors: It enables shared AR experiences by allowing multiple users to interact with the same virtual objects in the same physical space. 
  • Depth API: ARCore can estimate depth in the scene, enabling more immersive AR experiences and better interaction with the environment. 
  • to AR development or for rapidly prototyping AR concepts.

What are suggested 3D requirements for ARCore applications?

File format support 

glTF 2.0/glb, using these extensions: 

  • KHR_materials_unlit 
  • KHR_texture_transform 
  • Looping skeletal animation 
  • Looping rigid animation 
  • Looping transform animation 

The animation will be played on a loop. If the glTF file contains multiple animations, Scene Viewer plays only the first animation. 

Recommended limits 

The overall performance of assets depends on setting constraints and making tradeoffs between vertices, materials, texture resolution, mesh per material, and other factors. Use the following guidelines to optimize your assets. 

  • Number of triangles: The recommended limit is 100,000 triangles, but targeting the lowest number will maintain high performance in Scene Viewer. 30,000 to 50,000 is an ideal range. 
  • Number of materials: The recommended limit is 10 materials, two of which can be alpha. Target the lowest number possible to keep the asset performing well. 
  • Mesh per material: 1 
  • Maximum texture resolution: 2048 × 2048 
  • Bone (including non-weighted joints): 254 (hard limit) 
  • Bone weights per vertex limit: 4 (hard limit) 
  • UV: 1 UV per mesh (hard limit) 
  • Model size: 10 MB (Bigger models may result in poor user experience.) 
Shadow support Hard shadows are automatically rendered by Scene Viewer when placing an object, so we recommend against baking shadows into your model. 
Texture support 
  • PNG format: PNG-24, indexed PNG-8. 
  • JPGs are preferred when there is no transparency because they reduce size. 
  • Color space: sRGB 
Material PBR 
File loading HTTPS 
  • Axis: right-handed, with these properties: 
  • +X is right 
  • +Y is up 
  • -Z points forward from the origin (in other words, the "front" of an asset should be facing +Z) 
  • Scale: 1 unit = 1 meter (as defined by the glTF specification to ensure the model is placed in AR in true scale) 

How to automatically optimize any asset to .glb for ARCore?

  1. Upload your 3D Asset to RapidPipeline
  2. Choose or create the preset 
  3. Download your optimized model 
  4. Open the file in AR model

Meet the Author

victor the pug

DGG Team

The 3D Pipeline Company

DGG is on a mission to streamline 3D workflows, at scale - making 3D accessible for everyone to use, easily!