فهرست مطالب:

قرار دادن اشیاء AR در مختصات GPS در واقعیت افزوده: 8 مرحله (همراه با تصاویر)
قرار دادن اشیاء AR در مختصات GPS در واقعیت افزوده: 8 مرحله (همراه با تصاویر)

تصویری: قرار دادن اشیاء AR در مختصات GPS در واقعیت افزوده: 8 مرحله (همراه با تصاویر)

تصویری: قرار دادن اشیاء AR در مختصات GPS در واقعیت افزوده: 8 مرحله (همراه با تصاویر)
تصویری: Web Programming - Computer Science for Business Leaders 2016 2024, جولای
Anonim
قرار دادن اشیاء AR در مختصات GPS در واقعیت افزوده
قرار دادن اشیاء AR در مختصات GPS در واقعیت افزوده

این دستورالعمل به ساخت برنامه تلفن همراه برای قرار دادن اشیاء AR در مختصات GPS با ARkit و ARCore با استفاده از Unity3D می پردازد. من در مورد راه اندازی پروژه ای که با استفاده از Mapbox انجام دادم ، به شما کمک می کند تا پیام ها را در مکان های خاص GPS برچسب گذاری کرده و آنها را در پایگاه داده GameSparks بنویسید.

همه نرم افزارها و پروژه هایی که در اینجا استفاده می کنیم رایگان هستند.

اگر قبلاً آن را ندارید ، Unity 3D را از اینجا بارگیری کنید:

unity3d.com/

مرحله 1: موانع…

موانع…
موانع…

بنابراین این ساده ترین برنامه ای نیست که بتوان با محدودیت های کنونی GPS تلفن همراه و قطب نمای تلفن همراه ساخت.

اگر بخواهیم صادق باشیم ، اشیاء در جایی ظاهر می شوند که احتمالاً حدود 50 of از زمان ظاهر می شوند. بنابراین نتایج عالی نیستند ، اما هرچه به اجسام نزدیک می شوید دقیق تر می شوند.

در هر صورت ، من فکر می کنم یک راه بهتر برای AR مبتنی بر GPS در این مرحله استفاده از نقشه ای مانند بازی pokemon go است و وقتی به یک شی نزدیک می شوید ، دوربین باز می شود و فقط آن شی را درست در مقابل خود مشاهده می کنید. در آینده می خواهم یک آموزش کامل در مورد اجرای ساده تر مانند آن انجام دهم.

در هر صورت من قبلاً از Mapbox استفاده کرده ام و می دانم که آنها یک کلاس تبدیل دارند که عملکردهایی برای تبدیل مختصات GPS به مختصات Unity world دارد. من فکر می کردم فقط می توانم برخی از مختصات 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 و یک حساب بازی بازی ایجاد کنید که هر دو رایگان هستند. من فقط از بازی های بازی استفاده کردم تا بتوانم مختصات GPS را در جایی ذخیره کنم زیرا در حین آزمایش شما اغلب برنامه را دوباره راه اندازی و بازسازی می کنید.

همچنین ، این باید با ARkit و ARcore کار کند ، اما من در حال حاضر فقط آیفون دارم تا تنها چیزی باشد که می توانم آزمایش کنم.

مرحله 4: اجازه دهید برنامه کار کند

اجازه دهید برنامه کار کند!
اجازه دهید برنامه کار کند!

اولین چیزها ابتدا این پروژه را از GitHub بارگیری کنید:

فایل را در دسکتاپ خود ذخیره کرده و در Unity باز کنید.

به فایل بروید ، تنظیمات را ایجاد کنید و پلتفرم خود را به Android یا IOS تغییر دهید.

حالا به Mapbox.com بروید و اگر قبلاً یک حساب کاربری ندارید ایجاد کنید.

کلید API خود را بگیرید و به Unity برگردید ، روی برگه Mapbox در بالا کلیک کنید و روی پیکربندی کلیک کنید. کلید API خود را در آنجا بچسبانید.

اکنون یک حساب کاربری در GameSparks.com ایجاد کنید و روی دکمه در بالا سمت راست کلیک کنید تا یک برنامه جدید ایجاد کنید.

