Introducció

ARCore és la plataforma de Google per a la creació d'experiències de realitat augmentada (AR) en dispositius Android. Utilitza diverses tecnologies per integrar contingut virtual amb el món real a través de la càmera del dispositiu. En aquest tema, aprendrem a configurar ARCore en un projecte Android, a crear una experiència bàsica de realitat augmentada i a explorar algunes de les funcionalitats avançades que ofereix ARCore.

Objectius

  • Comprendre què és ARCore i com funciona.
  • Configurar un projecte Android per utilitzar ARCore.
  • Crear una aplicació bàsica de realitat augmentada.
  • Explorar funcionalitats avançades d'ARCore.

Requisits Previs

  • Coneixements bàsics de desenvolupament d'Android.
  • Familiaritat amb Android Studio.
  • Coneixements bàsics de programació en Java o Kotlin.

  1. Comprensió d'ARCore

Què és ARCore?

ARCore és una plataforma de Google que permet als desenvolupadors crear aplicacions de realitat augmentada. Utilitza tres capacitats clau per integrar contingut virtual amb el món real:

  1. Seguiment de Moviment: Permet al dispositiu entendre i seguir la seva posició relativa al món.
  2. Comprensió de l'Ambient: Detecta superfícies horitzontals i verticals i estima la il·luminació de l'ambient.
  3. Estimació de la Llum: Permet que els objectes virtuals es comportin de manera realista segons les condicions de llum del món real.

  1. Configuració d'un Projecte ARCore

Pas 1: Instal·lació de les Dependències

Primer, hem d'afegir les dependències necessàries al nostre projecte Android. Obre el fitxer build.gradle del mòdul de l'aplicació i afegeix les següents línies:

dependencies {
    implementation 'com.google.ar:core:1.23.0'
    implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.17.1'
}

Pas 2: Configuració del Manifest

Afegeix els permisos necessaris i la configuració d'ARCore al fitxer AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera.ar" android:required="true"/>

<application>
    <meta-data
        android:name="com.google.ar.core"
        android:value="required" />
</application>

Pas 3: Creació de l'Activitat Principal

Crea una nova activitat anomenada MainActivity i configura-la per utilitzar ARCore. Aquí tens un exemple bàsic en Kotlin:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.ar.core.ArCoreApk
import com.google.ar.sceneform.ux.ArFragment

class MainActivity : AppCompatActivity() {

    private lateinit var arFragment: ArFragment

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Verifica si ARCore està instal·lat
        when (ArCoreApk.getInstance().checkAvailability(this)) {
            ArCoreApk.Availability.SUPPORTED_INSTALLED -> {
                // ARCore està instal·lat
                arFragment = supportFragmentManager.findFragmentById(R.id.ux_fragment) as ArFragment
            }
            else -> {
                // ARCore no està disponible
                finish()
            }
        }
    }
}

Pas 4: Configuració del Layout

Crea un fitxer de disseny activity_main.xml per a la teva activitat principal:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <fragment
        android:id="@+id/ux_fragment"
        android:name="com.google.ar.sceneform.ux.ArFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

  1. Creació d'una Aplicació Bàsica de Realitat Augmentada

Pas 1: Afegir un Objecte Virtual

Per afegir un objecte virtual a la nostra escena, podem utilitzar el següent codi dins de MainActivity:

import com.google.ar.core.HitResult
import com.google.ar.core.Plane
import com.google.ar.sceneform.AnchorNode
import com.google.ar.sceneform.rendering.ModelRenderable
import com.google.ar.sceneform.ux.TransformableNode

class MainActivity : AppCompatActivity() {

    private lateinit var arFragment: ArFragment

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        arFragment = supportFragmentManager.findFragmentById(R.id.ux_fragment) as ArFragment

        arFragment.setOnTapArPlaneListener { hitResult: HitResult, plane: Plane, motionEvent: MotionEvent ->
            if (plane.type != Plane.Type.HORIZONTAL_UPWARD_FACING) {
                return@setOnTapArPlaneListener
            }

            val anchor = hitResult.createAnchor()
            val anchorNode = AnchorNode(anchor)
            anchorNode.setParent(arFragment.arSceneView.scene)

            ModelRenderable.builder()
                .setSource(this, R.raw.model)
                .build()
                .thenAccept { renderable ->
                    val node = TransformableNode(arFragment.transformationSystem)
                    node.setParent(anchorNode)
                    node.renderable = renderable
                    node.select()
                }
        }
    }
}

Pas 2: Afegir un Model 3D

Per afegir un model 3D, necessitem un fitxer .sfb o .glb. Pots crear aquests fitxers utilitzant eines com Blender o descarregar models des de llocs com Poly de Google. Afegeix el model al directori res/raw del teu projecte.

  1. Funcionalitats Avançades d'ARCore

Seguiment de Moviment

ARCore pot seguir el moviment del dispositiu i actualitzar la posició dels objectes virtuals en conseqüència. Això permet crear experiències més immersives i realistes.

Comprensió de l'Ambient

ARCore pot detectar superfícies horitzontals i verticals, així com estimar la il·luminació de l'ambient. Això permet col·locar objectes virtuals de manera més precisa i realista.

Estimació de la Llum

ARCore pot estimar la quantitat de llum present en l'ambient i ajustar la il·luminació dels objectes virtuals per fer-los semblar més realistes.

Exercici Pràctic

Objectiu

Crear una aplicació de realitat augmentada que permeti col·locar un model 3D en una superfície horitzontal detectada.

Passos

  1. Configura un projecte Android amb ARCore seguint els passos anteriors.
  2. Afegeix un model 3D al directori res/raw.
  3. Modifica MainActivity per col·locar el model 3D en una superfície horitzontal detectada.

Solució

La solució es troba en els passos detallats anteriorment. Assegura't de seguir cada pas i verificar que el model 3D es carrega correctament.

Conclusió

En aquest tema, hem après a configurar ARCore en un projecte Android, a crear una aplicació bàsica de realitat augmentada i a explorar algunes de les funcionalitats avançades que ofereix ARCore. Amb aquests coneixements, estàs preparat per crear experiències de realitat augmentada més complexes i immersives.

© Copyright 2024. Tots els drets reservats