विषयसूची:

संवर्धित वास्तविकता में जीपीएस निर्देशांक पर एआर वस्तुओं को रखना: 8 कदम (चित्रों के साथ)
संवर्धित वास्तविकता में जीपीएस निर्देशांक पर एआर वस्तुओं को रखना: 8 कदम (चित्रों के साथ)

वीडियो: संवर्धित वास्तविकता में जीपीएस निर्देशांक पर एआर वस्तुओं को रखना: 8 कदम (चित्रों के साथ)

वीडियो: संवर्धित वास्तविकता में जीपीएस निर्देशांक पर एआर वस्तुओं को रखना: 8 कदम (चित्रों के साथ)
वीडियो: Spyglass – how to measure the size of objects and the distance to them (iPhone, iPad, iOS) 2024, नवंबर
Anonim
संवर्धित वास्तविकता में जीपीएस निर्देशांक पर एआर वस्तुओं को रखना
संवर्धित वास्तविकता में जीपीएस निर्देशांक पर एआर वस्तुओं को रखना

यह निर्देशयोग्य एआर ऑब्जेक्ट्स को एआरकिट और एआरकोर के साथ यूनिटी 3 डी का उपयोग करके जीपीएस निर्देशांक पर रखने के लिए एक मोबाइल ऐप बनाने जा रहा है। मैं आपको मैपबॉक्स का उपयोग करके बनाई गई एक परियोजना की स्थापना के माध्यम से चलूंगा जो हमें विशेष जीपीएस स्थानों पर संदेशों को टैग करने और उन्हें गेमस्पार्क डेटाबेस में लिखने की अनुमति देता है।

हमारे द्वारा यहां उपयोग किए जाने वाले सभी सॉफ़्टवेयर और प्रोजेक्ट निःशुल्क हैं।

यदि आपके पास पहले से यूनिटी 3डी नहीं है तो यहां डाउनलोड करें:

unity3d.com/

चरण 1: बाधाएँ …

बाधाएँ…
बाधाएँ…

तो मोबाइल जीपीएस और मोबाइल कंपास की वर्तमान सीमाओं के साथ बनाने के लिए यह सबसे आसान ऐप नहीं है।

ईमानदार होने के लिए वस्तुएं दिखाई देती हैं जहां उन्हें लगभग 50% समय माना जाता है। तो परिणाम बहुत अच्छे नहीं होते हैं, लेकिन आप वस्तुओं के जितने करीब आते हैं, वे उतने ही सटीक होते जाते हैं।

किसी भी तरह से, मुझे लगता है कि इस बिंदु पर जीपीएस आधारित एआर के लिए एक बेहतर तरीका एक मानचित्र का उपयोग करना होगा जैसे पोकेमॉन गो करता है और जब आप किसी वस्तु के करीब पहुंचते हैं तो कैमरा खुलता है और आप केवल उस वस्तु को अपने सामने देखते हैं। भविष्य में मैं इस तरह के एक और अधिक सरल कार्यान्वयन पर एक पूर्ण ट्यूटोरियल करना चाहता हूं।

किसी भी तरह से मैंने पहले मैपबॉक्स का उपयोग किया है और मुझे पता है कि उनके पास एक रूपांतरण वर्ग है जिसमें जीपीएस निर्देशांक को एकता विश्व निर्देशांक में परिवर्तित करने के लिए कार्य हैं। मैंने सोचा था कि मैं बस कुछ जीपीएस निर्देशांक में पास कर सकता हूं और वे वहां दिखाई देंगे जहां मैं उन्हें चाहता था। काम नहीं किया।

वस्तुएं एक-दूसरे के सापेक्ष सही ढंग से दिखाई देती हैं लेकिन वे कभी भी सही जगह पर नहीं थीं। इसलिए मैंने कुछ शोध किया और पाया कि वस्तुओं को सही जगह पर दिखाने के लिए मेरे यूनिटी कैमरे को सही उत्तर के साथ संरेखित करने की आवश्यकता है।

समस्या यह है कि आपके फोन में कंपास कभी भी पूरी तरह सटीक नहीं होता है।

चरण 2: बेवकूफ कम्पास।