نام آن را هرطور که می خواهید بگذارید و کلید API و راز برنامه خود را کپی کنید. به یونیتی برگردید و برگه GameSparks را در بالا بیابید. روی پیکربندی کلیک کنید و اعتبار خود را نیز در آنجا بچسبانید.

مرحله 5: پیکربندی GameSparks

پیکربندی GameSparks
پیکربندی GameSparks

اکنون قبل از اینکه برنامه کار کند ، باید پایگاه داده خود را پیکربندی کنیم.

GameSparks از noSQL استفاده می کند ، بنابراین ما باید ابتدا یک مجموعه ایجاد کنیم و رویدادهایی را که برنامه ما برای خواندن ، نوشتن و حذف از سرور استفاده می کند اضافه کنیم.

ابتدا یک مجموعه جدید در وب سایت GameSparks ایجاد کنید و نام آن را هرطور که می خواهید بگذارید.

اکنون باید 3 رویداد ایجاد کنیم.

اولین کاری که برنامه باید انجام دهد نوشتن شی پیام در پایگاه داده است.

یک پیام دارای عرض ، طول جغرافیایی و سپس متن پیام است.

بنابراین به configurator بروید و یک رویداد جدید اضافه کنید. کد کوتاه "SAVE_GEO_MESSAGE" را ایجاد کنید.

هر چه می خواهید برای نام و توضیحات وارد کنید.

کد کوتاه را برای 3 ویژگی اضافه کنید:

"LAT" "LON"

"TEXT"

هر نوع داده را روی رشته تنظیم کنید و مقدار پیش فرض را روی 0 تنظیم کنید. نوع تجمیع پیش فرض هر یک را به "مورد استفاده در اسکریپت" تبدیل کنید.

مرحله 6: رویدادهای نهایی را اضافه کنید…

افزودن رویدادهای نهایی…
افزودن رویدادهای نهایی…

این برنامه همچنین باید همه پیامها را از پایگاه داده بارگیری کرده و هنگام شروع برنامه آنها را در Unity بخواند تا بتوانیم پیامهای AR را که در پایگاه داده ذخیره شده است قرار دهیم.

یک رویداد دیگر ایجاد کنید و آن را "LOAD_MESSAGE" بنامید

این رویداد نیازی به هیچ ویژگی ندارد. دوباره هر چه می خواهید برای نام و توضیحات قرار دهید.

همین کار را برای یک رویداد دیگر انجام دهید و آن را "REMOVE_MESSAGES" بنامید

این حتی نیازی به هیچ ویژگی ندارد.

در حال حاضر آخرین کاری که باید انجام دهیم این است که مقداری "کد ابری" یا کد سمت سرور اضافه کنیم که هنگام شروع هر رویداد از برنامه ما فراخوانی می شود.

مرحله 7: کد ابری را اضافه کنید

در GameSparks به تنظیم کننده و کد ابری بروید.

ما باید یک اسکریپت به هر رویدادی که تازه ساخته ایم اضافه کنیم.

در رویداد LOAD_MESSAGE این کد را اضافه کرده و ذخیره کنید:

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

var cursor = messageData.find ()؛

var allMessages = ؛

while (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 برگردید و روی play کلیک کنید و در کنسول "دستگاه تأیید شده …" را مشاهده کنید.

حالا به فایل بروید ، تنظیمات را بسازید و روی ساخت کلیک کنید. اگر تا به حال برنامه ای برای Android یا IOS ایجاد نکرده اید ، ممکن است نیاز به ایجاد یک حساب توسعه در Google یا Apple داشته باشید.

هنگامی که برنامه روی تلفن شما قرار دارد ، ابتدا باید مطمئن شوید که ARKit یا ARCore یک سطح زمین را تشخیص می دهد. حالا روی دکمه log در گوشه پایین سمت چپ کلیک کنید. چند قدم جلو بروید و خواهید دید که "تراز محاسبه شده" به رنگ آبی روشن ظاهر می شود. اکنون دکمه های UI باید ظاهر شوند و در صورت بارگیری هرگونه پیام در پایگاه داده شما ، در جهان قرار می گیرند.

برای برچسب زدن پیام GPS جدید AR به جایی بروید که می خواهید پیام باشد و روی نماد پیام در سمت راست بالای صفحه کلیک کنید. هر پیامی را که می خواهید تایپ کنید و روی دکمه pin کلیک کنید!

توصیه شده: