1. قبل از شروع
ARCore چارچوب گوگل برای ایجاد تجربیات واقعیت افزوده (AR) در گوشی های هوشمند است. Scene Semantics و Geospatial Depth API به تجربیات AR شما کمک می کند تا محیط اطراف کاربران شما را درک کنند.
Scene Semantics API از یک مدل یادگیری ماشینی (ML) برای تجزیه و تحلیل تصاویر دوربین و ارائه تصویری از پیکسل های برچسب دار استفاده می کند. می تواند بین 11 برچسب مختلف در فضای باز تمایز قائل شود.
Geospatial Depth API اطلاعات عمق حرکت و هر حسگر سختافزار فعالی مانند زمان پرواز را با دادههای Streetscape Geometry API ترکیب میکند. این خطاها را در مشاهدات عمقی تا فاصله 65 متری بهبود می بخشد.
در این نرم افزار کد، شما یک برنامه AR می سازید که نتایج Scene Semantics و Geospatial Depth API ها را به تصویر می کشد.
پیش نیازها
- دانش اولیه AR
چیزی که یاد خواهید گرفت
- نحوه فعال کردن Scene Semantics API.
- نحوه به دست آوردن و تجسم یک تصویر معنایی
- چگونه یک تصویر اعتماد معنایی به دست آوریم و تجسم کنیم.
- چگونه می توان تعیین کرد که چند درصد از پیکسل ها با یک برچسب مشخص مطابقت دارد.
- نحوه راه اندازی یک پروژه Google Cloud که می تواند از ARCore Geospatial API استفاده کند.
- نحوه فعال کردن Geospatial Depth API.
- نحوه تجسم تصاویر با عمق
آنچه شما نیاز دارید
- یک دستگاه Android ARCore پشتیبانی شده که با یک کابل USB به دستگاه توسعه شما متصل شده و با اشکالزدایی USB پیکربندی شده است.
- خدمات Google Play برای AR 1.37 یا بالاتر روی دستگاه توسعه Android نصب شده است.
- Android Studio برای ساخت برنامه های اندروید نصب و پیکربندی شده است.
2. محیط خود را تنظیم کنید
برای شروع کار با Geospatial API، ما یک پروژه شروع ارائه کردیم که شامل اصول اولیه یک پروژه ARCore و برخی از توابع کمکی است.
برای راه اندازی پروژه شروع، مراحل زیر را دنبال کنید:
- Android Studio را باز کنید و یکی از موارد زیر را انجام دهید:
- اگر قبلاً پروژه ای باز دارید، روی File > New > Project from version control کلیک کنید.
- اگر پنجره خوش آمدید به Android Studio را مشاهده کردید، روی دریافت از VCS کلیک کنید.
- Git را انتخاب کنید و
https://github.com/google-ar/codelab-scene-semantics-geospatial-depth.git
را وارد کنید تا پروژه وارد شود.
3. داده های Scene Semantics API را تجسم کنید
Scene Semantics API را فعال کنید
Scene Semantics API بهطور پیشفرض غیرفعال است تا در توان پردازشی صرفهجویی شود.
برای فعال کردن Scene Semantics API، مراحل زیر را دنبال کنید:
- در فایل
CodelabActivity.kt
خط زیر را پیدا کنید:// TODO: Enable the Scene Semantics API.
- پس از آن خط، اگر دستگاه شما از آن پشتیبانی می کند، Scene Semantics API را در پیکربندی جلسه فعال کنید:
if (session.isSemanticModeSupported(Config.SemanticMode.ENABLED)) { semanticMode = Config.SemanticMode.ENABLED }
یک تصویر معنایی به دست آورید و تجسم کنید
تصویر معنایی نتیجه مدل ARCore ML است که به هر پیکسل در فید دوربین یک SemanticLabel
Enum اختصاص می دهد.
برای به دست آوردن یک تصویر معنایی و نمایش آن بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the semantic image for this frame.
- پس از آن خط، یک تصویر معنایی دریافت کنید:
تصویر معنایی در کلاسframe.acquireSemanticImage().use { image -> semanticRenderer.updateCameraSemanticsTexture(image) activity.view.semanticLabelAtCenter = getLabelAt(image, image.width/2, image.height/2) }
SemanticRenderer
برای نمایش روی صفحه استفاده می شود. شما متغیرsemanticLabelAtCenter
را به روز می کنید تا برچسب معنایی را در مرکز صفحه در نمای برنامه نمایش دهد. - برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، نمایش برچسب معنایی تغییر می کند.
- ضربه بزنید
تنظیمات برای فعال کردن همپوشانی تصویر با اطمینان معنایی.
یک تصویر اعتماد معنایی به دست آورید و تجسم کنید
تصویر اعتماد معنایی نشان می دهد که ARCore چقدر به برچسب معنایی پیکسل منطبق اعتماد دارد.
برای به دست آوردن یک تصویر معنایی و نمایش آن بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the confidence image for this frame.
- بعد از این خط، یک تصویر معنایی دریافت کنید:
تصویر اعتماد معنایی در کلاسframe.acquireSemanticConfidenceImage().use { image -> semanticRenderer.updateConfidenceSemanticsTexture(image) activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2) }
SemanticRenderer
برای نمایش روی صفحه استفاده می شود. شما متغیرconfidenceAtCenter
را به روز می کنید تا برچسب معنایی را در مرکز صفحه در نمای برنامه نمایش دهد. - برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، نمایش اعتماد معنایی تغییر می کند.
- ضربه بزنید
تنظیمات برای فعال کردن همپوشانی تصویر با اطمینان معنایی.
میزان شیوع یک برچسب را تعیین کنید
شیوع یک برچسب درصدی از یک تصویر معنایی است که برابر با یک برچسب معین است. به عنوان مثال، اگر 26٪ از تصویر دارای مقدار SemanticLabel.SKY
باشد، مقدار شیوع برای مقدار SemanticLabel.SKY
0.26f
است.
برای به دست آوردن شیوع برچسب ها و نمایش آنها بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the prevalence of the selected label for this frame.
- پس از آن خط، میزان شیوع برچسب انتخاب شده را دریافت کنید:
activity.view.fractionOfLabel = frame.getSemanticLabelFraction(activity.view.selectedSemanticLabel)
- برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، مقدار کسر تغییر می کند. ضربه بزنید
تنظیمات برای تغییر کسر برچسبی که نمایش داده می شود. به عنوان مثال، BUILDING را امتحان کنید و سعی کنید نمای نمای را با یک ساختمان پر کنید و ببینید که چگونه بر کسری تأثیر می گذارد.
4. داده های Geospatial Depth API را تجسم کنید
هنگامی که APIهای Geospatial و Streetscape Geometry فعال هستند، Geospatial Depth API خوانش عمق را بهبود می بخشد. برای استفاده از Geospatial Depth API با Kotlin و Android Studio، به پروژه Google Cloud نیاز دارید.
یک پروژه Google Cloud راه اندازی کنید
ARCore Geospatial API به Google Cloud متصل می شود تا اطلاعات محلی سازی را از سیستم موقعیت یابی بصری (VPS) Google در مناطق تحت پوشش نمای خیابان Google ارائه دهد.
برای استفاده از این سرور در پروژه خود، مراحل زیر را دنبال کنید:
- یک پروژه در Google Cloud ایجاد کنید.
- در قسمت نام پروژه ، یک نام مناسب مانند
ARCore Geospatial API project
وارد کنید و هر مکانی را انتخاب کنید. - روی ایجاد کلیک کنید.
- در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
- برای مشاهده ARCore API برای این پروژه روی لینک زیر کلیک کنید و روی Enable کلیک کنید:
- یک کلید API برای پروژه خود ایجاد کنید:
- در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
- روی Create credentials کلیک کنید و کلید API را انتخاب کنید.
- به کلید توجه کنید زیرا بعداً به آن نیاز دارید.
شما یک پروژه Google Cloud با مجوز کلید API ایجاد کردید و آماده استفاده از Geospatial API در پروژه نمونه هستید.
کلید API را با پروژه Android Studio یکپارچه کنید
برای مرتبط کردن کلید API از Google Cloud با پروژه خود، این مراحل را دنبال کنید:
- در Android Studio، روی app > src کلیک کنید و روی
AndroidManifest.xml
دوبار کلیک کنید. - ورودی های
meta-data
زیر را بیابید:<meta-data android:name="com.google.android.ar.API_KEY" android:value="API_KEY" />
- جای جای
API_KEY
را با کلید API که در پروژه Google Cloud خود ایجاد کردید جایگزین کنید. مقدار ذخیره شده درcom.google.android.ar.API_KEY
به این برنامه اجازه استفاده از Geospatial API را می دهد.
پروژه خود را تایید کنید
- برای تأیید پروژه خود، برنامه خود را در دستگاه توسعه خود اجرا کنید. شما باید نمای دوربین و اطلاعات اشکال زدایی جغرافیایی را در بالای صفحه ببینید.
تنظیمات مورد نیاز را فعال کنید
Geospatial Depth API به سه تنظیمات نیاز دارد تا در پیکربندی جلسه برنامه شما فعال شود.
برای فعال کردن آنها، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Enable the Geospatial API, the Streetscape Geometry API, and the Depth API.
- در خط بعدی کد زیر را اضافه کنید:
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. geospatialMode = Config.GeospatialMode.ENABLED streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED depthMode = Config.DepthMode.AUTOMATIC }
اطلاعات عمقی را تجسم کنید
- برنامه خود را اجرا کنید و از ساختمانی در منطقه خود بازدید کنید.
- پس از تکمیل محلی سازی Geospatial، روی ضربه بزنید
تنظیمات و فعال کردن تجسم عمق جغرافیایی.
- ساختمان را در AR مشاهده کنید و آن را با اطلاعات عمق بدون عمق جغرافیایی مقایسه کنید.
5. نتیجه گیری
تبریک می گویم! شما یک برنامه AR ساختید که معنای صحنه و عمق جغرافیایی را تجسم می کند!
بیشتر بدانید
1. قبل از شروع
ARCore چارچوب گوگل برای ایجاد تجربیات واقعیت افزوده (AR) در گوشی های هوشمند است. Scene Semantics و Geospatial Depth API به تجربیات AR شما کمک می کند تا محیط اطراف کاربران شما را درک کنند.
Scene Semantics API از یک مدل یادگیری ماشینی (ML) برای تجزیه و تحلیل تصاویر دوربین و ارائه تصویری از پیکسل های برچسب دار استفاده می کند. می تواند بین 11 برچسب مختلف در فضای باز تمایز قائل شود.
Geospatial Depth API اطلاعات عمق حرکت و هر حسگر سختافزار فعالی مانند زمان پرواز را با دادههای Streetscape Geometry API ترکیب میکند. این خطاها را در مشاهدات عمقی تا فاصله 65 متری بهبود می بخشد.
در این نرم افزار کد، شما یک برنامه AR می سازید که نتایج Scene Semantics و Geospatial Depth API ها را به تصویر می کشد.
پیش نیازها
- دانش اولیه AR
چیزی که یاد خواهید گرفت
- نحوه فعال کردن Scene Semantics API.
- نحوه به دست آوردن و تجسم یک تصویر معنایی
- چگونه یک تصویر اعتماد معنایی به دست آوریم و تجسم کنیم.
- چگونه می توان تعیین کرد که چند درصد از پیکسل ها با یک برچسب مشخص مطابقت دارد.
- نحوه راه اندازی یک پروژه Google Cloud که می تواند از ARCore Geospatial API استفاده کند.
- نحوه فعال کردن Geospatial Depth API.
- نحوه تجسم تصاویر با عمق
آنچه شما نیاز دارید
- یک دستگاه Android ARCore پشتیبانی شده که با یک کابل USB به دستگاه توسعه شما متصل شده و با اشکالزدایی USB پیکربندی شده است.
- خدمات Google Play برای AR 1.37 یا بالاتر روی دستگاه توسعه Android نصب شده است.
- Android Studio برای ساخت برنامه های اندروید نصب و پیکربندی شده است.
2. محیط خود را تنظیم کنید
برای شروع کار با Geospatial API، ما یک پروژه شروع ارائه کردیم که شامل اصول اولیه یک پروژه ARCore و برخی از توابع کمکی است.
برای راه اندازی پروژه شروع، مراحل زیر را دنبال کنید:
- Android Studio را باز کنید و یکی از موارد زیر را انجام دهید:
- اگر قبلاً پروژه ای باز دارید، روی File > New > Project from version control کلیک کنید.
- اگر پنجره خوش آمدید به Android Studio را مشاهده کردید، روی دریافت از VCS کلیک کنید.
- Git را انتخاب کنید و
https://github.com/google-ar/codelab-scene-semantics-geospatial-depth.git
را وارد کنید تا پروژه وارد شود.
3. داده های Scene Semantics API را تجسم کنید
Scene Semantics API را فعال کنید
Scene Semantics API بهطور پیشفرض غیرفعال است تا در توان پردازشی صرفهجویی شود.
برای فعال کردن Scene Semantics API، مراحل زیر را دنبال کنید:
- در فایل
CodelabActivity.kt
خط زیر را پیدا کنید:// TODO: Enable the Scene Semantics API.
- پس از آن خط، اگر دستگاه شما از آن پشتیبانی می کند، Scene Semantics API را در پیکربندی جلسه فعال کنید:
if (session.isSemanticModeSupported(Config.SemanticMode.ENABLED)) { semanticMode = Config.SemanticMode.ENABLED }
یک تصویر معنایی به دست آورید و تجسم کنید
تصویر معنایی نتیجه مدل ARCore ML است که به هر پیکسل در فید دوربین یک SemanticLabel
Enum اختصاص می دهد.
برای به دست آوردن یک تصویر معنایی و نمایش آن بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the semantic image for this frame.
- پس از آن خط، یک تصویر معنایی دریافت کنید:
تصویر معنایی در کلاسframe.acquireSemanticImage().use { image -> semanticRenderer.updateCameraSemanticsTexture(image) activity.view.semanticLabelAtCenter = getLabelAt(image, image.width/2, image.height/2) }
SemanticRenderer
برای نمایش روی صفحه استفاده می شود. شما متغیرsemanticLabelAtCenter
را به روز می کنید تا برچسب معنایی را در مرکز صفحه در نمای برنامه نمایش دهد. - برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، نمایش برچسب معنایی تغییر می کند.
- ضربه بزنید
تنظیمات برای فعال کردن همپوشانی تصویر با اطمینان معنایی.
یک تصویر اعتماد معنایی به دست آورید و تجسم کنید
تصویر اعتماد معنایی نشان می دهد که ARCore چقدر به برچسب معنایی پیکسل منطبق اعتماد دارد.
برای به دست آوردن یک تصویر معنایی و نمایش آن بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the confidence image for this frame.
- بعد از این خط، یک تصویر معنایی دریافت کنید:
تصویر اعتماد معنایی در کلاسframe.acquireSemanticConfidenceImage().use { image -> semanticRenderer.updateConfidenceSemanticsTexture(image) activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2) }
SemanticRenderer
برای نمایش روی صفحه استفاده می شود. شما متغیرconfidenceAtCenter
را به روز می کنید تا برچسب معنایی را در مرکز صفحه در نمای برنامه نمایش دهد. - برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، نمایش اعتماد معنایی تغییر می کند.
- ضربه بزنید
تنظیمات برای فعال کردن همپوشانی تصویر با اطمینان معنایی.
میزان شیوع یک برچسب را تعیین کنید
شیوع یک برچسب درصدی از یک تصویر معنایی است که برابر با یک برچسب معین است. به عنوان مثال، اگر 26٪ از تصویر دارای مقدار SemanticLabel.SKY
باشد، مقدار شیوع برای مقدار SemanticLabel.SKY
0.26f
است.
برای به دست آوردن شیوع برچسب ها و نمایش آنها بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the prevalence of the selected label for this frame.
- پس از آن خط، میزان شیوع برچسب انتخاب شده را دریافت کنید:
activity.view.fractionOfLabel = frame.getSemanticLabelFraction(activity.view.selectedSemanticLabel)
- برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، مقدار کسر تغییر می کند. ضربه بزنید
تنظیمات برای تغییر کسر برچسبی که نمایش داده می شود. به عنوان مثال، BUILDING را امتحان کنید و سعی کنید نمای نمای را با یک ساختمان پر کنید و ببینید که چگونه بر کسری تأثیر می گذارد.
4. داده های Geospatial Depth API را تجسم کنید
هنگامی که APIهای Geospatial و Streetscape Geometry فعال هستند، Geospatial Depth API خوانش عمق را بهبود می بخشد. برای استفاده از Geospatial Depth API با Kotlin و Android Studio، به پروژه Google Cloud نیاز دارید.
یک پروژه Google Cloud راه اندازی کنید
ARCore Geospatial API به Google Cloud متصل می شود تا اطلاعات محلی سازی را از سیستم موقعیت یابی بصری (VPS) Google در مناطق تحت پوشش نمای خیابان Google ارائه دهد.
برای استفاده از این سرور در پروژه خود، مراحل زیر را دنبال کنید:
- یک پروژه در Google Cloud ایجاد کنید.
- در قسمت نام پروژه ، یک نام مناسب مانند
ARCore Geospatial API project
وارد کنید و هر مکانی را انتخاب کنید. - روی ایجاد کلیک کنید.
- در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
- برای مشاهده ARCore API برای این پروژه روی لینک زیر کلیک کنید و روی Enable کلیک کنید:
- یک کلید API برای پروژه خود ایجاد کنید:
- در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
- روی Create credentials کلیک کنید و کلید API را انتخاب کنید.
- به کلید توجه کنید زیرا بعداً به آن نیاز دارید.
شما یک پروژه Google Cloud با مجوز کلید API ایجاد کردید و آماده استفاده از Geospatial API در پروژه نمونه هستید.
کلید API را با پروژه Android Studio یکپارچه کنید
برای مرتبط کردن کلید API از Google Cloud با پروژه خود، این مراحل را دنبال کنید:
- در Android Studio، روی app > src کلیک کنید و روی
AndroidManifest.xml
دوبار کلیک کنید. - ورودی های
meta-data
زیر را بیابید:<meta-data android:name="com.google.android.ar.API_KEY" android:value="API_KEY" />
- جای جای
API_KEY
را با کلید API که در پروژه Google Cloud خود ایجاد کردید جایگزین کنید. مقدار ذخیره شده درcom.google.android.ar.API_KEY
به این برنامه اجازه استفاده از Geospatial API را می دهد.
پروژه خود را تایید کنید
- برای تأیید پروژه خود، برنامه خود را در دستگاه توسعه خود اجرا کنید. شما باید نمای دوربین و اطلاعات اشکال زدایی جغرافیایی را در بالای صفحه ببینید.
تنظیمات مورد نیاز را فعال کنید
Geospatial Depth API به سه تنظیمات نیاز دارد تا در پیکربندی جلسه برنامه شما فعال شود.
برای فعال کردن آنها، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Enable the Geospatial API, the Streetscape Geometry API, and the Depth API.
- در خط بعدی کد زیر را اضافه کنید:
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. geospatialMode = Config.GeospatialMode.ENABLED streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED depthMode = Config.DepthMode.AUTOMATIC }
اطلاعات عمقی را تجسم کنید
- برنامه خود را اجرا کنید و از ساختمانی در منطقه خود بازدید کنید.
- پس از تکمیل محلی سازی Geospatial، روی ضربه بزنید
تنظیمات و فعال کردن تجسم عمق جغرافیایی.
- ساختمان را در AR مشاهده کنید و آن را با اطلاعات عمق بدون عمق جغرافیایی مقایسه کنید.
5. نتیجه گیری
تبریک می گویم! شما یک برنامه AR ساختید که معنای صحنه و عمق جغرافیایی را تجسم می کند!
بیشتر بدانید
1. قبل از شروع
ARCore چارچوب گوگل برای ایجاد تجربیات واقعیت افزوده (AR) در گوشی های هوشمند است. Scene Semantics و Geospatial Depth API به تجربیات AR شما کمک می کند تا محیط اطراف کاربران شما را درک کنند.
Scene Semantics API از یک مدل یادگیری ماشینی (ML) برای تجزیه و تحلیل تصاویر دوربین و ارائه تصویری از پیکسل های برچسب دار استفاده می کند. می تواند بین 11 برچسب مختلف در فضای باز تمایز قائل شود.
Geospatial Depth API اطلاعات عمق حرکت و هر حسگر سختافزار فعالی مانند زمان پرواز را با دادههای Streetscape Geometry API ترکیب میکند. این خطاها را در مشاهدات عمقی تا فاصله 65 متری بهبود می بخشد.
در این نرم افزار کد، شما یک برنامه AR می سازید که نتایج Scene Semantics و Geospatial Depth API ها را به تصویر می کشد.
پیش نیازها
- دانش اولیه AR
چیزی که یاد خواهید گرفت
- نحوه فعال کردن Scene Semantics API.
- نحوه به دست آوردن و تجسم یک تصویر معنایی
- چگونه یک تصویر اعتماد معنایی به دست آوریم و تجسم کنیم.
- چگونه می توان تعیین کرد که چند درصد از پیکسل ها با یک برچسب مشخص مطابقت دارد.
- نحوه راه اندازی یک پروژه Google Cloud که می تواند از ARCore Geospatial API استفاده کند.
- نحوه فعال کردن Geospatial Depth API.
- نحوه تجسم تصاویر با عمق
آنچه شما نیاز دارید
- یک دستگاه Android ARCore پشتیبانی شده که با یک کابل USB به دستگاه توسعه شما متصل شده و با اشکالزدایی USB پیکربندی شده است.
- خدمات Google Play برای AR 1.37 یا بالاتر روی دستگاه توسعه Android نصب شده است.
- Android Studio برای ساخت برنامه های اندروید نصب و پیکربندی شده است.
2. محیط خود را تنظیم کنید
برای شروع کار با Geospatial API، ما یک پروژه شروع ارائه کردیم که شامل اصول اولیه یک پروژه ARCore و برخی از توابع کمکی است.
برای راه اندازی پروژه شروع، مراحل زیر را دنبال کنید:
- Android Studio را باز کنید و یکی از موارد زیر را انجام دهید:
- اگر قبلاً پروژه ای باز دارید، روی File > New > Project from version control کلیک کنید.
- اگر پنجره خوش آمدید به Android Studio را مشاهده کردید، روی دریافت از VCS کلیک کنید.
- Git را انتخاب کنید و
https://github.com/google-ar/codelab-scene-semantics-geospatial-depth.git
را وارد کنید تا پروژه وارد شود.
3. داده های Scene Semantics API را تجسم کنید
Scene Semantics API را فعال کنید
Scene Semantics API بهطور پیشفرض غیرفعال است تا در توان پردازشی صرفهجویی شود.
برای فعال کردن Scene Semantics API، مراحل زیر را دنبال کنید:
- در فایل
CodelabActivity.kt
خط زیر را پیدا کنید:// TODO: Enable the Scene Semantics API.
- پس از آن خط، اگر دستگاه شما از آن پشتیبانی می کند، Scene Semantics API را در پیکربندی جلسه فعال کنید:
if (session.isSemanticModeSupported(Config.SemanticMode.ENABLED)) { semanticMode = Config.SemanticMode.ENABLED }
یک تصویر معنایی به دست آورید و تجسم کنید
تصویر معنایی نتیجه مدل ARCore ML است که به هر پیکسل در فید دوربین یک SemanticLabel
Enum اختصاص می دهد.
برای به دست آوردن یک تصویر معنایی و نمایش آن بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the semantic image for this frame.
- پس از آن خط، یک تصویر معنایی دریافت کنید:
تصویر معنایی در کلاسframe.acquireSemanticImage().use { image -> semanticRenderer.updateCameraSemanticsTexture(image) activity.view.semanticLabelAtCenter = getLabelAt(image, image.width/2, image.height/2) }
SemanticRenderer
برای نمایش روی صفحه استفاده می شود. شما متغیرsemanticLabelAtCenter
را به روز می کنید تا برچسب معنایی را در مرکز صفحه در نمای برنامه نمایش دهد. - برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، نمایش برچسب معنایی تغییر می کند.
- ضربه بزنید
تنظیمات برای فعال کردن همپوشانی تصویر با اطمینان معنایی.
یک تصویر اعتماد معنایی به دست آورید و تجسم کنید
تصویر اعتماد معنایی نشان می دهد که ARCore چقدر به برچسب معنایی پیکسل منطبق اعتماد دارد.
برای به دست آوردن یک تصویر معنایی و نمایش آن بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the confidence image for this frame.
- بعد از این خط، یک تصویر معنایی دریافت کنید:
تصویر اعتماد معنایی در کلاسframe.acquireSemanticConfidenceImage().use { image -> semanticRenderer.updateConfidenceSemanticsTexture(image) activity.view.confidenceAtCenter = getConfidenceAt(image, image.width/2, image.height/2) }
SemanticRenderer
برای نمایش روی صفحه استفاده می شود. شما متغیرconfidenceAtCenter
را به روز می کنید تا برچسب معنایی را در مرکز صفحه در نمای برنامه نمایش دهد. - برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، نمایش اعتماد معنایی تغییر می کند.
- ضربه بزنید
تنظیمات برای فعال کردن همپوشانی تصویر با اطمینان معنایی.
میزان شیوع یک برچسب را تعیین کنید
شیوع یک برچسب درصدی از یک تصویر معنایی است که برابر با یک برچسب معین است. به عنوان مثال، اگر 26٪ از تصویر دارای مقدار SemanticLabel.SKY
باشد، مقدار شیوع برای مقدار SemanticLabel.SKY
0.26f
است.
برای به دست آوردن شیوع برچسب ها و نمایش آنها بر روی صفحه، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Obtain the prevalence of the selected label for this frame.
- پس از آن خط، میزان شیوع برچسب انتخاب شده را دریافت کنید:
activity.view.fractionOfLabel = frame.getSemanticLabelFraction(activity.view.selectedSemanticLabel)
- برنامه خود را اجرا کنید و دوربین را به سمت اشیاء مختلف خارج کنید. وقتی به انواع مختلف اشیا نگاه می کنید، مقدار کسر تغییر می کند. ضربه بزنید
تنظیمات برای تغییر کسر برچسبی که نمایش داده می شود. به عنوان مثال، BUILDING را امتحان کنید و سعی کنید نمای نمای را با یک ساختمان پر کنید و ببینید که چگونه بر کسری تأثیر می گذارد.
4. داده های Geospatial Depth API را تجسم کنید
هنگامی که APIهای Geospatial و Streetscape Geometry فعال هستند، Geospatial Depth API خوانش عمق را بهبود می بخشد. برای استفاده از Geospatial Depth API با Kotlin و Android Studio، به پروژه Google Cloud نیاز دارید.
یک پروژه Google Cloud راه اندازی کنید
ARCore Geospatial API به Google Cloud متصل می شود تا اطلاعات محلی سازی را از سیستم موقعیت یابی بصری (VPS) Google در مناطق تحت پوشش نمای خیابان Google ارائه دهد.
برای استفاده از این سرور در پروژه خود، مراحل زیر را دنبال کنید:
- یک پروژه در Google Cloud ایجاد کنید.
- در قسمت نام پروژه ، یک نام مناسب مانند
ARCore Geospatial API project
وارد کنید و هر مکانی را انتخاب کنید. - روی ایجاد کلیک کنید.
- در کنسول Google Cloud در صفحه انتخابگر پروژه، روی ایجاد پروژه کلیک کنید.
- برای مشاهده ARCore API برای این پروژه روی لینک زیر کلیک کنید و روی Enable کلیک کنید:
- یک کلید API برای پروژه خود ایجاد کنید:
- در بخش APIs & services ، اعتبارنامه ها را انتخاب کنید.
- روی Create credentials کلیک کنید و کلید API را انتخاب کنید.
- به کلید توجه کنید زیرا بعداً به آن نیاز دارید.
شما یک پروژه Google Cloud با مجوز کلید API ایجاد کردید و آماده استفاده از Geospatial API در پروژه نمونه هستید.
کلید API را با پروژه Android Studio یکپارچه کنید
برای مرتبط کردن کلید API از Google Cloud با پروژه خود، این مراحل را دنبال کنید:
- در Android Studio، روی app > src کلیک کنید و روی
AndroidManifest.xml
دوبار کلیک کنید. - ورودی های
meta-data
زیر را بیابید:<meta-data android:name="com.google.android.ar.API_KEY" android:value="API_KEY" />
- جای جای
API_KEY
را با کلید API که در پروژه Google Cloud خود ایجاد کردید جایگزین کنید. مقدار ذخیره شده درcom.google.android.ar.API_KEY
به این برنامه اجازه استفاده از Geospatial API را می دهد.
پروژه خود را تایید کنید
- برای تأیید پروژه خود، برنامه خود را در دستگاه توسعه خود اجرا کنید. شما باید نمای دوربین و اطلاعات اشکال زدایی جغرافیایی را در بالای صفحه ببینید.
تنظیمات مورد نیاز را فعال کنید
Geospatial Depth API به سه تنظیمات نیاز دارد تا در پیکربندی جلسه برنامه شما فعال شود.
برای فعال کردن آنها، مراحل زیر را دنبال کنید:
- در فایل
CodelabRenderer.kt
خط زیر را پیدا کنید:// TODO: Enable the Geospatial API, the Streetscape Geometry API, and the Depth API.
- در خط بعدی کد زیر را اضافه کنید:
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC) val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED) if (isDepthSupported && isGeospatialSupported) { // These three settings are needed to use Geospatial Depth. geospatialMode = Config.GeospatialMode.ENABLED streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED depthMode = Config.DepthMode.AUTOMATIC }
اطلاعات عمقی را تجسم کنید
- برنامه خود را اجرا کنید و از ساختمانی در منطقه خود بازدید کنید.
- پس از تکمیل محلی سازی Geospatial، روی ضربه بزنید
تنظیمات و فعال کردن تجسم عمق جغرافیایی.
- ساختمان را در AR مشاهده کنید و آن را با اطلاعات عمق بدون عمق جغرافیایی مقایسه کنید.
5. نتیجه گیری
تبریک می گویم! شما یک برنامه AR ساختید که معنای صحنه و عمق جغرافیایی را تجسم می کند!