Descargar Actividades en PDF

Tema 1: Integración de objetos y modelos digitales

Actividad 1 — Proceso de integración de elementos digitales

El proceso de integración de modelos 2D, 3D, audio y video en la aplicación de RA sigue una secuencia específica para cada tipo de elemento:

Modelos 3D

1
Modelado: Se crean o descargan modelos 3D en Blender. Se optimiza la geometría (reducción de polígonos) para rendimiento móvil. Máximo 50,000 polígonos por modelo.
2
Texturizado: Se aplican texturas UV mapeadas. Se comprimen a máximo 1024x1024 px en formato PNG/JPG. Se configuran materiales con shaders optimizados para móvil (Mobile/Unlit o URP Lit).
3
Exportación: Se exporta en formato .FBX (para Unity) o .GLB/.GLTF (estándar web). Se verifican escala, rotación y punto de pivote.
4
Importación a Unity: Se importa al proyecto y se configura en la escena AR. Se ajustan posición (x, y, z respecto al marcador), tamaño (escala relativa 0.1 a 1.0) y orientación (rotación en los 3 ejes según la perspectiva deseada).

Imágenes 2D

Audio

Video

Configuración según el dispositivo

ParámetroSmartphoneTablet
Escala base del modelo0.3 - 0.50.5 - 0.8
Distancia de tracking30 - 100 cm40 - 150 cm
Max polígonos50,000100,000
Resolución texturas512x5121024x1024
FPS objetivo30 fps30-60 fps

Tema 2: Interacción del usuario en realidad aumentada

Actividad 2 — Proceso de interacción con objetos digitales

Tipos de Interacción

Posición

El objeto se posiciona en el espacio 3D real usando coordenadas relativas al marcador detectado o a un plano horizontal/vertical. Se usa ARRaycastManager para detectar superficies y anclar objetos.

Gestos (Gestures)

Tap: Seleccionar objeto / mostrar info.
Drag: Mover objeto en el plano.
Pinch: Escalar (zoom in/out).
Rotate: Dos dedos para rotar.

Superficie

Detección de planos horizontales (mesas, pisos) y verticales (paredes) usando ARPlaneManager. Los objetos se anclan a superficies detectadas manteniendo su posición en el mundo real.

Localización

Uso de GPS + brújula para experiencias de RA geolocalizadas. Activación de contenido AR según la ubicación física del usuario en el campus (geo-anchors).

Instrucciones y Sintaxis en Programación de RA (Unity + C#)

Detección de planos y colocación de objetos

// ARRaycastManager para detectar superficies
ARRaycastManager raycastManager;
List<ARRaycastHit> hits = new List<ARRaycastHit>();

void Update() {
    if (Input.touchCount > 0) {
        Touch touch = Input.GetTouch(0);
        if (touch.phase == TouchPhase.Began) {
            if (raycastManager.Raycast(touch.position, hits,
                TrackableTypes.PlaneWithinPolygon)) {
                Pose hitPose = hits[0].pose;
                Instantiate(prefabModelo, hitPose.position,
                    hitPose.rotation);
            }
        }
    }
}

Gestos: Escalar con Pinch

void HandlePinchScale() {
    if (Input.touchCount == 2) {
        Touch t0 = Input.GetTouch(0);
        Touch t1 = Input.GetTouch(1);

        float prevDist = (
            (t0.position - t0.deltaPosition) -
            (t1.position - t1.deltaPosition)
        ).magnitude;
        float currDist = (t0.position - t1.position).magnitude;

        float scaleFactor = currDist / prevDist;
        transform.localScale *= scaleFactor;

        float clampedScale = Mathf.Clamp(
            transform.localScale.x, 0.1f, 3.0f);
        transform.localScale = Vector3.one * clampedScale;
    }
}

Reconocimiento de imagen / marcador (Vuforia)

public class MarkerHandler :
    MonoBehaviour, ITrackableEventHandler
{
    void OnTrackingFound() {
        modelo3D.SetActive(true);
        audioSource.Play();
        modelo3D.transform.localPosition =
            new Vector3(0, 0.1f, 0);
        modelo3D.transform.localScale =
            Vector3.one * 0.5f;
    }

    void OnTrackingLost() {
        modelo3D.SetActive(false);
        audioSource.Stop();
    }
}

Rotación con gesto de dos dedos

void HandleTwoFingerRotation() {
    if (Input.touchCount == 2) {
        Touch t0 = Input.GetTouch(0);
        Touch t1 = Input.GetTouch(1);

        Vector2 prevDir = (t0.position - t0.deltaPosition)
            - (t1.position - t1.deltaPosition);
        Vector2 currDir = t0.position - t1.position;

        float angle = Vector2.SignedAngle(prevDir, currDir);
        transform.Rotate(Vector3.up, angle);
    }
}

Tema 3: Publicación de aplicaciones

Actividad 3 — Plataformas y proceso de publicación

Plataformas que soportan Realidad Aumentada

PlataformaSDK/FrameworkRequisitoTienda
AndroidARCoreAndroid 7.0+Google Play Store
iOSARKitiPhone 6s+, iOS 11+App Store
Web (WebXR)AR.js / Three.js / 8th WallChrome, SafariURL directa
HoloLensMRTKHoloLens 2Microsoft Store
Meta QuestPassthrough API + UnityQuest 3 / ProMeta Quest Store
SnapchatLens StudioSnapchat appLens Explorer
Instagram/FBSpark AR StudioIG/FB appSpark AR Hub

Proceso de Despliegue y Publicación

Publicación en Google Play Store (Android)

1
Preparación del Build: En Unity: File → Build Settings → Android. Configurar Player Settings: nombre del paquete, versión, API mínima (Android 7.0), íconos y splash screen.
2
Firma del APK/AAB: Crear un keystore (.jks) para firmar la aplicación. Generar un Android App Bundle (.aab) firmado.
3
Google Play Console: Crear cuenta de desarrollador ($25 USD, pago único). Crear nueva aplicación, completar ficha: título, descripción, capturas, categoría.
4
Subir y Publicar: Subir el archivo .aab. Completar notas de versión. Google revisa la app (1-7 días).

Publicación en App Store (iOS)

1
Requisitos: Mac con Xcode, Apple Developer Program ($99 USD/año), certificado de distribución.
2
Build desde Xcode: Unity exporta un proyecto Xcode. Se compila, firma y sube via Xcode o Transporter.
3
App Store Connect: Completar ficha, screenshots, precios. Enviar a revisión de Apple (1-3 días).

Distribución Interna (APK directo)