جدول المحتويات:

وضع كائنات AR في إحداثيات GPS في الواقع المعزز: 8 خطوات (بالصور)
وضع كائنات AR في إحداثيات GPS في الواقع المعزز: 8 خطوات (بالصور)

فيديو: وضع كائنات AR في إحداثيات GPS في الواقع المعزز: 8 خطوات (بالصور)

فيديو: وضع كائنات AR في إحداثيات GPS في الواقع المعزز: 8 خطوات (بالصور)
فيديو: حل مشكله خرائط جوجل او خرائط ابل للايفون solve apple maps and Google maps for iPhones 2024, ديسمبر
Anonim
وضع كائنات AR في إحداثيات GPS في الواقع المعزز
وضع كائنات AR في إحداثيات GPS في الواقع المعزز

ستنتقل هذه التعليمات إلى إنشاء تطبيق جوال لوضع كائنات AR في إحداثيات GPS مع ARkit و ARCore باستخدام Unity3D. سأوجهك خلال إعداد مشروع قمت بإنشائه باستخدام Mapbox الذي يسمح لنا بتمييز الرسائل في مواقع GPS معينة وكتابتها في قاعدة بيانات GameSparks.

جميع البرامج والمشاريع التي سنستخدمها هنا مجانية.

قم بتنزيل Unity 3D هنا إذا لم يكن لديك بالفعل:

unity3d.com/

الخطوة 1: حواجز …

حواجز …
حواجز …

لذلك ليس هذا هو أسهل تطبيق يتم إنشاؤه مع القيود الحالية لنظام تحديد المواقع العالمي (GPS) وبوصلة الهاتف المحمول.

لكي نكون صادقين ، تظهر الأشياء حيث من المفترض أن تكون حوالي 50 ٪ من الوقت. لذا فإن النتائج ليست رائعة ، لكنها تصبح أكثر دقة كلما اقتربت من الأشياء.

في كلتا الحالتين ، أعتقد أن الطريقة الأفضل للواقع المعزز المعتمد على نظام تحديد المواقع العالمي (GPS) في هذه المرحلة هي استخدام خريطة مثل pokemon go وعندما تقترب من كائن تفتح الكاميرا وترى هذا الكائن فقط أمامك مباشرةً. في المستقبل ، أود أن أقوم ببرنامج تعليمي كامل حول تطبيق أكثر بساطة من هذا القبيل.

في كلتا الحالتين ، استخدمت Mapbox من قبل وأعلم أن لديهم فئة تحويل تحتوي على وظائف لتحويل إحداثيات GPS إلى إحداثيات Unity العالمية. اعتقدت أنه يمكنني تمرير بعض إحداثيات GPS وستظهر في المكان الذي أريده. لم يعمل.

تظهر الأشياء بشكل صحيح بالنسبة لبعضها البعض لكنها لم تكن في المكان المناسب. لذلك أجريت بعض الأبحاث ووجدت أن كاميرا الوحدة الخاصة بي تحتاج إلى محاذاة الشمال الحقيقي حتى تظهر الأشياء في المكان الصحيح.

المشكلة هي أن البوصلة الموجودة في هاتفك ليست دقيقة تمامًا على الإطلاق.

الخطوة الثانية: البوصلة الغبية

بوصلة غبية
بوصلة غبية
بوصلة غبية
بوصلة غبية

المشكلة الرئيسية هي عندما تضع الأشياء بعيدًا عن الكاميرا ، إذا كانت فكرة هاتفك عن الشمال الحقيقي بعيدة حتى بضع درجات ، فإن الأشياء البعيدة ستظهر بعيدًا جدًا.

كدت أتخلى عن هذا المشروع لكن صديقًا أخبرني عن مشروع GitHub هذا:

github.com/mapbox/mapbox-ar-unity