बेवकूफ कम्पास।
बेवकूफ कम्पास।
बेवकूफ कम्पास।
बेवकूफ कम्पास।

मुख्य समस्या यह है कि जब आप वस्तुओं को कैमरे से दूर रखते हैं, यदि आपके फोन का सही उत्तर का विचार कुछ डिग्री से भी दूर है, तो दूरी की वस्तुएं बहुत दूर दिखाई देंगी।

मैंने लगभग इस उद्यम को छोड़ दिया लेकिन एक मित्र ने मुझे इस गिटहब परियोजना के बारे में बताया:

github.com/mapbox/mapbox-ar-unity

यह मैपबॉक्स से "वर्ल्ड स्केल" एआर करने का एक प्रयास है जहां वस्तुओं को जीपीएस निर्देशांक के लिए लंगर डाला जाता है ताकि ऑगमेंटेड रियलिटी अनुभव आपके घर के एक छोटे से कमरे के बजाय लंबी दूरी पर काम कर सकें।

उनकी परियोजना एआर स्थिति डेल्टा और जीपीएस स्थिति डेल्टा का उपयोग एक कोण की गणना करने के लिए करती है जो एआर कैमरे से सही उत्तर की ओर ऑफसेट है। इसलिए मूल रूप से एक जीपीएस रीडिंग लें जब उपयोगकर्ता ऐप शुरू करता है और उन्हें एक सीधी रेखा में चलता है और दूसरा जीपीएस रीडिंग लेता है। फिर इन दो बिंदुओं से आप बता सकते हैं कि वह व्यक्ति किस दिशा में चल रहा था (मान लीजिए कि उनका कैमरा उस दिशा में इशारा कर रहा है जिस दिशा में वे चल रहे हैं)। उन्होंने पाया कि यह फोन पर कंपास का उपयोग करने से ज्यादा सटीक था।

दूसरा मुद्दा जो वे हल करने की कोशिश करते हैं वह है एआरकिट के साथ ड्रिफ्ट। एक छोटे से कमरे के अंदर ट्रैकिंग ठीक है, लेकिन जब आपके बाहर लंबी दूरी की पैदल दूरी पर एआर ऑब्जेक्ट समाप्त हो जाते हैं, जहां से उन्हें होना चाहिए था।

चरण 3: अंत में एक समाधान

अंत में एक समाधान!
अंत में एक समाधान!

तो इस मैपबॉक्स परियोजना ने सच्चे उत्तर के सापेक्ष एक विश्वसनीय दिशा प्राप्त करने का एक तरीका पेश किया ताकि जो कुछ बचा था वह केवल वस्तुओं को दुनिया में रखना था।

मैंने इस उदाहरण को थोड़ा विस्तारित किया ताकि मैं किसी विशेष जीपीएस स्थान पर एक टेक्स्ट संदेश टैग कर सकूं और फिर उस जानकारी को गेमस्पार्क डेटाबेस में लिख सकूं। यही मैं आपको दिखाने जा रहा हूं कि इसका उपयोग कैसे करना है।

इस परियोजना के साथ एकमात्र समस्या यह है कि इसका उपयोग करने से पहले आपको एक अच्छा संरेखण प्राप्त करना होगा।

संरेखण से मेरा तात्पर्य यह है कि चूंकि मैपबॉक्स हेडिंग की गणना करने के लिए स्थिति डेल्टा का उपयोग करता है, जब आप पहली बार ऐप खोलते हैं और आपको यह सुनिश्चित करना होता है कि एक ग्राउंड प्लेन का पता चला है और फिर एक उचित संरेखण की गणना होने तक थोड़ी देर के लिए एक सीधी रेखा में चलते हैं।

इस अर्थ में UX एक और बाधा है, लेकिन परियोजना के संवर्द्धन में वे एक अच्छा संरेखण सुनिश्चित करने के लिए उपयोगकर्ता के सामने क्यूब्स रखने का एक उदाहरण देते हैं।

