ARCore: o que é, recursos e tecnologia de realidade aumentada

Autor: IT Sectr Publicado: 2026-03-25 Tempo de leitura: 8 min

A plataforma ARCore — solução da Google para realidade aumentada no Android, que usa a câmera e os sensores inerciais do smartphone para rastrear a posição no espaço. De acordo com Google AR Developers, 2025, a plataforma suporta Motion Tracking, Environmental Understanding e Light Estimation — três tecnologias básicas para posicionar objetos virtuais em ambientes reais. A arquitetura multiplataforma permite que desenvolvedores criem aplicativos de RA para Android, iOS, Unity e Unreal Engine com uma base de código unificada.

Principais pontos

  • ARCore — plataforma de realidade aumentada da Google para Android, apresentada em 2018.
  • Motion Tracking — tecnologia de rastreamento de movimento do dispositivo baseada em IMU e análise de imagem.
  • Environmental Understanding — reconhecimento de planos, limites e relevo de superfícies.
  • Cloud Anchors — mecanismo de sincronização de objetos AR entre vários dispositivos através da nuvem.
  • ARCore SDK está disponível para Android (Kotlin/Java), iOS, Unity e Unreal Engine.

O que é ARCore?

ARCore é a plataforma de realidade aumentada da Google, anunciada em 2018 como sucessora do Project Tango em um formato mais leve e acessível. Ao contrário do Tango, que exigia sensores de profundidade especializados, o ARCore funciona em smartphones Android padrão usando apenas a câmera e os sensores inerciais (IMU).

O ARCore usa três tecnologias principais: Motion Tracking para rastrear a posição do dispositivo, Environmental Understanding para detectar planos horizontais e verticais, e Light Estimation para ajustar a iluminação de objetos virtuais ao ambiente real. Essas três tecnologias permitem posicionar objetos AR que parecem naturais em qualquer superfície.

De acordo com o Google I/O 2024, o ARCore é suportado em mais de 1 bilhão de dispositivos Android, incluindo smartphones Samsung, Xiaomi, Huawei, OnePlus, Google Pixel e outros. A plataforma está integrada ao Google Play Services for AR, permitindo atualizar o ARCore via Google Play Store independentemente da versão do Android.

Evolução do ARCore

Ao longo de seis versões, o ARCore passou por uma evolução significativa: ARCore 1.0 — rastreamento básico e detecção de planos; ARCore 1.2 — planos verticais e Augmented Images; ARCore 1.7 — Cloud Anchors para sessões multijogador; ARCore 1.10 — Augmented Faces para rastreamento de expressões faciais.

ARCore 1.20+ inclui Scene Semantic Understanding — reconhecimento de categorias de objetos (chão, teto, parede, móvel, planta, porta) através de um modelo ML TensorFlow Lite no dispositivo. A API Street View Geometry permite usar mapas de profundidade do Google Street View para navegação AR ao ar livre.

kotlin
// Inicializando uma sessão ARCore
val session = Session(context)
val config = Config(session)
config.lightEstimationMode =
    Config.LightEstimationMode.ENVIRONMENTAL_HDR
config.planeFindingMode =
    Config.PlaneFindingMode.HORIZONTAL_AND_VERTICAL
session.configure(config)

// Processamento de quadro
val frame = session.update()
val pointCloud = frame.acquirePointCloud()
val planes = session.getAllTrackables(
    Plane::class.java
)

Como o ARCore funciona

O ARCore usa uma abordagem híbrida: a IMU (Unidade de Medição Inercial) prevê a posição do dispositivo em alta frequência (até 1000 Hz), enquanto a odometria visual corrige erros com base na análise de pontos característicos da câmera a 30–60 Hz. Esta abordagem fornece precisão de rastreamento de aproximadamente 1–2 centímetros em condições estacionárias.

O processo de Environmental Understanding funciona em três etapas: primeiro, o ARCore encontra pontos característicos na imagem da câmera, depois identifica agrupamentos de pontos no mesmo plano e os aproxima para um polígono. Após o reconhecimento do plano, o ARCore cria um objeto Trackable do tipo Plane que é atualizado à medida que novos quadros são recebidos.