هذه محاولة للقيام "بالمقياس العالمي" للواقع المعزز من Mapbox حيث يتم تثبيت الكائنات على إحداثيات GPS بحيث يمكن لتجارب الواقع المعزز أن تعمل بالخارج لمسافات طويلة بدلاً من داخل غرفة صغيرة في منزلك.

يستخدم مشروعهم دلتا AR Position و GPS Position deltas لحساب زاوية هي الإزاحة من كاميرا AR إلى الشمال الحقيقي. لذلك ، قم بشكل أساسي بقراءة واحدة لنظام تحديد المواقع العالمي (GPS) عندما يبدأ المستخدم التطبيق واجعله يسير في خط مستقيم ويأخذ قراءة أخرى لنظام تحديد المواقع العالمي (GPS). ثم باستخدام هاتين النقطتين ، يمكنك معرفة الاتجاه الذي كان يسير فيه هذا الشخص (بافتراض أن الكاميرا الخاصة به تشير إلى الاتجاه الذي يسير فيه). وجدوا أن هذا كان أكثر دقة من استخدام البوصلة على الهاتف.

المشكلة الأخرى التي يحاولون حلها هي الانجراف مع ARkit. التتبع على ما يرام داخل غرفة صغيرة ولكن عندما تسير في الخارج لمسافات طويلة ينتهي الأمر بالكائنات AR بالانجراف بعيدًا عن المكان الذي من المفترض أن تكون فيه.

الخطوة 3: أخيرًا الحل

أخيرا حل!
أخيرا حل!

لذلك قدم مشروع Mapbox هذا طريقة للحصول على اتجاه مواجه موثوق به بالنسبة إلى الشمال الحقيقي ، لذلك كل ما تبقى هو مجرد وضع الأشياء في العالم.

انتهى بي الأمر بتوسيع هذا المثال قليلاً حتى أتمكن من وضع علامة على رسالة نصية في موقع GPS معين ثم كتابة هذه المعلومات إلى قاعدة بيانات GameSparks. هذا ما سأوضح لك كيفية استخدامه.

المشكلة الوحيدة في هذا المشروع هي أنه يجب عليك الحصول على محاذاة جيدة قبل استخدامها.

ما أعنيه بالمحاذاة هو أنه نظرًا لأن Mapbox تستخدم دلتا الموضع لحساب العنوان ، عند فتح التطبيق لأول مرة وعليك التأكد من اكتشاف مستوى أرضي ثم السير في خط مستقيم لفترة من الوقت حتى يتم حساب المحاذاة المناسبة.

وبهذا المعنى ، تعد تجربة المستخدم عقبة أخرى ، ولكن في تحسينات المشروع ، تقدم مثالاً على وضع مكعبات لأسفل أمام المستخدم للمشي خلالها لضمان محاذاة جيدة.

والآن بعد أن عرفت حدود هذا المشروع ، دعني أوضح لك كيفية استخدامه حتى يتمكن الرجال من اللعب. ستحتاج في النهاية إلى إنشاء حساب mapbox وحساب gamesparks ، وكلاهما مجاني. لقد استخدمت gamesparks حتى أتمكن من حفظ إحداثيات GPS في مكان ما لأنه أثناء الاختبار ، ستتم إعادة تشغيل التطبيق وإعادة بنائه كثيرًا.

أيضًا ، يجب أن يعمل هذا مع كل من ARkit و ARcore ولكن ليس لدي سوى iPhone في الوقت الحالي ، لذا كان هذا كل ما يمكنني اختباره.

الخطوة 4: لنجعل التطبيق يعمل

لنجعل التطبيق يعمل!
لنجعل التطبيق يعمل!

أول الأشياء أولاً قم بتنزيل هذا المشروع من GitHub:

احفظ الملف على سطح المكتب وافتحه في Unity.

انتقل إلى ملف ، وقم ببناء الإعدادات ، وقم بتبديل النظام الأساسي الخاص بك إلى Android أو IOS.

انتقل الآن إلى Mapbox.com وأنشئ حسابًا إذا لم يكن لديك حساب بالفعل.

