Table of Contents

Controlar el proceso de seguimiento de mega

Este artículo explica cómo controlar varias funciones y parámetros del proceso de seguimiento de mega para satisfacer las necesidades de diferentes escenarios de aplicación.

Antes de comenzar

Ajustar el nivel de soporte del dispositivo

La propiedad MegaTrackerFrameFilter.MinInputFrameLevel de MegaTrackerFrameFilter se utiliza para especificar el nivel mínimo de dispositivo compatible con mega.

alt text

Mega puede ejecutarse en casi cualquier tipo de fuente de datos de fotogramas, pero diferentes fuentes afectan de manera distinta al seguimiento.

Por defecto, mega selecciona la fuente de datos de fotogramas de nivel más alto soportada por el dispositivo para realizar el seguimiento. La sesión compatible con mega en configuración predeterminada ya incluye fuentes de datos de fotogramas compatibles con 6DoF y 5DoF.

Para que mega admita una fuente de datos de fotogramas de cierto nivel durante el funcionamiento, se deben cumplir dos condiciones:

Por ejemplo, para admitir seguimiento 3DoF en una sesión predeterminada, se necesita:

Otro ejemplo: para eliminar soporte de seguimiento 5DoF en una sesión predeterminada, se necesita:

Si no hay disponible ninguna fuente de fotogramas que cumpla las condiciones, el ensamblaje de la sesión fallará.

Gestión de objetivos de seguimiento

Al usar mega, es necesario especificar el target (bloque) utilizado por MegaTrackerFrameFilter.

Control del origen del bloque

En la mayoría de casos, se recomienda mantener la configuración predeterminada: importar bloques usando mega studio en el editor.

Selecciona el objeto Mega Tracker bajo la sesión; la opción Block Root Source debe permanecer como External (predeterminado).

alt text

Además, se debe especificar Block Root como el objeto MegaBlocks en la escena.

alt text

Modificar la opción Block Root Source permite especificar otros métodos de origen de bloques. Por ejemplo, al importar datos usando ema, normalmente se seleccionan las opciones Internal o Mixed.

En scripts, se puede modificar BlockHolder.BlockRootSource para lograr el mismo efecto.

Control de seguimiento multiobjetivo

En la mayoría de escenarios de uso de mega, no es necesario utilizar múltiples objetivos. Antes de dominar cómo evitar interferencias entre bloques, se recomienda tener solo un bloque por biblioteca de localización.

Consejo

En principio, mega calcula la posición del dispositivo en todos los bloques, no selecciona un bloque visible desde la biblioteca de localización. Un uso inadecuado podría degradar el rendimiento debido a confusión de datos.

Selecciona el objeto Mega Tracker bajo la sesión; modifica la opción Multi Block para habilitar o deshabilitar la función de seguimiento multiobjetivo.

alt text

En scripts, se puede modificar BlockHolder.MultiBlock para lograr el mismo efecto.

Advertencia

Generalmente, una biblioteca de localización solo debe contener un bloque simultáneamente.

Modificar la configuración multiobjetivo afecta el rendimiento del seguimiento; normalmente no se recomienda. Utiliza esta función bajo la guía de soporte técnico de easyar.

Si esta configuración se modifica durante la ejecución de la aplicación, asegúrate de mencionarlo al reportar problemas a easyar.

Comprender el estado actual del sistema

En la configuración predeterminada de sesión, los mensajes de ui se muestran en pantalla, incluyendo información del estado de seguimiento de mega.

Cuando la localización es exitosa, mega block muestra el texto de estado Found junto al nombre e id del bloque actual:

alt text

Cuando la localización falla, mega block muestra el texto de estado NotFound:

alt text

Consejo

NotFound es un estado normal que aparece frecuentemente durante el funcionamiento de mega. Cuando aparece, el seguimiento continúa. Normalmente no se requiere manejo especial en el desarrollo de aplicaciones.

Usando el evento MegaTrackerFrameFilter.LocalizationRespond se puede obtener el estado actual de localización, permitiendo saber si el sistema ha encontrado el objetivo.

Este código muestra cómo usar el evento y manejar estados excepcionales que podrían requerir atención:

private void Awake()
{
    megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
        
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
    var status = response.Status;
    wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
    if (wakingUpCount >= 5)
    {
        // El servicio se está iniciando; el usuario final debe esperar
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // Límite de qps excedido; algunos usuarios fallarán en localización (calidad general disminuida)
        // Normalmente se requiere mejorar el límite de qps para garantizar calidad con el volumen actual
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Token expirado (solo ocurre usando interfaz token)
        // La aplicación debe solicitar un nuevo token a su backend y llamar a MegaTrackerFrameFilter.UpdateToken
    }
}

Si la aplicación encuentra frecuentemente el estado MegaTrackerLocalizationStatus.RequestTimeout, normalmente indica problemas de red entre el dispositivo y el servicio. Se recomienda optimizar la red para mejorar la calidad. En entornos con red deficiente, se puede aumentar el tiempo de espera de solicitudes.

Nota

Este evento no proporciona la pose devuelta por la localización.

De hecho, la pose devuelta no es necesaria en desarrollo de aplicaciones. Easyar calcula localmente una pose más precisa después de la localización, disponible en el transform del bloque (ver obtener resultados de la sesión).

Pausar y reanudar

Las funciones de seguimiento y localización de mega pueden pausarse y reanudarse por separado.

Pausar el seguimiento

Establecer MegaTrackerFrameFilter.enabled en false pausa el seguimiento.

Por defecto, al pausar el seguimiento, todo el contenido bajo los nodos de bloque se oculta.

Pausar la localización

Establecer MegaTrackerFrameFilter.EnableLocalization en false pausa la localización.

Advertencia

Pausar la localización afecta el rendimiento del seguimiento; normalmente no se recomienda. Utiliza esta función bajo la guía de soporte técnico de easyar.

Si la localización se pausa durante la ejecución, asegúrate de mencionarlo al reportar problemas a easyar.

Control de servicio y solicitudes

Se pueden controlar los comportamientos de solicitud de servicio modificando parámetros del componente MegaTrackerFrameFilter.

Intervalo y tiempo de espera de solicitudes

Selecciona el objeto Mega Tracker bajo la sesión; modifica las opciones bajo Request Time Parameters para ajustar intervalos y tiempos de espera.

alt text

En scripts, se puede modificar MegaTrackerFrameFilter.RequestTimeParameters para lograr el mismo efecto.

Advertencia

Modificar el intervalo de solicitudes afecta el rendimiento del seguimiento; normalmente no se recomienda. Utiliza esta función bajo la guía de soporte técnico de easyar.

Si el intervalo se modifica durante la ejecución, asegúrate de mencionarlo al reportar problemas a easyar.

Cambiar biblioteca de localización

Usa MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) para cambiar la biblioteca de localización durante la ejecución. Esta interfaz mantiene la imagen de cámara y la sesión sin interrupciones.

Temas relacionados