Как я могу переключить сгенерированный объект Ar или включить / отключить AR в любое время в Unity с помощью Arkit2.0? - PullRequest
0 голосов
/ 29 мая 2020

Сначала извините за мой отстой Engli sh.

Я хочу сделать приложение для отслеживания объектов AR IOS. Я загружаю проект unity на bitbucket ( ссылка ). Это это arkit-plugin, и я использую вызов сцены "UnityARObjectAnchor".

Все настройки идут хорошо. Я просматриваю .arobject и помещаю его в "CokeCanObject". И я поместил префаб в "GenerateObjectAnchor" в этой сцене. В результате, когда я открываю приложение на своем ipad. Он откроет камеру, просканирует объект и сразу же появится сборный объект.

Но я не хочу, чтобы приложение сканировало сразу после открытия камеры. Я хочу, чтобы сканирование началось после того, как я нажму кнопку «Пуск». Прежде чем нажимать кнопку запуска, я хочу, чтобы моя камера была открыта.

Я пробую сделать это несколькими способами.

1. Я установил null в поле «prefab to generate» в «GenerateObjectAnchorCokeCan» ( объект в сцене, который управляет созданием префаба.), когда я нажимаю start, я помещаю префаб в поле. Результат: если я просканирую объект до того, как нажму кнопку старт. Когда я нажимаю start, app cra sh, поэтому я думаю, что это поле не может быть нулевым.

2. Сначала я помещаю префаб в поле, но я установил false в «GenerateObjectAnchorCokeCan.active». Нажимаю старт, меняю active на true. Результат - app cra sh.

3. Я делаю то же самое со скриптом «Generate Object Anchor». Включить выключить. Приложение по-прежнему cra sh.

4. Я поставил префаб, который сначала ничего не значил. Когда я нажимаю кнопку «Старт», я переключаюсь на сборку, которую действительно хочу создать. Результат: сборные не изменились. Это все еще пустой префаб.

5. Я нашел решение в stackoverflow, которое может сбросить сцену arkit. Я поместил метод.

publi c void ResetScene () {ARKitWorldTrackingSessionConfiguration sessionConfig = new ARKitWorldTrackingSessionConfiguration (); UnityARSessionNativeInterface.GetARSessionNativeInterface (). RunWithConfigAndOptions (sessionConfig, UnityARSessionRunOption.ARSessionRunOptionRemoveExistingAnchors); UnityARSessionNativeInterface.GetARSessionNativeInterface (). RunWithConfigAndOptions (sessionConfig, UnityARSessionRunOption.ARSessionRunOptionResetTracking); }

Прежде, чем я нажму «Старт». Я помещаю пустой префаб. Когда я нажимаю start, я вызываю этот метод и переключаюсь на префаб, который мне действительно нужен. Результат: пустой префаб фактически переключается на другой префаб, фактически пустой префаб очищается. Но мой префаб не появился.

Я заметил в «Создать привязку к объекту». Метод Add 、 Update 、 RemoveObjectAnchor следует за событием UnityARSessionNativeInterface, поэтому должен быть какой-то способ вызвать этот сценарий для перезапуска сканирования. Я не знаю, что делать.

Спасибо за пациента.

...