راهنماهای مخصوص پلتفرم
اندروید (کاتلین/جاوا)
اندروید NDK (سی)
یونیتی (بنیاد واقعیت افزوده)
موتور غیرواقعی
به عنوان یک توسعهدهنده اپلیکیشن واقعیت افزوده، شما میخواهید فضای مجازی را به طور یکپارچه برای کاربران خود با فضای واقعی ترکیب کنید. وقتی کاربر یک شیء مجازی را در صحنه خود قرار میدهد، میخواهد طوری به نظر برسد که انگار متعلق به دنیای واقعی است. اگر در حال ساخت اپلیکیشنی برای کاربران هستید تا مبلمان بخرند، میخواهید آنها مطمئن باشند که صندلی راحتی که قرار است بخرند در فضای آنها جا میشود.
رابط برنامهنویسی کاربردی عمق (Depth API) به دوربین دستگاه کمک میکند تا اندازه و شکل اشیاء واقعی در یک صحنه را درک کند. این رابط، تصاویر عمق یا نقشههای عمق ایجاد میکند و در نتیجه، لایهای از واقعگرایی را به برنامههای شما اضافه میکند. میتوانید از اطلاعات ارائه شده توسط یک تصویر عمق برای ایجاد تجربیات کاربری فراگیر و واقعگرایانه استفاده کنید.
موارد استفاده برای توسعه با Depth API
رابط برنامهنویسی کاربردی عمق (Depth API) میتواند انسداد اشیاء، غوطهوری بهبود یافته و تعاملات بدیعی را تقویت کند که واقعگرایی تجربیات واقعیت افزوده (AR) را افزایش میدهد. در ادامه روشهایی برای استفاده از آن در پروژههای خود آورده شده است. برای مثالهایی از عمق در عمل، صحنههای نمونه را در آزمایشگاه عمق ARCore بررسی کنید، که روشهای مختلف دسترسی به دادههای عمق را نشان میدهد. این برنامه Unity در Github متنباز است.
فعال کردن انسداد
انسداد، یا رندر دقیق یک شیء مجازی پشت اشیاء دنیای واقعی، برای یک تجربه واقعیت افزوده فراگیر بسیار مهم است. یک اندی مجازی را در نظر بگیرید که کاربر ممکن است بخواهد آن را در صحنهای حاوی یک صندوق عقب در کنار یک در قرار دهد. اگر اندی بدون انسداد رندر شود، به طور غیرواقعی با لبه صندوق همپوشانی خواهد داشت. اگر از عمق صحنه استفاده کنید و بفهمید که اندی مجازی نسبت به محیط اطراف مانند صندوق چوبی چقدر فاصله دارد، میتوانید اندی را با انسداد به طور دقیق رندر کنید و آن را در محیط اطرافش بسیار واقعیتر جلوه دهید.

