Controlar el proceso de seguimiento mega
Este artículo describe cómo controlar varias funciones y parámetros en el proceso de seguimiento 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 que mega soporta.
![]()
Mega puede ejecutarse en casi todos los tipos de fuentes de datos de fotogramas, pero diferentes fuentes de datos de fotogramas tienen diferentes impactos en el efecto de seguimiento.
Por defecto, mega selecciona la fuente de datos de fotogramas de nivel más alto compatible con el dispositivo para realizar el seguimiento. La sesión compatible con mega en configuración predeterminada ya está configurada con fuentes de datos de fotogramas que admiten 6DoF y 5DoF.
Para admitir una fuente de datos de fotogramas de cierto nivel durante el funcionamiento de mega, se deben cumplir dos condiciones:
- La fuente de datos de fotogramas requerida está en el grupo de fuentes de fotogramas opcionales de la sesión.
- MegaTrackerFrameFilter.MinInputFrameLevel es mayor o igual que el nivel de CameraTransformType de la fuente de datos de fotogramas requerida.
Por ejemplo, para admitir seguimiento 3DoF en la 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 la compatibilidad con seguimiento 5DoF en la sesión predeterminada, se necesita:
- Eliminar InertialCameraDeviceFrameSource del grupo de fuentes de fotogramas de la sesión.
- Modificar MegaTrackerFrameFilter.MinInputFrameLevel a SixDof (incluso si no se modifica, como no hay fuente de fotogramas 5DoF, 5DoF no se utilizará).
Cuando no hay una fuente de fotogramas que cumpla las condiciones disponible, el ensamblaje de la sesión fallará.
Gestión de objetivos de seguimiento
Al usar mega, es necesario especificar el target, es decir, el block, que utiliza MegaTrackerFrameFilter.
Control de origen del block
En la mayoría de los casos, se recomienda mantener la configuración predeterminada, es decir, importar blocks 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).
![]()
Al mismo tiempo, es necesario especificar Block Root como el objeto MegaBlocks en la escena.
![]()
Modificar la opción Block Root Source puede especificar otras formas de origen de block. Por ejemplo, al importar datos usando ema, generalmente se selecciona la opción Internal o Mixed.
En el script, se puede modificar BlockHolder.BlockRootSource para lograr el mismo efecto.
Control de seguimiento de múltiples objetivos
En la mayoría de los escenarios de uso de mega, no es necesario utilizar múltiples objetivos. Antes de dominar cómo evitar que múltiples blocks se afecten entre sí, se recomienda colocar solo un block en una biblioteca de localización.
Consejo
En principio, mega calcula la posición del dispositivo en todos los blocks, en lugar de seleccionar de la biblioteca de localización el block que el dispositivo ve. Un uso mal considerado puede degradar el efecto debido a la confusión de datos, entre otros motivos.
Selecciona el objeto Mega Tracker bajo la sesión, modificar la opción Multi Block puede habilitar o deshabilitar la función de seguimiento de múltiples blocks.
![]()
En el script, se puede modificar BlockHolder.MultiBlock para lograr el mismo efecto.
Advertencia
Generalmente, solo puede haber un block simultáneamente en una biblioteca de localización.
Modificar la configuración de múltiples objetivos afectará el efecto de seguimiento, generalmente no se recomienda modificarlo. Úsalo bajo la guía del soporte técnico de easyar.
Si esta configuración se modificó durante la ejecución de la aplicación, asegúrate de indicar este punto al informar problemas a easyar.
Comprender el estado actual del sistema
En la configuración predeterminada de sesión, los mensajes de ui se mostrarán en la pantalla, que incluyen información sobre el estado de seguimiento de mega.
Cuando la localización es exitosa, mega block incluirá el texto de estado Found junto con el nombre y ID del block actualmente seguido:
![]()
Cuando la localización falla, mega block incluirá el texto de estado NotFound:
![]()
Consejo
NotFound es un estado normal, aparece frecuentemente durante todo el proceso de trabajo de mega, y cuando aparece este estado, el seguimiento aún continúa. Generalmente, en el desarrollo de aplicaciones no se necesita un manejo especial para el estado NotFound.
Usando el evento MegaTrackerFrameFilter.LocalizationRespond se puede obtener el estado de localización actual, para comprender si el sistema ha encontrado el objetivo de seguimiento actualmente.
El siguiente código muestra cómo usar este evento y los métodos de manejo de estados anómalos comunes que requieren atención de la aplicació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á despertando, es necesario que el usuario final espere
}
if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
{
// Se excedió el límite de qps, algunos usuarios finales fallarán aleatoriamente en la localización (calidad general de seguimiento disminuida)
// En este caso, generalmente se necesita pagar para aumentar el límite de qps y garantizar la calidad de seguimiento bajo el volumen actual de usuarios
}
if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
{
// Token expirado, esto solo ocurre al acceder al servicio mediante la interfaz de token
// Para abordar este problema, la aplicación necesita solicitar a su backend un token y llamar a MegaTrackerFrameFilter.UpdateToken para actualizar
}
}
Si la aplicación encuentra con frecuencia el estado MegaTrackerLocalizationStatus.RequestTimeout, generalmente indica que la condición de red del dispositivo para conectarse al servicio es deficiente. Se recomienda optimizar el entorno de red para mejorar la calidad del seguimiento. En escenarios donde no se puede mejorar la condición de red, se puede considerar aumentar el tiempo de espera de la solicitud.
Nota
No es posible obtener la pose devuelta por la localización a través de este evento.
De hecho, la pose devuelta por la localización no es necesaria en el desarrollo de aplicaciones. Easyar calculará localmente una pose más precisa después del retorno de la localización y la entregará a los desarrolladores para su uso. Esta pose ya se refleja en el transform del block, se puede consultar obtener resultados de ejecución de la sesión.
Pausar y continuar
La funcionalidad de seguimiento y localización de mega se puede pausar y continuar por separado.
Pausar el seguimiento
Establecer MegaTrackerFrameFilter.enabled en false puede pausar el seguimiento.
Por defecto, después de pausar el seguimiento, todo el contenido bajo los nodos block se ocultará.
Pausar la localización
Establecer MegaTrackerFrameFilter.EnableLocalization en false puede pausar la localización.
Advertencia
Pausar la localización afecta el efecto de seguimiento, generalmente no se recomienda modificarlo. Úsalo bajo la guía del soporte técnico de easyar.
Si la localización se pausó durante la ejecución de la aplicación, asegúrate de indicar este punto al informar problemas a easyar.
Control de servicio y solicitud
Se puede controlar el comportamiento de solicitud de servicio modificando los parámetros del componente MegaTrackerFrameFilter.
Intervalo y tiempo de espera de solicitud
Selecciona el objeto Mega Tracker bajo la sesión, modificar las opciones bajo Request Time Parameters puede ajustar el intervalo de tiempo y el tiempo de espera para solicitar el servicio.
![]()
En el script, se puede modificar MegaTrackerFrameFilter.RequestTimeParameters para lograr el mismo efecto.
Advertencia
Modificar el intervalo de solicitud afecta el efecto de seguimiento, generalmente no se recomienda modificarlo. Úsalo bajo la guía del soporte técnico de easyar.
Si el intervalo de solicitud se modificó durante la ejecución de la aplicación, asegúrate de indicar este punto al informar problemas a easyar.
Cambiar la biblioteca de localización
Usar MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) permite cambiar la biblioteca de localización durante el tiempo de ejecución. Al usar esta interfaz, la imagen de la cámara y la sesión no se interrumpirán.
Temas relacionados
- Prácticas recomendadas de ar session para mega presenta cómo crear y configurar una ar session adecuada para mega
- Agregar objetivo de seguimiento mega presenta cómo agregar el block objetivo de seguimiento de mega y cómo cargar modelos de block en el editor de unity para ayudar en el desarrollo
- Agregar un grupo de fuentes de fotogramas presenta cómo modificar el grupo de fuentes de fotogramas de la sesión
- Obtener resultados de ejecución de la sesión presenta cómo obtener los resultados de seguimiento de los componentes de la sesión
- Mensajes de ui presenta cómo usar mensajes de ui para mostrar el estado de la sesión