احصل على مفتاح API الخاص بك والعودة إلى الوحدة ، انقر فوق علامة التبويب Mapbox في الأعلى ، وانقر فوق تكوين. الصق مفتاح API الخاص بك هناك.

قم الآن بإنشاء حساب على موقع GameSparks.com وانقر فوق الزر الموجود أعلى اليمين لإنشاء تطبيق جديد.

أطلق عليه ما تريد وانسخ مفتاح API وسر التطبيق. ارجع إلى الوحدة وابحث عن علامة تبويب GameSparks في الأعلى. انقر فوق تكوين ولصق بيانات الاعتماد الخاصة بك هناك أيضًا.

الخطوة 5: تكوين GameSparks

تكوين GameSparks
تكوين GameSparks

الآن قبل أن يعمل التطبيق ، نحتاج إلى تكوين قاعدة البيانات الخاصة بنا.

يستخدم GameSparks noSQL لذلك نحتاج أولاً إلى إنشاء مجموعة وإضافة الأحداث التي يستخدمها تطبيقنا للقراءة والكتابة والحذف من الخادم.

قم أولاً بإنشاء مجموعة جديدة على موقع GameSparks على الويب وقم بتسميتها كما تريد.

الآن نحن بحاجة إلى إنشاء 3 أحداث.

أول شيء يحتاجه التطبيق هو كتابة كائن رسالة إلى قاعدة البيانات.

تحتوي الرسالة على خط عرض وخط طول ثم نص الرسالة.

لذا انتقل إلى أداة التهيئة وأضف حدثًا جديدًا. اجعل الرمز القصير "SAVE_GEO_MESSAGE".

ضع ما تريد للاسم والوصف.

أضف الكود المختصر لـ 3 سمات:

"LAT" "LON"

"نص"

عيّن كل نوع من أنواع البيانات إلى سلسلة وقم بتعيين القيمة الافتراضية على 0. اجعل نوع التجميع الافتراضي لكل نوع على "مستخدم في البرنامج النصي".

الخطوة 6: إضافة الأحداث النهائية …

أضف الأحداث النهائية …
أضف الأحداث النهائية …

يحتاج التطبيق أيضًا إلى تحميل جميع الرسائل من قاعدة البيانات وقراءتها في Unity عند بدء تشغيل التطبيق حتى نتمكن من وضع رسائل AR مخزنة في قاعدة البيانات.

أنشئ حدثًا آخر واسمه "LOAD_MESSAGE"

هذا الحدث لا يحتاج إلى أي سمات. ضع مرة أخرى ما تريد للاسم والوصف.

افعل الشيء نفسه لحدث آخر وسمه "REMOVE_MESSAGES"

هذا حتى لا يحتاج إلى أي سمات أيضًا.

الآن آخر شيء يتعين علينا القيام به هو إضافة بعض "الشفرة السحابية" أو رمز الخادم الجانبي الذي يتم استدعاؤه عند بدء كل حدث من تطبيقنا.

الخطوة 7: قم بإضافة كود السحابة

في GameSparks ، انتقل إلى المُكوِّن ورمز السحابة.

نحتاج إلى إضافة نص لكل حدث قمنا به للتو.

في حدث LOAD_MESSAGE أضف هذا الرمز واحفظه:

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

var cursor = messageData.find () ،

var allMessages = ؛

بينما (cursor.hasNext ()) {

var obj = cursor.next () ،

حذف (obj ["_id"]) ؛

allMessages.push (obj) ؛

}

Spark.setScriptData ("all_Messages"، allMessages) ؛ // إرجاع كافة البيانات

في حدث 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 جديدة في مكان ما ، انتقل إلى الموقع الذي تريد أن تكون الرسالة فيه وانقر فوق رمز الرسالة في أعلى يمين الشاشة. اكتب أي رسالة تريدها وانقر فوق زر الدبوس!

موصى به: