1. قبل از شروع
Geospatial Creator in Unity، که توسط ARCore و کاشیهای سهبعدی Photorealistic از پلتفرم نقشههای Google ارائه شده است، به شما امکان میدهد به سرعت تجربههای واقعیت افزوده (AR) را برای طول و عرض جغرافیایی خاص بسازید و تجسم کنید، همه در ویرایشگر Unity. این میتواند مدت زمانی را که برای ساختن یک صحنه AR موقعیتیافته برای اپلیکیشن شما نیاز دارد تا حد زیادی کاهش دهد، اما اگر بخواهید چندین تجربه مشابه در مکانهای مختلف ایجاد کنید، چه؟ با استفاده از C# API در Geospatial Creator، می توانید این کار را نیز انجام دهید.
در این لبه کد، کد C# را می نویسید که از Geospatial Creator و Places API از پلتفرم نقشه های گوگل برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می کند. تجربیات به دست آمده را می توان قبل از کامپایل شدن در یک برنامه در ویرایشگر Unity بررسی و تنظیم کرد.
پیش نیازها
- دانش اولیه AR
- دانش اولیه ARCore Geospatial API
چیزی که یاد خواهید گرفت
- نحوه استفاده از API در Geospatial Creator برای ایجاد و تجسم یک تجربه جغرافیایی در چندین مکان.
- نحوه استفاده از Places API از پلتفرم نقشه های گوگل برای یافتن مکان مکان ها.
- چگونه تجربه AR را در دستگاه خود اجرا کنید.
آنچه شما نیاز دارید
2. محیط خود را تنظیم کنید
برای استفاده از Geospatial Creator، باید مجوز دسترسی به کاشیهای سهبعدی Photorealistic، خدمات ARCore در Google Cloud و Places API از پلتفرم Google Maps را تنظیم کنید.
یک پروژه Google Cloud راه اندازی کنید
این آزمایشگاه کد به یک پروژه Google Cloud با فعال بودن صورتحساب برای دسترسی به APIهای سرور Google نیاز دارد. تنظیم صورتحساب برای این نرمافزار کد الزامی است، اما فقط در صورتی از شما هزینه دریافت میشود که پروژه از سهمیه خدمات بدون هزینه خود فراتر رود.
برای راه اندازی یک پروژه در Google Cloud، این مراحل را دنبال کنید:
- یک پروژه در کنسول Google Cloud ایجاد کنید.
- در کادر متنی نام پروژه ، یک نام مناسب مانند
ARCore Geospatial Project
وارد کنید و سپس هر مکانی را انتخاب کنید. - روی ایجاد کلیک کنید.
- در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
- به فعال کردن صورتحساب مراجعه کنید و قیمت کاشیهای سهبعدی Photorealistic و قیمتگذاری Places API (جدید) را بررسی کنید.
Map Tiles API را فعال کنید
Map Tiles API کاشی های سه بعدی Photorealistic را ارائه می دهد که در ویرایشگر Unity قابل مشاهده هستند.
ARCore API را فعال کنید
ARCore API در Google Cloud به شما امکان می دهد به ARC Geospatial API در دستگاه مورد نظر دسترسی داشته باشید.
Places API را فعال کنید
API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید، که از آنها در کدها برای یافتن مکان های مرتبط استفاده خواهید کرد. این API نتایج جستجو و مختصات جغرافیایی مکان ها را ارائه می دهد.
یک کلید API برای پروژه خود ایجاد کنید
برای استفاده از احراز هویت کلید API برای تأیید اعتبار برنامه خود با خدمات Google Cloud راه دور، این مراحل را دنبال کنید:
- در کنسول Google Cloud در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
- در بالای صفحه، روی Create Credentials کلیک کنید و سپس کلید API را انتخاب کنید.
- به کلید توجه کنید زیرا برای مراحل بعدی به آن نیاز دارید.
نرم افزار را راه اندازی کنید
برای شروع کار با نرم افزار Geospatial Creator، مراحل زیر را دنبال کنید:
- این مخزن را شبیه سازی کنید.
- Unity Hub را دانلود کنید و از آن برای نصب نسخه یونیتی 2022.3 استفاده کنید. مطمئن شوید که ابزارهای ساخت اختیاری Android یا iOS را نصب می کنید.
- در Unity Hub، Add > Add project from disk را فشار دهید.
- در پانل Hierarchy ، AR Geospatial Creator Origin را انتخاب کنید.
- در کادر متنی Google Maps Tile API Key ، کلید API را وارد کنید و سپس
Enter
(یاreturn
در macOS) را فشار دهید. - در Edit > Project Settings > XR Plug-in Management > ARCore Extensions ، از احراز هویت کلید API برای Android یا iOS استفاده کنید و کلید API را وارد کنید.
- در File > Build Settings ، پلتفرم مورد نظر را به Android یا iOS تغییر دهید.
3. اولین لنگر خود را ایجاد کنید
در این کد لبه، شما یک لنگر AR ایجاد می کنید که می تواند در مکان های مختلف استفاده شود. شما از کتابخانه های عمومی در سانفرانسیسکو، کالیفرنیا، به عنوان مثال استفاده می کنید، اما با خیال راحت از مکان های نزدیک خود استفاده کنید.
درباره مؤلفه مبدأ خالق جغرافیایی
هر صحنه یونیتی که با Geospatial Creator ساخته شده است دقیقاً به یک Geospatial Creator Origin نیاز دارد. این شی بازی نقطه مرجع برای تبدیل مقادیر عرض جغرافیایی، طول جغرافیایی و ارتفاع در دنیای واقعی به مختصات بازی Unity است.
پروژه نمونه حاوی یک مبدأ خالق مکانی است که از سزیوم برای رندر کردن کاشی های سه بعدی فوتورئالیستی در نمای Scene
ویرایشگر استفاده می کند و به شما امکان می دهد دقیقاً در کجای جهان محتوای AR شما ظاهر شود.
مبدا را حرکت دهید
مبدا Geospatial Creator را به طول و عرض جغرافیایی شعبه کتابخانه اصلی سانفرانسیسکو منتقل کنید.
برای استفاده از ادغام داخلی Geospatial Creator با Places API برای جابجایی خودکار مبدا به مکان صحیح، این مراحل را دنبال کنید:
- در پنل Hierarchy ، شی بازی Geospatial Creator Origin را انتخاب کنید.
- در پانل بازرس ، روی جستجوی مکان کلیک کنید.
- در گفتگوی جستجو،
San Francisco Public Library
تایپ کنید. اولین نتیجه باید در 100 خیابان لارکین باشد. - روی Apply to objects کلیک کنید تا نتیجه جستجو در مبدا اعمال شود. باید ببینید که طول و عرض جغرافیایی مبدا به مختصات جدید به روز می شود.
یک لنگر Geospatial Creator به صحنه اضافه کنید
اکنون که یک Origin وجود دارد، با استفاده از GameObject > XR > AR Geospatial Creator Anchor، یک لنگر Geospatial Creator اضافه کنید. بهطور پیشفرض، لنگر با مبدأ قرار میگیرد.
از این لنگر برای قرار دادن محتوای 3 بعدی AR خود استفاده کنید. مدل سه بعدی کتاب همراه با نمونه پروژه قرار داده شده است.
برای قرار دادن کتاب در صحنه خود، این مراحل را دنبال کنید:
- در پانل Project ، مدل Book را به صفحه نمایش ویرایشگر بکشید.
- در پانل سلسله مراتب ، مطمئن شوید که کتاب فرزند لنگری است که قبلا ایجاد کردهاید. هر شیء بازی کودک لنگر Geospatial Creator نسبت به لنگر قرار می گیرد.
- در پانل سلسله مراتب ، کتاب را انتخاب کنید. مقادیر موقعیت آن را روی 0، 0، 0 قرار دهید.
وقتی به این مدل در نمای ویرایشگر نگاه می کنیم، آشکار است که چیزی اشتباه است: ارتفاع پیش فرض لنگر زیر سطح سقف کتابخانه است، در حالی که باید بالای آن شناور باشد.
در حالی که میتوانید شی را در ویرایشگر حرکت دهید تا ارتفاع تقریبی WGS84 را بیابید، ترجیح داده میشود لنگرهای Geospatial را بهعنوان لنگر پشت بام در این موقعیت پیکربندی کنید تا ارتفاع آنها به طور خودکار نسبت به سقف سازهای که در بالا قرار دارند ثابت شود.
- برای انجام این کار، پانل بازرس لنگر را باز کنید و ویژگی
Altitude Type
رویRooftop
قرار دهید.
پس از انجام این کار، توجه داشته باشید که ارتفاع لنگر در نمای ویرایشگر تغییر نمی کند. این به این دلیل است که ارتفاع لنگر در زمان اجرا زمانی که لنگر برای لنگرهای پشت بام و زمین حل می شود تعیین می شود. برای تجسم لنگر روی پشت بام در نمای Scene
، میتوانید از دکمه Snap To Tile استفاده کنید. این ارتفاع لنگر را مطابق با کاشی در نمای Scene
تنظیم می کند، در حالی که بر ارتفاع لنگر حل شده در زمان اجرا تأثیر نمی گذارد.
- برای اینکه مدل به جای اینکه روی پشت بام کتابخانه شناور باشد، پارامتر
Altitude relative to rooftop
تغییر دهید تا 15 متر بالاتر از پشت بام باشد.
مدل اکنون به خوبی بر فراز کتابخانه شناور است!
پروژه شما اکنون یک صحنه AR جغرافیایی کامل، شامل تمام اجزای سیستم AR مورد نیاز، مبدأ خالق مکانی و یک لنگر با یک مدل پیوست دارد.
سپس، لنگرهای تکراری را در مکانهای کتابخانه اضافی ایجاد کنید.
4. مکان های لنگر جدید را با Places API پیدا کنید
API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید. در این کد لبه، شما از این API برای یافتن دیگر شاخههای کتابخانههای عمومی در سانفرانسیسکو استفاده میکنید و از آن نتایج برای ایجاد یک لنگر Geospatial Creator برای ده نتیجه جستجوی بعدی استفاده میکنید.
- برای شروع، روی Assets > Scripts > Editor کلیک کنید و سپس فایل
AnchorDuplicator.cs
را باز کنید. این فایل مقداری کد boilerplate را ارائه می دهد که به شما کمک می کند با Places API شروع کنید و نتایج آن را تجزیه کنید.
با Places API احراز هویت کنید
- خط زیر را در کلاس
AnchorDuplicator
بیابید:private const string API_KEY = "<YOUR_API_KEY_HERE>";
- کلید بدست آمده در مراحل راه اندازی را جایگزین <YOUR_API_KEY_HERE> کنید.
برای عبارت جستجو از API Places پرس و جو کنید
با تکمیل تنظیمات مجوز API Places، می توانید کدی بنویسید که درخواست POST
را آغاز می کند.
- برای انجام این کار، متد
CreatePlacesRequest
را پیدا کنید و از تعریف متد زیر استفاده کنید: اکنون، زمانی که متدstring postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + " \"locationBias\": { \"circle\": { " + " \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " + " \"radius\": 10000 }" + " }" + "}"; string url = "https://places.googleapis.com/v1/places:searchText"; UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json"); request.SetRequestHeader("X-Goog-Api-Key", apiKey); request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location"); return request;
CreatePlacesRequest
فراخوانی می شود، درخواستی ارسال می شود کهsearchTerm
در دایره ای با محوریتlat
وlon
جستجو می کند.
کار خود را تست کنید
قبل از ادامه، باید تأیید کنید که تماسها با Places API موفق هستند.
- توابع را در ویرایشگر یونیتی اجرا کنید:
- در Google AR Codelab ، روی Run Places Request کلیک کنید.
- کنسول Unity را باز کنید. باید ببینید نتایج ظاهر می شوند.
5. به صورت برنامه ای لنگرها را به مکان ها اضافه کنید
اکنون که تأیید کردید که API Places نتایج را پیدا می کند، لنگرهای Geospatial Creator جدید در هر مکان مشخص شده توسط نتایج ایجاد کنید.
یک آیتم منو ایجاد کنید
- در کلاس
AnchorDuplicator
، متدCreateNewAnchorsFromPlaces
را پیدا کنید و از تعریف متد زیر استفاده کنید: این آیتم منو درخواستی را که قبلاً شروع شده است بررسی میکند و از اولینif (_places == null) { Debug.LogError("Cannot create anchors: Places has not been initialized."); return; } // You start with only one anchor in the scene, which you want to copy: var prototypeAnchorObject = GameObject .FindObjectOfType<ARGeospatialCreatorAnchor>() .gameObject; foreach (var place in _places) { var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject); var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>(); anchor.Latitude = place.location.latitude; anchor.Longitude = place.location.longitude; newAnchorObject.name = place.displayName.text; }
ARGeospatialCreatorAnchor
در صحنه شما به عنوان نمونه اولیه برای ایجاد لنگرها، در هر مکان در نتیجه Places API استفاده میکند. - از آیتم جدید Create New Anchors from Places Response در Google AR Codelab برای ایجاد لنگرها استفاده کنید.
- باید ببینید که چندین لنگر در صفحه سلسله مراتب ظاهر می شوند.
موقعیت های لنگر را بررسی کنید
برای تأیید اینکه همه داراییها قبل از اجرای برنامه در مکانهای صحیح قرار دارند، این مراحل را دنبال کنید:
- روی یک لنگر اضافه شده در صفحه سلسله مراتب کلیک کنید.
- F را فشار دهید.
- لنگر را در نمای
Scene
بررسی کنید. - اگر یک لنگر در مکان درستی نیست، روی Snap to Tile کلیک کنید، یا مقادیر
Latitude
،Longitude
، یاEditor Override Altitude
به صورت دستی تغییر دهید.
6. دارایی را در AR مشاهده کنید
برای مشاهده دارایی در AR در دستگاه Android یا iOS با پشتیبانی ARCore ، این مراحل را دنبال کنید:
- روی File > Build Settings کلیک کنید و سپس پلتفرم های ساخت Android یا iOS را انتخاب کنید.
- روی Switch platform کلیک کنید.
- مطمئن شوید که دستگاه توسعه شما متصل است و برای توسعه پیکربندی شده است.
- روی ساخت و اجرا کلیک کنید.
- تأیید کنید که برنامه در دستگاه شما اجرا می شود.
- از مکانهایی بازدید کنید که محتوا را در آنجا لنگر انداختهاید. اگر نمونهها را تغییر ندادهاید، مکانها کتابخانههای عمومی در سانفرانسیسکو هستند.
7. نتیجه گیری
تبریک می گویم! شما یک برنامه Unity نوشتید که از Geospatial Creator و Google Maps Platform Places API برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده میکند. ما امیدواریم که بتوانید از این دانش برای گسترش دسترسی محتوای Geospatial Creator خود استفاده کنید!
بیشتر بدانید
1. قبل از شروع
Geospatial Creator in Unity، که توسط ARCore و کاشیهای سهبعدی Photorealistic از پلتفرم نقشههای Google ارائه شده است، به شما امکان میدهد به سرعت تجربههای واقعیت افزوده (AR) را برای طول و عرض جغرافیایی خاص بسازید و تجسم کنید، همه در ویرایشگر Unity. این میتواند مدت زمانی را که برای ساختن یک صحنه AR موقعیتیافته برای اپلیکیشن شما نیاز دارد تا حد زیادی کاهش دهد، اما اگر بخواهید چندین تجربه مشابه در مکانهای مختلف ایجاد کنید، چه؟ با استفاده از C# API در Geospatial Creator، می توانید این کار را نیز انجام دهید.
در این لبه کد، کد C# را می نویسید که از Geospatial Creator و Places API از پلتفرم نقشه های گوگل برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می کند. تجربیات به دست آمده را می توان قبل از کامپایل شدن در یک برنامه در ویرایشگر Unity بررسی و تنظیم کرد.
پیش نیازها
- دانش اولیه AR
- دانش اولیه ARCore Geospatial API
چیزی که یاد خواهید گرفت
- نحوه استفاده از API در Geospatial Creator برای ایجاد و تجسم یک تجربه جغرافیایی در چندین مکان.
- نحوه استفاده از Places API از پلتفرم نقشه های گوگل برای یافتن مکان مکان ها.
- چگونه تجربه AR را در دستگاه خود اجرا کنید.
آنچه شما نیاز دارید
2. محیط خود را تنظیم کنید
برای استفاده از Geospatial Creator، باید مجوز دسترسی به کاشیهای سهبعدی Photorealistic، خدمات ARCore در Google Cloud و Places API از پلتفرم Google Maps را تنظیم کنید.
یک پروژه Google Cloud راه اندازی کنید
این آزمایشگاه کد به یک پروژه Google Cloud با فعال بودن صورتحساب برای دسترسی به APIهای سرور Google نیاز دارد. تنظیم صورتحساب برای این نرمافزار کد الزامی است، اما فقط در صورتی از شما هزینه دریافت میشود که پروژه از سهمیه خدمات بدون هزینه خود فراتر رود.
برای راه اندازی یک پروژه در Google Cloud، این مراحل را دنبال کنید:
- یک پروژه در کنسول Google Cloud ایجاد کنید.
- در کادر متنی نام پروژه ، یک نام مناسب مانند
ARCore Geospatial Project
وارد کنید و سپس هر مکانی را انتخاب کنید. - روی ایجاد کلیک کنید.
- در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
- به فعال کردن صورتحساب مراجعه کنید و قیمت کاشیهای سهبعدی Photorealistic و قیمتگذاری Places API (جدید) را بررسی کنید.
Map Tiles API را فعال کنید
Map Tiles API کاشی های سه بعدی Photorealistic را ارائه می دهد که در ویرایشگر Unity قابل مشاهده هستند.
ARCore API را فعال کنید
ARCore API در Google Cloud به شما امکان می دهد به ARC Geospatial API در دستگاه مورد نظر دسترسی داشته باشید.
Places API را فعال کنید
API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید، که از آنها در کدها برای یافتن مکان های مرتبط استفاده خواهید کرد. این API نتایج جستجو و مختصات جغرافیایی مکان ها را ارائه می دهد.
یک کلید API برای پروژه خود ایجاد کنید
برای استفاده از احراز هویت کلید API برای تأیید اعتبار برنامه خود با خدمات Google Cloud راه دور، این مراحل را دنبال کنید:
- در کنسول Google Cloud در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
- در بالای صفحه، روی Create Credentials کلیک کنید و سپس کلید API را انتخاب کنید.
- به کلید توجه کنید زیرا برای مراحل بعدی به آن نیاز دارید.
نرم افزار را راه اندازی کنید
برای شروع کار با نرم افزار Geospatial Creator، مراحل زیر را دنبال کنید:
- این مخزن را شبیه سازی کنید.
- Unity Hub را دانلود کنید و از آن برای نصب نسخه یونیتی 2022.3 استفاده کنید. مطمئن شوید که ابزارهای ساخت اختیاری Android یا iOS را نصب می کنید.
- در Unity Hub، Add > Add project from disk را فشار دهید.
- در پانل Hierarchy ، AR Geospatial Creator Origin را انتخاب کنید.
- در کادر متنی Google Maps Tile API Key ، کلید API را وارد کنید و سپس
Enter
(یاreturn
در macOS) را فشار دهید. - در Edit > Project Settings > XR Plug-in Management > ARCore Extensions ، از احراز هویت کلید API برای Android یا iOS استفاده کنید و کلید API را وارد کنید.
- در File > Build Settings ، پلتفرم مورد نظر را به Android یا iOS تغییر دهید.
3. اولین لنگر خود را ایجاد کنید
در این کد لبه، شما یک لنگر AR ایجاد می کنید که می تواند در مکان های مختلف استفاده شود. شما از کتابخانه های عمومی در سانفرانسیسکو، کالیفرنیا، به عنوان مثال استفاده می کنید، اما با خیال راحت از مکان های نزدیک خود استفاده کنید.
درباره مؤلفه مبدأ خالق جغرافیایی
هر صحنه یونیتی که با Geospatial Creator ساخته شده است دقیقاً به یک Geospatial Creator Origin نیاز دارد. این شی بازی نقطه مرجع برای تبدیل مقادیر عرض جغرافیایی، طول جغرافیایی و ارتفاع در دنیای واقعی به مختصات بازی Unity است.
پروژه نمونه حاوی یک مبدأ خالق مکانی است که از سزیوم برای رندر کردن کاشی های سه بعدی فوتورئالیستی در نمای Scene
ویرایشگر استفاده می کند و به شما امکان می دهد دقیقاً در کجای جهان محتوای AR شما ظاهر شود.
مبدا را حرکت دهید
مبدا Geospatial Creator را به طول و عرض جغرافیایی شعبه کتابخانه اصلی سانفرانسیسکو منتقل کنید.
برای استفاده از ادغام داخلی Geospatial Creator با Places API برای جابجایی خودکار مبدا به مکان صحیح، این مراحل را دنبال کنید:
- در پنل Hierarchy ، شی بازی Geospatial Creator Origin را انتخاب کنید.
- در پانل بازرس ، روی جستجوی مکان کلیک کنید.
- در گفتگوی جستجو،
San Francisco Public Library
تایپ کنید. اولین نتیجه باید در 100 خیابان لارکین باشد. - روی Apply to objects کلیک کنید تا نتیجه جستجو در مبدا اعمال شود. باید ببینید که طول و عرض جغرافیایی مبدا به مختصات جدید به روز می شود.
یک لنگر Geospatial Creator به صحنه اضافه کنید
اکنون که یک Origin وجود دارد، با استفاده از GameObject > XR > AR Geospatial Creator Anchor، یک لنگر Geospatial Creator اضافه کنید. بهطور پیشفرض، لنگر با مبدأ قرار میگیرد.
از این لنگر برای قرار دادن محتوای 3 بعدی AR خود استفاده کنید. مدل سه بعدی کتاب همراه با نمونه پروژه قرار داده شده است.
برای قرار دادن کتاب در صحنه خود، این مراحل را دنبال کنید:
- در پانل Project ، مدل Book را به صفحه نمایش ویرایشگر بکشید.
- در پانل سلسله مراتب ، مطمئن شوید که کتاب فرزند لنگری است که قبلا ایجاد کردهاید. هر شیء بازی کودک لنگر Geospatial Creator نسبت به لنگر قرار می گیرد.
- در پانل سلسله مراتب ، کتاب را انتخاب کنید. مقادیر موقعیت آن را روی 0، 0، 0 قرار دهید.
وقتی به این مدل در نمای ویرایشگر نگاه می کنیم، آشکار است که چیزی اشتباه است: ارتفاع پیش فرض لنگر زیر سطح سقف کتابخانه است، در حالی که باید بالای آن شناور باشد.
در حالی که میتوانید شی را در ویرایشگر حرکت دهید تا ارتفاع تقریبی WGS84 را بیابید، ترجیح داده میشود لنگرهای Geospatial را بهعنوان لنگر پشت بام در این موقعیت پیکربندی کنید تا ارتفاع آنها به طور خودکار نسبت به سقف سازهای که در بالا قرار دارند ثابت شود.
- برای انجام این کار، پانل بازرس لنگر را باز کنید و ویژگی
Altitude Type
رویRooftop
قرار دهید.
پس از انجام این کار، توجه داشته باشید که ارتفاع لنگر در نمای ویرایشگر تغییر نمی کند. این به این دلیل است که ارتفاع لنگر در زمان اجرا زمانی که لنگر برای لنگرهای پشت بام و زمین حل می شود تعیین می شود. برای تجسم لنگر روی پشت بام در نمای Scene
، میتوانید از دکمه Snap To Tile استفاده کنید. این ارتفاع لنگر را مطابق با کاشی در نمای Scene
تنظیم می کند، در حالی که بر ارتفاع لنگر حل شده در زمان اجرا تأثیر نمی گذارد.
- برای اینکه مدل به جای اینکه روی پشت بام کتابخانه شناور باشد، پارامتر
Altitude relative to rooftop
تغییر دهید تا 15 متر بالاتر از پشت بام باشد.
مدل اکنون به خوبی بر فراز کتابخانه شناور است!
پروژه شما اکنون یک صحنه AR جغرافیایی کامل، شامل تمام اجزای سیستم AR مورد نیاز، مبدأ خالق مکانی و یک لنگر با یک مدل پیوست دارد.
سپس، لنگرهای تکراری را در مکانهای کتابخانه اضافی ایجاد کنید.
4. مکان های لنگر جدید را با Places API پیدا کنید
API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید. در این کد لبه، شما از این API برای یافتن دیگر شاخههای کتابخانههای عمومی در سانفرانسیسکو استفاده میکنید و از آن نتایج برای ایجاد یک لنگر Geospatial Creator برای ده نتیجه جستجوی بعدی استفاده میکنید.
- برای شروع، روی Assets > Scripts > Editor کلیک کنید و سپس فایل
AnchorDuplicator.cs
را باز کنید. این فایل مقداری کد boilerplate را ارائه می دهد که به شما کمک می کند با Places API شروع کنید و نتایج آن را تجزیه کنید.
با Places API احراز هویت کنید
- خط زیر را در کلاس
AnchorDuplicator
بیابید:private const string API_KEY = "<YOUR_API_KEY_HERE>";
- کلید بدست آمده در مراحل راه اندازی را جایگزین <YOUR_API_KEY_HERE> کنید.
برای عبارت جستجو از API Places پرس و جو کنید
با تکمیل تنظیمات مجوز API Places، می توانید کدی بنویسید که درخواست POST
را آغاز می کند.
- برای انجام این کار، متد
CreatePlacesRequest
را پیدا کنید و از تعریف متد زیر استفاده کنید: اکنون، زمانی که متدstring postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + " \"locationBias\": { \"circle\": { " + " \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " + " \"radius\": 10000 }" + " }" + "}"; string url = "https://places.googleapis.com/v1/places:searchText"; UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json"); request.SetRequestHeader("X-Goog-Api-Key", apiKey); request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location"); return request;
CreatePlacesRequest
فراخوانی می شود، درخواستی ارسال می شود کهsearchTerm
در دایره ای با محوریتlat
وlon
جستجو می کند.
کار خود را تست کنید
قبل از ادامه، باید تأیید کنید که تماسها با Places API موفق هستند.
- توابع را در ویرایشگر یونیتی اجرا کنید:
- در Google AR Codelab ، روی Run Places Request کلیک کنید.
- کنسول Unity را باز کنید. باید ببینید نتایج ظاهر می شوند.
5. به صورت برنامه ای لنگرها را به مکان ها اضافه کنید
اکنون که تأیید کردید که API Places نتایج را پیدا می کند، لنگرهای Geospatial Creator جدید در هر مکان مشخص شده توسط نتایج ایجاد کنید.
یک آیتم منو ایجاد کنید
- در کلاس
AnchorDuplicator
، متدCreateNewAnchorsFromPlaces
را پیدا کنید و از تعریف متد زیر استفاده کنید: این آیتم منو درخواستی را که قبلاً شروع شده است بررسی میکند و از اولینif (_places == null) { Debug.LogError("Cannot create anchors: Places has not been initialized."); return; } // You start with only one anchor in the scene, which you want to copy: var prototypeAnchorObject = GameObject .FindObjectOfType<ARGeospatialCreatorAnchor>() .gameObject; foreach (var place in _places) { var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject); var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>(); anchor.Latitude = place.location.latitude; anchor.Longitude = place.location.longitude; newAnchorObject.name = place.displayName.text; }
ARGeospatialCreatorAnchor
در صحنه شما به عنوان نمونه اولیه برای ایجاد لنگرها، در هر مکان در نتیجه Places API استفاده میکند. - از آیتم جدید Create New Anchors from Places Response در Google AR Codelab برای ایجاد لنگرها استفاده کنید.
- باید ببینید که چندین لنگر در صفحه سلسله مراتب ظاهر می شوند.
موقعیت های لنگر را بررسی کنید
برای تأیید اینکه همه داراییها قبل از اجرای برنامه در مکانهای صحیح قرار دارند، این مراحل را دنبال کنید:
- روی یک لنگر اضافه شده در صفحه سلسله مراتب کلیک کنید.
- F را فشار دهید.
- لنگر را در نمای
Scene
بررسی کنید. - اگر یک لنگر در مکان درستی نیست، روی Snap to Tile کلیک کنید، یا مقادیر
Latitude
،Longitude
، یاEditor Override Altitude
به صورت دستی تغییر دهید.
6. دارایی را در AR مشاهده کنید
برای مشاهده دارایی در AR در دستگاه Android یا iOS با پشتیبانی ARCore ، این مراحل را دنبال کنید:
- روی File > Build Settings کلیک کنید و سپس پلتفرم های ساخت Android یا iOS را انتخاب کنید.
- روی Switch platform کلیک کنید.
- مطمئن شوید که دستگاه توسعه شما متصل است و برای توسعه پیکربندی شده است.
- روی ساخت و اجرا کلیک کنید.
- تأیید کنید که برنامه در دستگاه شما اجرا می شود.
- از مکانهایی بازدید کنید که محتوا را در آنجا لنگر انداختهاید. اگر نمونهها را تغییر ندادهاید، مکانها کتابخانههای عمومی در سانفرانسیسکو هستند.
7. نتیجه گیری
تبریک می گویم! شما یک برنامه Unity نوشتید که از Geospatial Creator و Google Maps Platform Places API برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده میکند. ما امیدواریم که بتوانید از این دانش برای گسترش دسترسی محتوای Geospatial Creator خود استفاده کنید!
بیشتر بدانید
1. قبل از شروع
Geospatial Creator in Unity، که توسط ARCore و کاشیهای سهبعدی Photorealistic از پلتفرم نقشههای Google ارائه شده است، به شما امکان میدهد به سرعت تجربههای واقعیت افزوده (AR) را برای طول و عرض جغرافیایی خاص بسازید و تجسم کنید، همه در ویرایشگر Unity. این میتواند مدت زمانی را که برای ساختن یک صحنه AR موقعیتیافته برای اپلیکیشن شما نیاز دارد تا حد زیادی کاهش دهد، اما اگر بخواهید چندین تجربه مشابه در مکانهای مختلف ایجاد کنید، چه؟ با استفاده از C# API در Geospatial Creator، می توانید این کار را نیز انجام دهید.
در این لبه کد، کد C# را می نویسید که از Geospatial Creator و Places API از پلتفرم نقشه های گوگل برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه استفاده می کند. تجربیات به دست آمده را می توان قبل از کامپایل شدن در یک برنامه در ویرایشگر Unity بررسی و تنظیم کرد.
پیش نیازها
- دانش اولیه AR
- دانش اولیه ARCore Geospatial API
چیزی که یاد خواهید گرفت
- نحوه استفاده از API در Geospatial Creator برای ایجاد و تجسم یک تجربه جغرافیایی در چندین مکان.
- نحوه استفاده از Places API از پلتفرم نقشه های گوگل برای یافتن مکان مکان ها.
- چگونه تجربه AR را در دستگاه خود اجرا کنید.
آنچه شما نیاز دارید
2. محیط خود را تنظیم کنید
برای استفاده از Geospatial Creator، باید مجوز دسترسی به کاشیهای سهبعدی Photorealistic، خدمات ARCore در Google Cloud و Places API از پلتفرم Google Maps را تنظیم کنید.
یک پروژه Google Cloud راه اندازی کنید
این آزمایشگاه کد به یک پروژه Google Cloud با فعال بودن صورتحساب برای دسترسی به APIهای سرور Google نیاز دارد. تنظیم صورتحساب برای این نرمافزار کد الزامی است، اما فقط در صورتی از شما هزینه دریافت میشود که پروژه از سهمیه خدمات بدون هزینه خود فراتر رود.
برای راه اندازی یک پروژه در Google Cloud، این مراحل را دنبال کنید:
- یک پروژه در کنسول Google Cloud ایجاد کنید.
- در کادر متنی نام پروژه ، یک نام مناسب مانند
ARCore Geospatial Project
وارد کنید و سپس هر مکانی را انتخاب کنید. - روی ایجاد کلیک کنید.
- در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
- به فعال کردن صورتحساب مراجعه کنید و قیمت کاشیهای سهبعدی Photorealistic و قیمتگذاری Places API (جدید) را بررسی کنید.
Map Tiles API را فعال کنید
Map Tiles API کاشی های سه بعدی Photorealistic را ارائه می دهد که در ویرایشگر Unity قابل مشاهده هستند.
ARCore API را فعال کنید
ARCore API در Google Cloud به شما امکان می دهد به ARC Geospatial API در دستگاه مورد نظر دسترسی داشته باشید.
Places API را فعال کنید
API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید، که از آنها در کدها برای یافتن مکان های مرتبط استفاده خواهید کرد. این API نتایج جستجو و مختصات جغرافیایی مکان ها را ارائه می دهد.
یک کلید API برای پروژه خود ایجاد کنید
برای استفاده از احراز هویت کلید API برای تأیید اعتبار برنامه خود با خدمات Google Cloud راه دور، این مراحل را دنبال کنید:
- در کنسول Google Cloud در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
- در بالای صفحه، روی Create Credentials کلیک کنید و سپس کلید API را انتخاب کنید.
- به کلید توجه کنید زیرا برای مراحل بعدی به آن نیاز دارید.
نرم افزار را راه اندازی کنید
برای شروع کار با نرم افزار Geospatial Creator، مراحل زیر را دنبال کنید:
- این مخزن را شبیه سازی کنید.
- Unity Hub را دانلود کنید و از آن برای نصب نسخه یونیتی 2022.3 استفاده کنید. مطمئن شوید که ابزارهای ساخت اختیاری Android یا iOS را نصب می کنید.
- در Unity Hub، Add > Add project from disk را فشار دهید.
- در پانل Hierarchy ، AR Geospatial Creator Origin را انتخاب کنید.
- در کادر متنی Google Maps Tile API Key ، کلید API را وارد کنید و سپس
Enter
(یاreturn
در macOS) را فشار دهید. - در Edit > Project Settings > XR Plug-in Management > ARCore Extensions ، از احراز هویت کلید API برای Android یا iOS استفاده کنید و کلید API را وارد کنید.
- در File > Build Settings ، پلتفرم مورد نظر را به Android یا iOS تغییر دهید.
3. اولین لنگر خود را ایجاد کنید
در این کد لبه، شما یک لنگر AR ایجاد می کنید که می تواند در مکان های مختلف استفاده شود. شما از کتابخانه های عمومی در سانفرانسیسکو، کالیفرنیا، به عنوان مثال استفاده می کنید، اما با خیال راحت از مکان های نزدیک خود استفاده کنید.
درباره مؤلفه مبدأ خالق جغرافیایی
هر صحنه یونیتی که با Geospatial Creator ساخته شده است دقیقاً به یک Geospatial Creator Origin نیاز دارد. این شی بازی نقطه مرجع برای تبدیل مقادیر عرض جغرافیایی، طول جغرافیایی و ارتفاع در دنیای واقعی به مختصات بازی Unity است.
پروژه نمونه حاوی یک مبدأ خالق مکانی است که از سزیوم برای رندر کردن کاشی های سه بعدی فوتورئالیستی در نمای Scene
ویرایشگر استفاده می کند و به شما امکان می دهد دقیقاً در کجای جهان محتوای AR شما ظاهر شود.
مبدا را حرکت دهید
مبدا Geospatial Creator را به طول و عرض جغرافیایی شعبه کتابخانه اصلی سانفرانسیسکو منتقل کنید.
برای استفاده از ادغام داخلی Geospatial Creator با Places API برای جابجایی خودکار مبدا به مکان صحیح، این مراحل را دنبال کنید:
- در پنل Hierarchy ، شی بازی Geospatial Creator Origin را انتخاب کنید.
- در پانل بازرس ، روی جستجوی مکان کلیک کنید.
- در گفتگوی جستجو،
San Francisco Public Library
تایپ کنید. اولین نتیجه باید در 100 خیابان لارکین باشد. - روی Apply to objects کلیک کنید تا نتیجه جستجو در مبدا اعمال شود. باید ببینید که طول و عرض جغرافیایی مبدا به مختصات جدید به روز می شود.
یک لنگر Geospatial Creator به صحنه اضافه کنید
اکنون که یک Origin وجود دارد، با استفاده از GameObject > XR > AR Geospatial Creator Anchor، یک لنگر Geospatial Creator اضافه کنید. بهطور پیشفرض، لنگر با مبدأ قرار میگیرد.
از این لنگر برای قرار دادن محتوای 3 بعدی AR خود استفاده کنید. مدل سه بعدی کتاب همراه با نمونه پروژه قرار داده شده است.
برای قرار دادن کتاب در صحنه خود، این مراحل را دنبال کنید:
- در پانل Project ، مدل Book را به صفحه نمایش ویرایشگر بکشید.
- در پانل سلسله مراتب ، مطمئن شوید که کتاب فرزند لنگری است که قبلا ایجاد کردهاید. هر شیء بازی کودک لنگر Geospatial Creator نسبت به لنگر قرار می گیرد.
- در پانل سلسله مراتب ، کتاب را انتخاب کنید. مقادیر موقعیت آن را روی 0، 0، 0 قرار دهید.
وقتی به این مدل در نمای ویرایشگر نگاه می کنیم، آشکار است که چیزی اشتباه است: ارتفاع پیش فرض لنگر زیر سطح سقف کتابخانه است، در حالی که باید بالای آن شناور باشد.
در حالی که میتوانید شی را در ویرایشگر حرکت دهید تا ارتفاع تقریبی WGS84 را بیابید، ترجیح داده میشود لنگرهای Geospatial را بهعنوان لنگر پشت بام در این موقعیت پیکربندی کنید تا ارتفاع آنها به طور خودکار نسبت به سقف سازهای که در بالا قرار دارند ثابت شود.
- برای انجام این کار، پانل بازرس لنگر را باز کنید و ویژگی
Altitude Type
رویRooftop
قرار دهید.
پس از انجام این کار، توجه داشته باشید که ارتفاع لنگر در نمای ویرایشگر تغییر نمی کند. این به این دلیل است که ارتفاع لنگر در زمان اجرا زمانی که لنگر برای لنگرهای پشت بام و زمین حل می شود تعیین می شود. برای تجسم لنگر روی پشت بام در نمای Scene
، میتوانید از دکمه Snap To Tile استفاده کنید. این ارتفاع لنگر را مطابق با کاشی در نمای Scene
تنظیم می کند، در حالی که بر ارتفاع لنگر حل شده در زمان اجرا تأثیر نمی گذارد.
- برای اینکه مدل به جای اینکه روی پشت بام کتابخانه شناور باشد، پارامتر
Altitude relative to rooftop
تغییر دهید تا 15 متر بالاتر از پشت بام باشد.
مدل اکنون به خوبی بر فراز کتابخانه شناور است!
پروژه شما اکنون یک صحنه AR جغرافیایی کامل، شامل تمام اجزای سیستم AR مورد نیاز، مبدأ خالق مکانی و یک لنگر با یک مدل پیوست دارد.
سپس، لنگرهای تکراری را در مکانهای کتابخانه اضافی ایجاد کنید.
4. مکان های لنگر جدید را با Places API پیدا کنید
API Places از Google Maps Platform به شما امکان می دهد داده های مکان را برای بیش از 200 میلیون مکان دریافت کنید. در این کد لبه، شما از این API برای یافتن دیگر شاخههای کتابخانههای عمومی در سانفرانسیسکو استفاده میکنید و از آن نتایج برای ایجاد یک لنگر Geospatial Creator برای ده نتیجه جستجوی بعدی استفاده میکنید.
- برای شروع، روی Assets > Scripts > Editor کلیک کنید و سپس فایل
AnchorDuplicator.cs
را باز کنید. این فایل مقداری کد boilerplate را ارائه می دهد که به شما کمک می کند با Places API شروع کنید و نتایج آن را تجزیه کنید.
با Places API احراز هویت کنید
- خط زیر را در کلاس
AnchorDuplicator
بیابید:private const string API_KEY = "<YOUR_API_KEY_HERE>";
- کلید بدست آمده در مراحل راه اندازی را جایگزین <YOUR_API_KEY_HERE> کنید.
برای عبارت جستجو از API Places پرس و جو کنید
با تکمیل تنظیمات مجوز API Places، می توانید کدی بنویسید که درخواست POST
را آغاز می کند.
- برای انجام این کار، متد
CreatePlacesRequest
را پیدا کنید و از تعریف متد زیر استفاده کنید: اکنون، زمانی که متدstring postBody = "{ \"textQuery\": \"" + searchTerm + "\", " + " \"locationBias\": { \"circle\": { " + " \"center\": { \"latitude\": " + lat + ", \"longitude\": " + lon + " }, " + " \"radius\": 10000 }" + " }" + "}"; string url = "https://places.googleapis.com/v1/places:searchText"; UnityWebRequest request = UnityWebRequest.Post(url, postBody, "application/json"); request.SetRequestHeader("X-Goog-Api-Key", apiKey); request.SetRequestHeader("X-Goog-FieldMask", "places.displayName,places.location"); return request;
CreatePlacesRequest
فراخوانی می شود، درخواستی ارسال می شود کهsearchTerm
در دایره ای با محوریتlat
وlon
جستجو می کند.
کار خود را تست کنید
قبل از ادامه، باید تأیید کنید که تماسها با Places API موفق هستند.
- توابع را در ویرایشگر یونیتی اجرا کنید:
- در Google AR CodeLab ، روی Run Places Requestion کلیک کنید.
- کنسول وحدت را باز کنید. باید ببینید که نتایج ظاهر می شوند.
5. برنامه نویسی لنگرگاه ها را به مکان ها اضافه کنید
اکنون که تأیید کرده اید که مکان های API نتیجه می گیرند ، در هر مکان که توسط نتایج مشخص شده است ، لنگرهای خالق جدید جغرافیایی ایجاد کنید.
یک مورد منو ایجاد کنید
- در کلاس
AnchorDuplicator
، روشCreateNewAnchorsFromPlaces
پیدا کنید و از روش زیر استفاده کنید: این مورد منو درخواست قبلی را که قبلاً شروع شده است بررسی می کند و از اولینif (_places == null) { Debug.LogError("Cannot create anchors: Places has not been initialized."); return; } // You start with only one anchor in the scene, which you want to copy: var prototypeAnchorObject = GameObject .FindObjectOfType<ARGeospatialCreatorAnchor>() .gameObject; foreach (var place in _places) { var newAnchorObject = GameObject.Instantiate(prototypeAnchorObject); var anchor = newAnchorObject.GetComponent<ARGeospatialCreatorAnchor>(); anchor.Latitude = place.location.latitude; anchor.Longitude = place.location.longitude; newAnchorObject.name = place.displayName.text; }
ARGeospatialCreatorAnchor
در صحنه شما به عنوان نمونه اولیه برای ایجاد لنگرها استفاده می کند ، یکی در هر مکان در نتیجه API. - برای ایجاد لنگرها از لنگرگاه های جدید ایجاد شده از منوی پاسخ مکان ها در Google AR CodeLab استفاده کنید.
- باید چندین لنگر را در صفحه سلسله مراتب مشاهده کنید.
مواضع لنگر را تأیید کنید
برای تأیید اینکه تمام دارایی ها قبل از اجرای برنامه در مکان های صحیح لنگر زده می شوند ، این مراحل را دنبال کنید:
- روی یک لنگر اضافه شده در صفحه سلسله مراتب کلیک کنید.
- مطبوعات f .
- لنگر را در نمای
Scene
بازرسی کنید. - اگر یک لنگر در مکان صحیح قرار ندارد ، روی Snap To Tile کلیک کنید ، یا به صورت دستی
Latitude
،Longitude
یاEditor Override Altitude
تغییر دهید.
6. مشاهده دارایی در AR
برای مشاهده دارایی موجود در AR در دستگاه Android یا iOS پشتیبانی شده توسط Arcore ، این مراحل را دنبال کنید:
- روی File> Build Settings کلیک کنید ، و سپس سیستم عامل های Android یا iOS Build را انتخاب کنید.
- روی پلتفرم سوئیچ کلیک کنید.
- اطمینان حاصل کنید که دستگاه توسعه شما برای توسعه متصل و پیکربندی شده است.
- روی ساخت و اجرا کلیک کنید.
- تأیید کنید که برنامه روی دستگاه شما اجرا می شود.
- از مکانهایی که محتوا را لنگر انداخته اید ، بازدید کنید. اگر مثالها را تغییر ندادید ، مکان ها کتابخانه های عمومی در سانفرانسیسکو هستند.
7. نتیجه گیری
تبریک می گویم! شما یک برنامه وحدت نوشتید که از Geospatial Creator و Google Maps Platform API را برای ایجاد چندین تجربه جغرافیایی با استفاده از یک الگوی اولیه قرار می دهد. امیدواریم که بتوانید از این دانش استفاده کنید تا محتوای خالق Geospatial خود را افزایش دهید!