Segundo a Google, o ARCore detecta um plano de 10x10 centímetros a uma distância de até 1 metro da câmera. Para salas médias (20 m²), a digitalização completa de planos leva cerca de 2–4 segundos. Ao usar a Depth API com suporte a sensor ToF, a precisão do reconhecimento melhora em 40%.

Depth API e Scene Mesh

Depth API é uma tecnologia ARCore que constrói um mapa de profundidade da cena com base na análise estéreo da imagem da câmera. Em dispositivos com sensor ToF (Time-of-Flight), o mapa de profundidade é obtido instantaneamente com precisão de até 2 cm. Em dispositivos sem sensor de profundidade, a Depth API usa aprendizado de máquina para estimar a profundidade a partir de um único quadro, fornecendo precisão de cerca de 10 cm.

Scene Mesh é uma malha tridimensional do ambiente que o ARCore constrói em tempo real. A malha é usada para física de colisões, oclusão de objetos virtuais e renderização de sombras. O Scene Mesh está disponível em dispositivos com OpenGL ES 3.1 e suporte à Depth API, gerando até 500 mil polígonos por quadro.

kotlin
// Obtendo o mapa de profundidade
val depthImage = frame.acquireDepthImage16Bits()

// Colocando um objeto em um plano detectado
val hitResult = frame.hitTest(x, y)
    .firstOrNull { it.trackable is Plane }

hitResult?.let { result ->
    val anchor = session.createAnchor(
        result.hitPose
    )
    val model = ModelRenderable.builder()
        .setSourceId(R.raw.my_model)
        .build()
        .exceptionally { null }

    AnchorNode(anchor).apply {
        this.renderable = model.get()
    }
}

ARCore vs ARKit: comparação

Embora o ARCore e o ARKit resolvam as mesmas tarefas — rastreamento de posição, detecção de planos e estimativa de iluminação — suas abordagens e ecossistemas diferem. O ARCore prioriza a compatibilidade multiplataforma, enquanto o ARKit usa integração profunda com o hardware da Apple.

Principais diferenças: o ARCore funciona no Android e iOS através do ARCore SDK, enquanto o ARKit funciona apenas no iOS. O ARCore usa Cloud Anchors para sincronização via Firebase, enquanto o ARKit usa ARWorldMap para troca direta entre dispositivos. O ARCore com Depth API suporta sensores ToF, enquanto o ARKit com LiDAR fornece digitalização a laser com precisão de até 3 cm.

De acordo com testes comparativos da Google 2024, a precisão de rastreamento do ARCore em dispositivos com giroscópio e sensor ToF é comparável ao ARKit no iPhone com LiDAR — o erro não excede 2 cm a uma distância de 2 metros. Em dispositivos sem ToF, o ARCore fica atrás do ARKit na velocidade de inicialização: 3 segundos contra 0,5 segundos.

A escolha entre ARCore e ARKit depende do público-alvo: se o aplicativo for apenas para iOS, o ARKit oferece melhor desempenho e acesso a recursos exclusivos do LiDAR. Se for necessário suporte multiplataforma, o ARCore com o SDK ArcoreiOS permite usar uma base de código única com diferenças mínimas entre plataformas, embora com perda de algumas capacidades de hardware específicas de cada plataforma.

CaracterísticaARCoreARKit
PlataformaAndroid + iOS + Unity/UnrealApenas iOS
Sensor de profundidadeToF (opcional)LiDAR (modelos Pro)
SincronizaçãoCloud Anchors (Firebase)ARWorldMap (Multipeer)
Rastreamento facialAugmented FacesFace Tracking (TrueDepth)
Precisão VIO1–3 cm0,5–1 cm

Integrando ARCore em um aplicativo

A integração do ARCore começa com a adição da dependência do Google Play Services for AR no build.gradle: com.google.ar:core. O aplicativo deve verificar a disponibilidade do ARCore no dispositivo através de ArCoreApk.checkAvailability() — se o ARCore não estiver instalado, solicitar ao usuário que o instale da Google Play Store.

Um projeto básico de ARCore inclui: criar uma Session e Config, configurar um SurfaceView para exibição da câmera, iniciar a sessão via session.resume() e processar quadros via session.update(). Para renderização de objetos 3D, utiliza-se o Sceneform SDK (biblioteca da Google baseada em Filament) ou Unity/Unreal para cenas complexas.

