Работа с базой Vuforia
Я еще не начал разрабатовать приложение так как нету еще опыта с unity и vuforia, но хочу спросить пару вопросов и советов у более опытных.
Те кто знают в Vuforia есть своя база "меток", с помощью которых показывают на экране AR обьекты.
При "рендеринге" приложения заранее заливаю нужные AR обьекты и их "метки" с базой Vuforia и все готовый apk. Но в будущем когда буду добавлять новые обьекты и метки надо заново "рендерить" приложение и обновлять в play market или можно как-то это по сети устроить?
Есть ли возможность с приложения пользователям загружать свои "метки" и AR обьекты в эту базу Vuforia, и отображалось у других пользователей тоже? Как маски в инсте кто-то создает, другие пользуются.
В голове у меня только одна мысль на второй вопрос, брать и писать какой-то скрипт-бота который якобы добавляю я, но за меня это делает скрипт.
Ответы (1 шт):
У Vuforia есть сервис Cloud Databases. Это позволяет создавать и хранить метки (объекты, цели, targets) независимо от кода приложения. Последовательность действий такаяя:
Создать новый проект в Unity.
Через Windows -> Package Mаnager установить Vuforia Engine AR (стабильная версия на январь 2021 - 8.1.12)
Создать лицензионный ключ для своего проекта (на официальном сайте).
В окне Hierarchy удалить объект Main Camera, добавить Vuforia Engine -> AR Camera.
В настройках AR камеры в Vuforia Configuration ввести созданный лицензионный ключ.
Создать Vuforia Engine -> Cloud Image -> Cloud Recognition и Vuforia Engine -> Cloud Image -> Image Target.
Создать облачную базу данных Cloud Database по инструкции.
В Cloud Recognition вставить ключи созданной базы данных.
Создать и добавить к Cloud Recognition скрипт SimpleCloudHandler с кодом:
using UnityEngine.UI; using UnityEngine; using Vuforia; using System.Collections; public class SimpleCloudHandler : MonoBehaviour, IObjectRecoEventHandler { private CloudRecoBehaviour mCloudRecoBehaviour; void Start() { mCloudRecoBehaviour = GetComponent<CloudRecoBehaviour>(); if (mCloudRecoBehaviour) { mCloudRecoBehaviour.RegisterEventHandler(this); } mCloudRecoBehaviour.CloudRecoEnabled = true; } public void OnInitialized(TargetFinder targetFinder) { Debug.Log("Инициализировано Cloud Reco"); } public void OnInitError(TargetFinder.InitState initError) { Debug.Log("Ошибка инициализации Cloud Reco " + initError.ToString()); } public void OnUpdateError(TargetFinder.UpdateState updateError) { Debug.Log("Ошибка обновления Cloud Reco " + updateError.ToString()); } public void OnStateChanged(bool scanning) { if (scanning) { ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); tracker.GetTargetFinder<ImageTargetFinder>().ClearTrackables(false); } } public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) { TargetFinder.CloudRecoSearchResult cloudRecoSearchResult = (TargetFinder.CloudRecoSearchResult)targetSearchResult; string nameOfTarget = cloudRecoSearchResult.TargetName; string metadataOfTarget = cloudRecoSearchResult.MetaData; //Используйте эти данные, как вам нужно, например, создайте элемент UI Text и выведите на экран название распознанного объекта }}
Добавляйте и удаляйте объекты в облачной базе данных, сколько хотите. Все изменения соответственно автоматически будут отображаться в работе приложения. Успехов!