तो अब जब आप इस परियोजना की सीमाओं को जानते हैं तो मैं आपको दिखाता हूं कि इसका उपयोग कैसे करें ताकि लोग खेल सकें। आपको अंततः एक मैपबॉक्स खाता और एक गेमपार्क खाता बनाना होगा जो दोनों निःशुल्क हैं। मैंने गेमपार्क का इस्तेमाल सिर्फ इसलिए किया कि मैं जीपीएस निर्देशांक कहीं बचा सकता हूं क्योंकि परीक्षण के दौरान आप ऐप को फिर से शुरू और पुनर्निर्माण करेंगे।

साथ ही, यह एआरकिट और एआरकोर दोनों के साथ काम करना चाहिए लेकिन मेरे पास इस समय केवल एक आईफोन है ताकि मैं परीक्षण कर सकूं।

चरण 4: ऐप को काम करने दें

चलो ऐप काम कर रहा है!
चलो ऐप काम कर रहा है!

सबसे पहले इस प्रोजेक्ट को GitHub से डाउनलोड करें:

फ़ाइल को अपने डेस्कटॉप पर सहेजें और इसे एकता में खोलें।

फ़ाइल पर जाएँ, सेटिंग्स बनाएँ, और अपने प्लेटफ़ॉर्म को Android या IOS पर स्विच करें।

अब Mapbox.com पर जाएं और यदि आपके पास पहले से खाता नहीं है तो एक खाता बनाएं।

अपनी एपीआई कुंजी को पकड़ो और एकता पर वापस जाएं, शीर्ष पर मैपबॉक्स टैब पर क्लिक करें और कॉन्फ़िगर करें पर क्लिक करें। वहां अपनी एपीआई कुंजी पेस्ट करें।

अब GameSparks.com पर एक अकाउंट बनाएं और नया ऐप बनाने के लिए ऊपर दाईं ओर दिए गए बटन पर क्लिक करें।

आप जो चाहें उसे कॉल करें और अपनी एपीआई कुंजी और ऐप सीक्रेट को कॉपी करें। एकता पर वापस जाएं और सबसे ऊपर गेमस्पार्क्स टैब खोजें। कॉन्फ़िगर पर क्लिक करें और वहां अपनी साख भी पेस्ट करें।

चरण 5: गेमस्पार्क कॉन्फ़िगर करें।

गेमस्पार्क कॉन्फ़िगर करें।
गेमस्पार्क कॉन्फ़िगर करें।

अब ऐप के काम करने से पहले, हमें अपने डेटाबेस को कॉन्फ़िगर करना होगा।

GameSparks noSQL का उपयोग करता है, इसलिए हमें पहले एक संग्रह बनाने और उन घटनाओं को जोड़ने की आवश्यकता है जो हमारा ऐप सर्वर से पढ़ने, लिखने और हटाने के लिए उपयोग करता है।

सबसे पहले गेमस्पार्क्स वेबसाइट पर एक नया संग्रह बनाएं और जो चाहें उसे कॉल करें।

अब हमें 3 ईवेंट बनाने की आवश्यकता है।

पहली चीज जो ऐप को करने की ज़रूरत है वह है डेटाबेस में संदेश वस्तु लिखना।

एक संदेश में एक अक्षांश, देशांतर और फिर संदेश का पाठ होता है।

तो विन्यासकर्ता पर जाएं और एक नई घटना जोड़ें। संक्षिप्त कोड "SAVE_GEO_MESSAGE" बनाएं।

नाम और विवरण के लिए जो कुछ भी आप चाहते हैं उसे डालें।

3 विशेषताओं के लिए संक्षिप्त कोड जोड़ें:

"लेट" "लोन"

"मूलपाठ"

प्रत्येक डेटा प्रकार को स्ट्रिंग पर सेट करें और डिफ़ॉल्ट मान को 0 पर सेट करें। प्रत्येक के डिफ़ॉल्ट एकत्रीकरण प्रकार को "स्क्रिप्ट में प्रयुक्त" बनाएं।

चरण 6: अंतिम ईवेंट जोड़ें…

अंतिम ईवेंट जोड़ें…
अंतिम ईवेंट जोड़ें…