A Google recomenda o Sceneform para aplicativos Kotlin — ele fornece componentes prontos: ModelRenderable para carregar modelos 3D (OBJ, glTF, FBX), ViewRenderable para incorporar visualizações Android em uma cena AR e MotionEvent para manipulação de toque. O Sceneform gerencia automaticamente o ciclo de vida da sessão AR e a liberação de recursos.

Tratamento de falhas de rastreamento

O ARCore pode perder o rastreamento em condições de pouca luz, superfícies uniformes ou movimentos rápidos do dispositivo. O estado de rastreamento está disponível através de frame.getTrackingState() — os valores são TRACKING, PAUSED e STOPPED. Ao transitar para PAUSED, recomenda-se pausar a renderização e mostrar orientações ao usuário: “Mova o dispositivo mais lentamente” ou “Vá para um local mais iluminado.”

Para recuperação automática após falha, o ARCore suporta relocalização com base em um mapa salvo de pontos característicos. O desenvolvedor pode salvar o mapa via session.serialize() e restaurá-lo via session.deserialize() — útil para experiências AR de longa duração onde o usuário retorna ao mesmo espaço físico. A restauração do mapa leva de 1 a 2 segundos, desde que o ambiente não tenha mudado significativamente.

kotlin
class ARCoreActivity : AppCompatActivity() {

    private lateinit var session: Session

    override fun onResume() {
        super.onResume()
        when (ArCoreApk.getInstance()
            .checkAvailability(this)
        ) {
            ArCoreApk.Availability.SUPPORTED_INSTALLED -> {
                session = Session(this)
                session.resume()
            }
            else -> {
                showInstallPrompt()
            }
        }
    }
}

Perguntas frequentes

Quais dispositivos suportam ARCore?

O ARCore é suportado em mais de 1 bilhão de dispositivos Android, incluindo Google Pixel 2+, Samsung Galaxy S7+, Xiaomi Mi 8+, Huawei P20+, OnePlus 6+, Sony Xperia XZ2+ e muitos outros. A lista completa de dispositivos certificados está publicada em developers.google.com/ar/devices.

É necessária internet para usar o ARCore?

As funções básicas do ARCore — Motion Tracking e Environmental Understanding — não requerem internet. Cloud Anchors e Augmented Images com referências em nuvem exigem conexão. A Depth API e o Scene Mesh funcionam completamente no dispositivo sem conexão de rede.

É possível criar aplicativos AR sem Sceneform?

Sim, o ARCore pode ser usado diretamente com OpenGL ES 3.1, com Unity ou Unreal Engine. O Sceneform é a opção recomendada para projetos simples em Kotlin, mas não é obrigatório. Para cenas 3D complexas com física realista, é melhor usar motores de jogo com suporte ao ARCore SDK.

Como o ARCore funciona em ambientes internos e externos?

O ARCore é otimizado para espaços internos com iluminação suficiente (100–500 lux). Em exteriores sob luz solar intensa, a precisão do rastreamento pode diminuir devido à superexposição da câmera. Para uso externo, a Google recomenda a API Street View Geometry, que fornece mapas de profundidade para locais urbanos.

Qual a diferença entre ARCore e Scene Viewer?

O Scene Viewer é um componente de interface de usuário pronto da Google para visualizar modelos 3D em AR sem escrever código, funcionando via WebXR. O ARCore é um SDK completo para criar experiências AR personalizadas com controle programático sobre todos os aspectos da sessão, rastreamento e renderização.

Resumo

  • ARCore — uma plataforma AR multiplataforma da Google, funcionando em Android e iOS.
  • Motion Tracking usa um híbrido de IMU e odometria visual para posicionamento preciso.
  • Cloud Anchors permitem sessões AR multiusuário com sincronização via Firebase.
  • Depth API constrói um mapa de profundidade da cena — por software ou através de sensor ToF.
  • Sceneform — o SDK recomendado para criar aplicativos AR em Kotlin com código mínimo.
  • Compatibilidade — mais de 1 bilhão de dispositivos Android com certificação ARCore.
  • Escolha entre ARCore e ARKit depende da plataforma alvo e requisitos de precisão.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também