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.
![]()
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:
- La fuente de datos de fotogramas requerida debe estar en el grupo de fuentes de fotogramas seleccionables de la sesión.
- MegaTrackerFrameFilter.MinInputFrameLevel debe ser mayor o igual al nivel de CameraTransformType de la fuente de datos de fotogramas requerida.
Por ejemplo, para admitir seguimiento 3DoF en una sesión predeterminada, se necesita:
- Agregar ThreeDofCameraDeviceFrameSource al grupo de fuentes de fotogramas de la sesión.
- Modificar MegaTrackerFrameFilter.MinInputFrameLevel a ThreeDof.
Otro ejemplo: para eliminar soporte de seguimiento 5DoF en una sesión predeterminada, se necesita:
- Eliminar InertialCameraDeviceFrameSource del grupo de fuentes de fotogramas de la sesión.
- Modificar MegaTrackerFrameFilter.MinInputFrameLevel a SixDof (incluso sin modificarlo, al no existir fuente de fotogramas 5DoF, no se utilizará).
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).
![]()
Además, se debe especificar Block Root como el objeto MegaBlocks en la escena.
![]()
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.
![]()
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:
![]()
Cuando la localización falla, mega block muestra el texto de estado NotFound:
![]()
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.
![]()
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
- Prácticas recomendadas para ar session con mega explica cómo crear y configurar una ar session para mega
- Agregar objetivos de seguimiento para mega explica cómo agregar bloques y cargar modelos en unity para desarrollo
- Agregar un grupo de fuentes de fotogramas explica cómo modificar el grupo de fuentes de fotogramas de la sesión
- Obtener resultados de la sesión explica cómo obtener los resultados de seguimiento de los componentes de la sesión
- Mensajes de ui explica cómo usar mensajes de ui para mostrar el estado de la sesión