ऐप को डेटाबेस से सभी संदेशों को लोड करने और ऐप शुरू होने पर उन्हें एकता में पढ़ने की भी आवश्यकता होती है ताकि हम डेटाबेस में संग्रहीत एआर संदेशों को रख सकें।

एक अन्य ईवेंट बनाएं और इसे "LOAD_MESSAGE" कहें

इस घटना को किसी विशेषता की आवश्यकता नहीं है। नाम और विवरण के लिए जो कुछ भी आप चाहते हैं उसे दोबारा डालें।

किसी अन्य ईवेंट के लिए भी ऐसा ही करें और इसे "REMOVE_MESSAGES" कहें

इसके लिए किसी विशेषता की भी आवश्यकता नहीं है।

अब अंतिम चीज जो हमें करने की जरूरत है वह है कुछ "क्लाउड कोड" या सर्वर साइड कोड जो हमारे ऐप से प्रत्येक ईवेंट शुरू होने पर कॉल किया जाता है।

चरण 7: क्लाउड कोड जोड़ें।

गेमस्पार्क्स में विन्यासकर्ता और क्लाउड कोड पर जाएं।

हमें अभी-अभी बनाई गई प्रत्येक घटना में एक स्क्रिप्ट जोड़ने की आवश्यकता है।

LOAD_MESSAGE इवेंट में यह कोड जोड़ें और इसे सेव करें:

वर संदेशडेटा = Spark.runtimeCollection ("जियोमैसेज");

वर कर्सर = messageData.find ();

वर सभी संदेश = ;

जबकि (कर्सर.हैसनेक्स्ट ()) {

वर obj = कर्सर.अगला ();

हटाएं (ओबीजे ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", AllMessages); // सभी डेटा लौटाएं

REMOVE_MESSAGES ईवेंट में यह कोड जोड़ें:

वर संदेशडेटा = Spark.runtimeCollection ("जियोमैसेज");

संदेशडेटा.निकालें ({});

अंत में SAVE_MESSAGES ईवेंट में इसे जोड़ें:

var geoMessageList = Spark.runtimeCollection ("जियोमैसेज");

var messageLat = Spark.getData ()। LAT;

वर संदेश लोन = Spark.getData ()। LON;

वर संदेश पाठ = Spark.getData ()। पाठ;

वर वर्तमान संदेश = {

"messLat": मैसेजलैट,

"मेसलॉन": मैसेजलॉन,

"messText": संदेश टेक्स्ट,

};

geoMessageList.insert (वर्तमान संदेश);

चरण 8: हम कर रहे हैं

हमने कर लिया!
हमने कर लिया!

यह प्रोजेक्ट गेमस्पार्क्स सर्वर के साथ प्रमाणित करने के लिए आपके डिवाइस की अद्वितीय आईडी का उपयोग करता है ताकि आप अब एकता पर वापस जा सकें और प्ले पर क्लिक कर सकें, और आपको कंसोल में "डिवाइस प्रमाणित …" देखना चाहिए।

अब फाइल में जाएं, सेटिंग्स बनाएं और बिल्ड पर क्लिक करें। यदि आपने कभी Android या IOS के लिए कोई ऐप नहीं बनाया है, तो आपको Google या Apple के साथ एक विकास खाता स्थापित करने की आवश्यकता हो सकती है।

एक बार जब ऐप आपके फोन पर हो तो आपको पहले यह सुनिश्चित करना होगा कि एआरकिट या एआरकोर एक ग्राउंड प्लेन का पता लगाता है। अब नीचे बाएँ कोने में लॉग बटन पर क्लिक करें। कुछ कदम आगे बढ़ें और आप हल्के नीले रंग में "गणना संरेखण" देखेंगे। अब UI बटन दिखाई देने चाहिए और यदि आपके डेटाबेस में कोई संदेश लोड किया गया है तो उन्हें दुनिया में रखा जाएगा।

किसी नए GPS AR संदेश को टैग करने के लिए उस स्थान पर जाएँ जहाँ आप संदेश चाहते हैं और स्क्रीन के शीर्ष दाईं ओर संदेश आइकन पर क्लिक करें। आप जो भी संदेश चाहते हैं उसे टाइप करें और पिन बटन पर क्लिक करें!

सिफारिश की: