Статья рассчитана на тех, кто ознакомился с этой инструкцией от Unity Setting Up AR Foundation — Unity Learn . Ниже привожу инструкцию по донастройке проекта, чтобы система распознавания лица работала и на Android и на IOS.
Инструкция по внедрению Face Tracking в проект от Unity хорошая, объясняет многие вещи и проект билдится и работает хорошо. Но только на Android. На IOS будет выдавать много непонятно откуда взявшихся ошибок. После трех-дневной пляски с бубном удалось таки настроить систему для корректной работы face tracking, с чем сегодня с вами и делюсь.
Окружение
-
Unity 2021.3.1f1
-
Xcode 14.2
Общие настройки
Первое что необходимо сделать это поставить библиотеки ARFoundation, ARKit и ARCore, все с одинаковой версии 5.Х или выше, так как начиная с этой версии в старой системе нет многих пакетов (их перенесли в ARKit и ARCore). Другими словами используя официальное руководство, у вас заработает система на Android, но на IOS будет ругаться, что «не может скачать пакеты» с сообщением «проверьте включены ли вы у вас компоненты», что приведет к бесполезному самоистязанию аля «где я накосячил?».
Включить нужные пакеты можно двумя способами:
-
Добавить пакет через менеджер пакетов по имени пакета «package manager»->»+»->»Add package by name…»


-
Прямо прописать в «..\Packages\manifest.json» пакеты и их версии (я использовал этот метод) (Скриншот манифеста приложен ниже)
Итого у вас должны быть добавлены следующие пакеты:
-
«com.unity.xr.arfoundation»: «5.0.3»
-
«com.unity.xr.arcore»: «5.0.3»
-
«com.unity.xr.arkit»: «5.0.3»
-
«com.unity.xr.management»: «4.3.1»
После добавления пакетов на всякий случай проверьте файла манифеста

В менеджере пакетов (package manager) это выглядит вот так

Если у вас до добавления пакетов уже стояла другая версия ARFoundation и т.п., их следует предварительно удалить из проекта
Также у себя я удалил пакет «com.unity.modules.xr», который остался с предыдущих версий пакетов

Теперь перейдем в саму сцену в проекте и изменим главные сущности. Первое на что стоит обратить внимание — это новые интерфейс уже знакомых объектов XROrigin и AR Session (о новых параметрах в интерфейсе можно почитать в официальном руководстве). Они также как и раньше должны присутствовать на сцене для корректной работы отслеживания лица. Нас интересуют настройки «ARCamera Manager», которая лежит в «XROrigin»->»Camera Offset»->Main Camera». Выставляем следующие важные для нас параметры:
-
«AutoFocus» снимаем галочку (Иначе высока вероятность что IOS не переключится на переднюю камеру и останется работать на задней, где не работает Face tracking)
-
«Facing Direction» выставляем «User»


После того как мы убедились, что все нужные пакеты стоят и параметры камеры выставлены правильно (также добавляем FaceManager и настраиваем FaceObject как в официальном руководстве по ссылке в начале статьи), приступаем к настройке юнити.
Настройка Unity под Android сборку
Первым делом настроим Android версию.
Переходим в «Project settings» и во вкладке «Player» в подразделе «Other settings», и удаляем Vulkan из списка «Graphics APIs» (снимаем галочку с «Auto Graphics API», если список скрыт)

Далее описываю значения именно тех параметров которые нужны для запуска приложения с отслеживанием лица.
-
В строчке «Minimum API Level» ставим значение «Android 7.0 ‘Nougat’ (API Level 24)»
-
В «Scripting backend» ставим «IL2CPP»
-
Ставим галочку напротив «ARM64» (без предыдущего пункта будет недоступен)
-
Если вы в проекте пользуетесь старой системой ввода, то в строке «Active Input Handling» ставьте «Both»

Далее в «Project Settings» переходим в раздел «XR Plug-in Managment» заходим на вкладку Android (значок андроид) и ставим галочку «Initialize XR on Startup» и «Google ARCore»

На этом настройки Android версии окончен, можно делать сборку и наслаждаться результатом 🙂
Настройка Unity под IOS сборку
Для настройки проекта под IOS сборку переходим в «Project Settings», заходим в «Player» и открываем вкладку «Other Settings». Меняем следующие параметры:
-
«Camera Usage Description» — нужно ввести сюда сообщение, которое будет показываться пользователю при запросе разрешения использовать камеру телефона (я оставил это поле по умолчанию «Required for augmented reality support.».
-
«Target minimum IOS Version» ставим «13.0»
-
Ставим галочку напротив «Requires ARKit support»
-
Если вы в проекте пользуетесь старой системой ввода, то в строке «Active Input Handling» ставьте «Both»
-
В поле «Script compilation» должны быть две строчки «UNITY_XR_ARKIT_LOADER_ENABLED» и «UNITY_XR_ARKIT_FACE_TRACKING_ENABLED». Если их нет, выключите/включите галочки в «XR Plug-in Manager» (о них напишу ниже)

Далее в «XR Plug-in Manager» выбираем раздел IOS (он так и отображается) и ставим галочки:
-
«Initialize XR on Startup»
-
Apple ARKit (отвечает за строчку «UNITY_XR_ARKIT_LOADER_ENABLED» в «Other Settings»)

Дальше перейдем в «Apple ARKit» — это подпункт пункта «XR Plug-in Manager». Там ставим галочку напротив «Face tracking» (эта галочка отвечает за строчку «UNITY_XR_ARKIT_FACE_TRACKING_ENABLED» в «Other Settings»)

На этом настройка Unity для IOS проекта завершена и можно смело билдить и тестировать проект под Айфоны.
Надеюсь, моя инструкция Вам помогла. Приятного пользования 🙂
ссылка на оригинал статьи https://habr.com/ru/post/717908/
Добавить комментарий