Как отслеживать только один объект с помощью AR Foundation?
Пытаюсь реализовать отображение по одному 3D объекту для каждой целевой картинки. Под Android и iOS.
Звучит просто, а на деле мне не хватает данных об уровне детекции картинки. ARTrackedImageManager.trackablesChanged выдает 3 списка - added, updated, removed и казалось бы - строй логику. Но, added вызывается один раз для картинки, которая ниразу еще не трекалась. removed я не встречал еще ниразу. updated вызывается каждый тик детекции(а не когда данные действительно изменились) и предоставляет 3 стейта для каждого ранее добавленного изображения - None, Limited, Tracking.
Казалось бы, ну реагируй на то, что кто-то перешел в стейт Tracking. Но нет.
При переключении изображений(перевороте страниц в книжке) Android сообщает, что оба изображения в стейте Tracking, но не всегда, но часто. Какой из них лучше "Tracking" не понятно. Отображать только новый - нельзя будет отобразить предыдущий.
Для iPhone ситуация аналогичная по синусе, но сдвинута на фазу. Если Android уверен в тех изображениях, которых уже нет перед камерой, то iPhone вечно не уверен, что перед ним та же картинка что и была и постоянно щелкает между Limited/Tracking.
Мне кажется, я что-то упускаю. Может быть где-то есть информация о рейтинге распознавания картинок с библиотеки? Я бы хотел брать "самую вероятную", а не получать обрезанную информацию о всех картинках.
Помогите, кто чем может. Я уже не знаю куда читать,а сроки горят.
UDP. Чуть расширю вопрос с куском кода для иллюстрации.
void OnChanged(ARTrackedImagesChangedEventArgs eventArgs)
{
foreach (var newImage in eventArgs.added)
{
// Handle added event
// по факту срабатывает не при обнаружении картинки вообще, а по первому обнаружению и только
}
foreach (var updatedImage in eventArgs.updated)
{
// Handle updated event
// updatedImage.trackingState = (None/Limited/Tracking)
// Часто ситуации когда картинки уже нет перед камерой, а она все равно Tracking. Или как у iPhone, картинка еще перед камерой в фокусе и не частично - а все равно щелкает между Limited/Tracking.
}
foreach (var removedImage in eventArgs.removed)
{
// Handle removed event
// Работаю над проектом уже 2 недели и ниразу не видел что бы объект удалился
}
}