Съдържание:

Поставяне на AR обекти в GPS координати в разширена реалност: 8 стъпки (със снимки)
Поставяне на AR обекти в GPS координати в разширена реалност: 8 стъпки (със снимки)

Видео: Поставяне на AR обекти в GPS координати в разширена реалност: 8 стъпки (със снимки)

Видео: Поставяне на AR обекти в GPS координати в разширена реалност: 8 стъпки (със снимки)
Видео: REDMI ЗАБЕЛЕЖКА 10 PRO ОБЗОР + ТЕСТОВЕ 📶 2024, Ноември
Anonim
Поставяне на AR обекти в GPS координати в разширена реалност
Поставяне на AR обекти в GPS координати в разширена реалност

Тази инструкция ще премине през създаването на мобилно приложение за поставяне на AR обекти в GPS координати с ARkit и ARCore, използвайки Unity3D. Ще ви преведа през създаването на проект, който направих с помощта на Mapbox, който ни позволява да маркираме съобщения на определени GPS местоположения и да ги записваме в база данни на GameSparks.

Целият софтуер и проекти, които ще използваме тук, са безплатни.

Изтеглете Unity 3D тук, ако все още нямате:

unity3d.com/

Стъпка 1: Пречки …

Пречки…
Пречки…

Така че това не е най -лесното приложение с настоящите ограничения на мобилния GPS и мобилния компас.

Честно казано обектите се появяват там, където би трябвало да са около 50% от времето. Така че резултатите не са страхотни, но те стават по -точни, колкото повече се доближавате до обектите.

Така или иначе, мисля, че по -добър начин за AR, базиран на GPS в този момент, би бил използването на карта, подобна на покемон go, и когато се приближите до обект, камерата се отваря и виждате само този обект точно пред вас. В бъдеще бих искал да направя пълен урок за по -проста реализация като тази.

Така или иначе съм използвал Mapbox преди и знам, че имат клас за преобразуване, който има функции за преобразуване на GPS координати в световни координати на Unity. Мислех, че мога просто да предам някои GPS координати и те ще се появят там, където ги искам. Не работи.

Обектите се показват правилно един спрямо друг, но никога не са били на правилното място. Затова направих проучване и установих, че камерата ми Unity трябва да бъде подравнена с истински север, за да могат обектите да се появят на правилното място.

Проблемът е, че компасът във вашия телефон никога не е напълно точен.

Стъпка 2: Глупав компас

Глупав компас
Глупав компас
Глупав компас
Глупав компас

Основният проблем е, когато поставяте обекти далеч от камерата, ако представата на вашите телефони за истински север е изключена дори на няколко градуса, обектите в далечината ще се появят много далеч.

Почти се отказах от това начинание, но един приятел ми разказа за този проект на GitHub:

github.com/mapbox/mapbox-ar-unity

Това е опит да се направи AR в световен мащаб от Mapbox, където обектите са закотвени към GPS координати, така че преживяванията с разширена реалност да могат да работят навън на дълги разстояния, а не само в малка стая във вашата къща.

Техният проект използва делтата на AR позиция и делтата на GPS позицията, за да изчисли ъгъл, който е изместен от AR камерата към истински север. Така че основно вземете едно GPS четене, когато потребителят стартира приложението, и ги накарайте да ходят по права линия и да вземат друго GPS отчитане. След това с тези две точки можете да кажете в коя посока е вървял този човек (ако приемем, че камерата им сочи в посоката, в която вървят). Те открили, че това е по -точно от използването на компаса по телефона.

Другият проблем, който се опитват да решат, е дрейфът с ARkit. Проследяването е добре в малка стая, но когато навън ходите на дълги разстояния AR обектите се отклоняват далеч от мястото, където трябва да бъдат.

Стъпка 3: Най -накрая решение

Най -накрая решение!
Най -накрая решение!

Така че този проект на Mapbox предложи начин да се получи надеждна посока на лице спрямо истинския север, така че всичко, което остана, беше просто да поставите обектите по света.

В крайна сметка разширих този пример малко, за да мога да маркирам текстово съобщение на определено GPS местоположение и след това да запиша тази информация в базата данни на GameSparks. Това ще ви покажа как да използвате.

Единственият проблем с този проект е, че трябва да получите добро подравняване, преди да може да се използва.

Това, което искам да кажа с подравняване, е, че тъй като Mapbox използва делтата на позицията за изчисляване на заглавието, когато за първи път отворите приложението и трябва да се уверите, че е открита земна равнина и след това да ходите по права линия за известно време, докато се изчисли правилното подравняване.

В този смисъл UX е друго препятствие, но в подобренията на проекта те дават пример за поставяне на кубчета пред потребителя, за да премине, за да се осигури добро подравняване.

Така че сега, когато знаете ограниченията на този проект, нека ви покажа как да го използвате, за да могат момчетата да играят. В крайна сметка ще трябва да създадете акаунт в mapbox и акаунт в gamesparks, като и двете са безплатни. Използвах gamesparks само за да мога да запазя GPS координати някъде, защото по време на тестването ще рестартирате и възстановявате приложението доста често.

