Controlar el proceso de seguimiento de Mega Go
Este artículo explica cómo controlar las funciones y parámetros del proceso de seguimiento de Mega Go para satisfacer las necesidades de distintos escenarios de aplicación.
Antes de empezar
- Consulta ¿Mi función de localización ya se puede usar? para confirmar que el mapa correcto se haya descargado.
Flujo de trabajo del tracker
El flujo de trabajo del tracker es el siguiente:
flowchart LR
subgraph startup_graph[Inicio]
direction TB
sstart((Inicio de session))
create[Creación nativa]
load(Cargar target)
verify[Verificación de prueba]
init_g[[Inicialización]]
end
subgraph init_graph[Inicialización]
direction TB
init_{Inicialización 6DoF correcta<br>o no 6DoF}
init[[Proceso de inicialización del tracking local]]
detecting[[Detección]]
tracking_g[[Tracking]]
end
subgraph tracking_graph[Tracking]
direction TB
tracking[[Tracking continuo]]
end
subgraph stopping_graph[Detención]
direction TB
unload(Descargar target)
dispose[Destrucción nativa]
sstop([Detención de session])
end
sstart --> create --> load --> verify --> init_g
init --> init_ --> |Yes| detecting --> tracking_g
unload --> dispose --> sstop
init_ --> |No| init
startup_graph --> init_graph
init_graph --> tracking_graph
tracking_graph --> stopping_graph
El proceso se divide aproximadamente en varias etapas:
- Inicio:
- Después de que la session se inicia, el tracker de la capa nativa se crea.
- Tras Start() del target, este se carga en el tracker correspondiente.
- Para los datos de prueba, es necesario validar en línea la elegibilidad de prueba; solo después de que la validación sea correcta se pasa a la siguiente etapa.
- Inicialización:
- Cuando se usa una frame source de 6DoF, entra en el proceso local de inicialización del tracking.
- La inicialización local del tracking puede tardar un poco; depende de la complejidad de la escena y de la capacidad del dispositivo, y normalmente también está relacionada con el algoritmo usado por la capa inferior de la frame source.
- Cuando se usa una frame source que no es 6DoF, se omite la etapa de inicialización local y se empieza directamente a detectar.
- El proceso de detección también puede tardar un poco, según lo fácil que sea localizar la escena y la calidad de captura y mapeo de los datos.
- Con la configuración predeterminada, el contenido de esta etapa no se mostrará; se puede controlar este comportamiento mediante las opciones del componente ActiveController.
- Cuando se usa una frame source de 6DoF, entra en el proceso local de inicialización del tracking.
- Seguimiento:
- El tracker seguirá rastreando continuamente el block actual.
- Con la configuración predeterminada, solo se mostrará el contenido bajo los nodos target que estén en estado de seguimiento (TargetController.IsTracked ==
true); este comportamiento se puede controlar mediante las opciones del componente ActiveController.
- Detención:
- Después de que la session se detiene, el target se descarga y el tracker de la capa nativa se destruye.
Ajustar el nivel de soporte del dispositivo
La propiedad MegaGoTrackerFrameFilter.MinInputFrameLevel de MegaGoTrackerFrameFilter se usa para especificar el nivel mínimo de dispositivo compatible con Mega.
![]()
Mega Go puede ejecutarse en casi todo tipo de fuentes de frame, pero cada fuente de frame afecta de forma distinta al resultado del tracking.
De forma predeterminada, Mega selecciona la fuente de frame del nivel más alto compatible con el dispositivo para realizar el tracking. La session compatible con Mega Go en la configuración predeterminada ya está configurada con fuentes de frame compatibles con 6DoF y 5DoF.
Para que Mega admita una fuente de frame de cierto nivel en tiempo de ejecución, deben cumplirse dos condiciones:
- La fuente de frame requerida está en el grupo de fuentes de frame opcionales de la session.
- MegaGoTrackerFrameFilter.MinInputFrameLevel es mayor o igual que el nivel de CameraTransformType de la fuente de frame requerida.
Por ejemplo, para admitir tracking 3DoF en la session predeterminada, se necesita:
- Añadir ThreeDofCameraDeviceFrameSource al grupo de fuentes de frame de la session.
- Cambiar MegaGoTrackerFrameFilter.MinInputFrameLevel a ThreeDof.
Por otro ejemplo, para eliminar el soporte de tracking 5DoF de la session predeterminada, se necesita:
- Eliminar InertialCameraDeviceFrameSource del grupo de fuentes de frame de la session.
- Cambiar MegaGoTrackerFrameFilter.MinInputFrameLevel a SixDof (incluso si no se modifica, como no hay ninguna fuente de frame 5DoF, 5DoF no se usará).
Cuando no haya disponible ninguna fuente de frame que cumpla las condiciones, el ensamblado de la session fallará.
Conocer el estado actual del sistema
Con la configuración predeterminada de la session, los mensajes de UI se mostrarán en pantalla e incluirán información de estado de Mega Go.
El estado del tracker se mostrará junto a Mega Go: , por ejemplo Tracking o VerifyingTrial. Durante la detección y el tracking, también se mostrarán actualizaciones de localización debajo.
![]()
El estado de tracking del block cargado actualmente se mostrará debajo de Mega Go: , con el formato Block (<trackingStatus>): <name> (<id>). <name> es el nombre del block y <id> es el ID del block. trackingStatus puede ser Tracking o NotTracking, que indican respectivamente si el block actual está siendo rastreado.

La propiedad MegaGoTrackerFrameFilter.Status permite obtener el estado actual y conocer el funcionamiento del tracker. Cuando aparezca un estado de error, se puede obtener el estado de error mediante MegaGoTrackerFrameFilter.Error y realizar el tratamiento correspondiente.
El siguiente código muestra cómo usar estas propiedades y cómo tratar los estados anómalos más comunes que requieren atención de la aplicación:
void HandleTrackerStatus()
{
if (tracker.Status == MegaGoTrackerStatus.Error)
{
if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
{
// la verificacion local fallo; se recomienda comprobar si data ha caducado o ya no es valido (los datos de prueba dejan de ser validos despues de convertir la version de prueba a la version oficial).
}
else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
{
// la verificacion local fallo; se recomienda comprobar si el archivo target esta completo.
}
else
{
// otros errores.
}
}
else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
{
// se esta verificando el target de prueba. Si la verificacion tarda demasiado, se recomienda comprobar la conexion de red.
}
else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
{
// la entrada VIO se esta inicializando. Si la inicializacion tarda demasiado, se recomienda indicar al usuario que optimice el modo de uso.
// por ejemplo: "intente orientar la camara hacia delante en diagonal y mueva el dispositivo ampliamente de izquierda a derecha 5 veces."
}
}
Usa el evento MegaGoTrackerFrameFilter.LocalizationRespond para obtener actualizaciones de localización.
Pausar y continuar
Configura MegaGoTrackerFrameFilter.enabled en false para pausar el tracking.
De forma predeterminada, después de pausar el tracking, todo el contenido bajo los nodos block se ocultará.
Temas relacionados
- Buenas prácticas de AR Session para Mega Go presenta cómo crear y configurar una AR Session adecuada para Mega Go
- Añadir objetivos de tracking de Mega Go presenta cómo añadir blocks de objetivo de tracking de Mega Go y cómo cargar modelos block en Unity Editor para ayudar al desarrollo
- Añadir un grupo de fuentes de frame presenta cómo modificar el grupo de fuentes de frame de la session
- Obtener el resultado de ejecución de la session presenta cómo obtener el resultado de tracking del componente session
- Mensajes de UI presenta cómo usar mensajes de UI para mostrar el estado de la session