تبدیل یک صحنه
با رندر کردن دانههای برف مجازی برای نشستن روی دستهها و بالشهای مبلها، یا قرار دادن اتاق نشیمن آنها در مه غلیظ، کاربر خود را به دنیایی جدید و غوطهورکننده هدایت کنید. میتوانید از Depth برای ایجاد صحنهای استفاده کنید که در آن نورهای مجازی با اشیاء واقعی تعامل دارند، پشت آنها پنهان میشوند و آنها را دوباره روشن میکنند.
فاصله و عمق میدان
آیا میخواهید نشان دهید که چیزی دور است؟ میتوانید از اندازهگیری فاصله استفاده کنید و با استفاده از Depth API، جلوههای عمق میدان، مانند تار کردن پسزمینه یا پیشزمینه یک صحنه را اضافه کنید.
فعال کردن تعاملات کاربر با اشیاء AR
با فعال کردن تعامل محتوای مجازی با دنیای واقعی از طریق برخورد و فیزیک، به کاربران اجازه دهید تا از طریق برنامه شما، دنیا را «لمس» کنند. از اشیاء مجازی بخواهید از موانع دنیای واقعی عبور کنند، یا توپهای رنگی مجازی به درخت دنیای واقعی برخورد کرده و پاشیده شوند. وقتی برخورد مبتنی بر عمق را با فیزیک بازی ترکیب میکنید، میتوانید یک تجربه را به واقعیت تبدیل کنید.
بهبود تستهای ضربه
عمق میتواند برای بهبود نتایج تست ضربه استفاده شود. تستهای ضربه صفحهای فقط روی سطوح مسطح دارای بافت کار میکنند، در حالی که تستهای ضربه عمقی جزئیات بیشتری دارند و حتی روی نواحی غیر مسطح و کم بافت نیز کار میکنند. دلیل این امر آن است که تستهای ضربه عمقی از اطلاعات عمق صحنه برای تعیین عمق و جهت صحیح یک نقطه استفاده میکنند.
در مثال زیر، اندیسهای سبز نشان دهنده تستهای ضربه صفحهای استاندارد و اندیسهای قرمز نشان دهنده تستهای ضربه عمقی هستند.
سازگاری دستگاه
رابط برنامهنویسی کاربردی عمق (Depth API) فقط در دستگاههایی پشتیبانی میشود که قدرت پردازشی لازم برای پشتیبانی از عمق را داشته باشند و باید آن را به صورت دستی در ARCore فعال کنید، همانطور که در بخش «فعال کردن عمق» توضیح داده شده است.
برخی از دستگاهها ممکن است یک حسگر عمق سختافزاری مانند حسگر زمان پرواز (ToF) نیز ارائه دهند. برای مشاهده فهرست بهروز دستگاههایی که از Depth API پشتیبانی میکنند و فهرست دستگاههایی که دارای حسگر عمق سختافزاری پشتیبانیشده مانند حسگر ToF هستند، به صفحه دستگاههای پشتیبانیشده توسط ARCore مراجعه کنید.
تصاویر عمق
API عمق (Depth API) از یک الگوریتم عمق از حرکت برای ایجاد تصاویر عمق استفاده میکند که نمایی سهبعدی از جهان ارائه میدهد. هر پیکسل در یک تصویر عمق با اندازهگیری فاصله صحنه از دوربین مرتبط است. این الگوریتم چندین تصویر دستگاه را از زوایای مختلف میگیرد و آنها را برای تخمین فاصله هر پیکسل هنگام حرکت تلفن کاربر مقایسه میکند. این الگوریتم به طور انتخابی از یادگیری ماشینی برای افزایش پردازش عمق، حتی با حداقل حرکت کاربر، استفاده میکند. همچنین از هرگونه سختافزار اضافی که دستگاه کاربر ممکن است داشته باشد، بهره میبرد. اگر دستگاه دارای حسگر عمق اختصاصی مانند ToF باشد، الگوریتم به طور خودکار دادهها را از تمام منابع موجود ادغام میکند. این امر تصویر عمق موجود را بهبود میبخشد و عمق را حتی زمانی که دوربین حرکت نمیکند، فعال میکند. همچنین عمق بهتری را در سطوحی با ویژگیهای کم یا بدون ویژگی، مانند دیوارهای سفید، یا در صحنههای پویا با افراد یا اشیاء متحرک فراهم میکند.
تصاویر زیر تصویر دوربین از یک راهرو با یک دوچرخه روی دیوار و تجسمی از تصویر عمقی که از تصاویر دوربین ایجاد شده است را نشان میدهد. نواحی قرمز رنگ به دوربین نزدیکتر و نواحی آبی رنگ دورتر هستند.

عمق ناشی از حرکت
دادههای عمق زمانی در دسترس قرار میگیرند که کاربر دستگاه خود را حرکت دهد. این الگوریتم میتواند تخمینهای عمق دقیق و قوی از 0 تا 65 متر ارائه دهد. دقیقترین نتایج زمانی حاصل میشوند که دستگاه نیم متر تا حدود پنج متر از صحنه واقعی فاصله داشته باشد. تجربیاتی که کاربر را به حرکت بیشتر دستگاه خود تشویق میکنند، نتایج بهتر و بهتری به همراه خواهند داشت.
تصاویر عمقی را بدست آورید
با استفاده از Depth API، میتوانید تصاویر عمقی را که با هر فریم دوربین مطابقت دارند، بازیابی کنید. یک تصویر عمقی به دست آمده، دارای همان مهر زمانی و میدان دید ذاتی دوربین است. دادههای عمق معتبر فقط پس از شروع حرکت دستگاه توسط کاربر در دسترس هستند، زیرا عمق از حرکت به دست میآید. سطوحی که دارای ویژگیهای کم یا بدون ویژگی هستند، مانند دیوارهای سفید، با عمق نامشخص مرتبط خواهند بود.
قدم بعدی چیست؟
- آزمایشگاه عمق ARCore را بررسی کنید، که روشهای مختلف دسترسی به دادههای عمق را نشان میدهد.