Също така, това трябва да работи както с ARkit, така и с ARcore, но в момента имам само iPhone, така че това беше всичко, което можех да тествам.

Стъпка 4: Нека работи приложението

Нека приложението работи!
Нека приложението работи!

Първо, първо изтеглете този проект от GitHub:

Запазете файла на работния плот и го отворете в Unity.

Отидете на файл, създайте настройки и превключете вашата платформа на Android или IOS.

Сега отидете на Mapbox.com и създайте акаунт, ако все още нямате такъв.

Вземете своя API ключ и се върнете към Unity, щракнете върху раздела Mapbox в горната част и щракнете върху конфигуриране. Поставете там своя API ключ.

Сега създайте акаунт на GameSparks.com и кликнете върху бутона горе вдясно, за да създадете ново приложение.

Наречете го както искате и копирайте своя API ключ и тайна на приложението. Върнете се в Unity и намерете раздела GameSparks в горната част. Кликнете върху конфигуриране и поставете вашите идентификационни данни там.

Стъпка 5: Конфигурирайте GameSparks

Конфигурирайте GameSparks
Конфигурирайте GameSparks

Сега, преди приложението да работи, трябва да конфигурираме нашата база данни.

GameSparks използва noSQL, така че първо трябва да създадем колекция и да добавим събитията, които нашето приложение използва за четене, писане и изтриване от сървъра.

Първо създайте нова колекция на уебсайта на GameSparks и я наречете както искате.

Сега трябва да създадем 3 събития.

Първото нещо, което приложението трябва да направи, е да напише обект на съобщение в базата данни.

Съобщението има географска ширина, дължина и след това текстът на съобщението.

Така че отидете на конфигуратора и добавете ново събитие. Направете краткия код „SAVE_GEO_MESSAGE“.

Поставете каквото искате за името и описанието.

Добавете краткия код за 3 атрибута:

"LAT" "LON"

"ТЕКСТ"

Задайте всеки тип данни на низ и задайте стойността по подразбиране на 0. Направете стандартния тип агрегиране на всеки от тях на "използван в скрипта".

Стъпка 6: Добавете финалните събития…

Добавете последните събития …
Добавете последните събития …

Приложението също така трябва да зареди всички съобщения от базата данни и да ги прочете в Unity, когато приложението се стартира, за да можем да поставим AR съобщения, които се съхраняват в базата данни.

Създайте друго събитие и го наречете „LOAD_MESSAGE“

Това събитие не се нуждае от никакви атрибути. Отново поставете каквото искате за името и описанието.

Направете същото за друго събитие и го наречете „REMOVE_MESSAGES“

Това дори не се нуждае от никакви атрибути.

Сега последното нещо, което трябва да направим, е да добавим някакъв „облачен код“или код от страна на сървъра, който се извиква, когато всяко събитие се стартира от нашето приложение.

Стъпка 7: Добавете Cloud Code

В GameSparks отидете на конфигуратора и облачния код.

Трябва да добавим скрипт към всяко събитие, което току -що направихме.

В събитието LOAD_MESSAGE добавете този код и го запазете:

var messageData = Spark.runtimeCollection ("GeoMessage");

var cursor = messageData.find ();

var allMessages = ;

while (курсор.hasNext ()) {

var obj = cursor.next ();

изтриване (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("всички_съобщения", всички съобщения); // връща всички данни

В събитието REMOVE_MESSAGES добавете този код:

var messageData = Spark.runtimeCollection ("GeoMessage");

messageData.remove ({});

Накрая в събитието SAVE_MESSAGES добавете това:

var geoMessageList = Spark.runtimeCollection ("GeoMessage");

var messageLat = Spark.getData (). LAT;

var messageLon = Spark.getData (). LON;

var messageText = Spark.getData (). TEXT;

var currentMessage = {

"messLat": messageLat,

"messLon": messageLon,

"messText": messageText,

};

geoMessageList.insert (currentMessage);

Стъпка 8: ГОТОВО СИ

ГОТОВИ СМЕ!
ГОТОВИ СМЕ!

Този проект използва уникалния идентификатор на вашето устройство за удостоверяване със сървъра на GameSparks, така че сега можете да се върнете към Unity и да щракнете върху възпроизвеждане, а в конзолата трябва да видите „устройството е удостоверено …“

Сега отидете на файл, създайте настройки и щракнете върху изграждане. Ако никога не сте правили приложение за Android или IOS, може да се наложи да създадете акаунт за разработка с Google или Apple.

След като приложението е на телефона ви, първо трябва да се уверите, че ARKit или ARCore открива наземна равнина. Сега щракнете върху бутона за регистрация в долния ляв ъгъл. Вървете напред няколко стъпки и ще видите „изчислено подравняване“в светло синьо. Сега трябва да се появят бутоните на потребителския интерфейс и ако някакви съобщения бъдат заредени във вашата база данни, те ще бъдат поставени в света.

За да маркирате ново GPS AR съобщение някъде, отидете до мястото, където искате да бъде съобщението, и щракнете върху иконата на съобщението в горния десен ъгъл на екрана. Въведете каквото съобщение искате и щракнете върху бутона за закрепване!

Препоръчано: