راهنماهای مخصوص پلتفرم
Android (Kotlin/Java)
Android NDK (C)
یونیتی (بنیاد AR)
موتور غیر واقعی
بهعنوان یک توسعهدهنده اپلیکیشن AR، میخواهید بهطور یکپارچه فضای مجازی را با واقعی برای کاربران خود ترکیب کنید. هنگامی که کاربر یک شی مجازی را در صحنه خود قرار می دهد، می خواهد به نظر برسد که به دنیای واقعی تعلق دارد. اگر در حال ساختن اپلیکیشنی برای خرید مبلمان برای کاربران هستید، میخواهید آنها مطمئن باشند که صندلی راحتی که میخواهند بخرند در فضای آنها قرار میگیرد.
Depth API به دوربین دستگاه کمک می کند تا اندازه و شکل اشیاء واقعی را در یک صحنه درک کند. تصاویر عمق یا نقشه های عمق ایجاد می کند و در نتیجه لایه ای از واقع گرایی را به برنامه های شما اضافه می کند. میتوانید از اطلاعات ارائهشده توسط یک تصویر عمقی برای فعال کردن تجربیات کاربر واقعی و همهجانبه استفاده کنید.
از موارد برای توسعه با Depth API استفاده کنید
Depth API میتواند انسداد اشیاء، غوطهوری بهبود یافته و تعاملات جدیدی را تقویت کند که واقعگرایی تجربیات AR را افزایش میدهد. در زیر چند راه برای استفاده از آن در پروژه های خود آورده شده است. برای نمونههایی از Depth in Action، صحنههای نمونه را در ARCore Depth Lab کاوش کنید، که راههای مختلف دسترسی به دادههای عمق را نشان میدهد. این برنامه Unity منبع باز در Github است.
انسداد را فعال کنید
انسداد، یا نمایش دقیق یک شی مجازی در پشت اشیاء دنیای واقعی، برای یک تجربه AR همهجانبه مهم است. اندی مجازی را در نظر بگیرید که ممکن است کاربر بخواهد آن را در صحنه ای حاوی صندوق عقب در کنار در قرار دهد. اندی که بدون انسداد رندر می شود، به طور غیرواقعی با لبه تنه همپوشانی پیدا می کند. اگر از عمق یک صحنه استفاده کنید و درک کنید که اندی مجازی نسبت به محیطی مانند تنه چوبی چقدر فاصله دارد، میتوانید اندی را با اکلوژن به دقت رندر کنید و آن را در محیط اطرافش بسیار واقعیتر نشان دهید.
یک صحنه را متحول کنید
با نمایش دانههای برف مجازی روی بازوها و بالشهای مبلهایش یا انداختن اتاق نشیمن در مه مه آلود، کاربر خود را به دنیایی جدید و همهجانبه نشان دهید. میتوانید از Depth برای ایجاد صحنهای استفاده کنید که در آن نورهای مجازی تعامل دارند، پشت سر پنهان میشوند و اشیاء واقعی را دوباره روشن میکنند.
فاصله و عمق میدان
آیا باید نشان دهید که چیزی دور است؟ میتوانید با استفاده از Depth API از اندازهگیری فاصله استفاده کنید و جلوههای عمق میدان، مانند محو کردن پسزمینه یا پیشزمینه یک صحنه را اضافه کنید.
تعامل کاربر با اشیاء AR را فعال کنید
با فعال کردن محتوای مجازی برای تعامل با دنیای واقعی از طریق برخورد و فیزیک، به کاربران اجازه دهید از طریق برنامه شما جهان را لمس کنند. از اشیاء مجازی بخواهید از روی موانع دنیای واقعی عبور کنند، یا توپ های پینت بال مجازی به درختی در دنیای واقعی ضربه بزنند و پاشیده شوند. وقتی برخورد مبتنی بر عمق را با فیزیک بازی ترکیب میکنید، میتوانید تجربهای را زنده کنید.
بهبود تست های آماری
از عمق می توان برای بهبود نتایج تست ضربه استفاده کرد. تست های ضربه سطحی فقط روی سطوح مسطح با بافت کار می کنند، در حالی که تست های ضربه عمقی دقیق تر هستند و حتی در مناطق غیرمسطح و با بافت پایین نیز کار می کنند. این به این دلیل است که آزمونهای ضربه عمق از اطلاعات عمق صحنه برای تعیین عمق و جهت صحیح یک نقطه استفاده میکنند.
در مثال زیر، اندیس سبز نشان دهنده تست ضربه استاندارد هواپیما و اندیس قرمز نشان دهنده تست ضربه عمق است.
سازگاری دستگاه
Depth API فقط در دستگاههایی با قدرت پردازش برای پشتیبانی از عمق پشتیبانی میشود و باید به صورت دستی در ARCore فعال شود، همانطور که در Enable Depth توضیح داده شده است.
برخی از دستگاهها ممکن است حسگر عمق سختافزاری مانند سنسور زمان پرواز (ToF) نیز ارائه دهند. برای فهرست بهروز دستگاههایی که از Depth API پشتیبانی میکنند و فهرستی از دستگاههایی که دارای حسگر عمق سختافزاری پشتیبانیشده مانند حسگر ToF هستند، به صفحه دستگاههای پشتیبانیشده ARCore مراجعه کنید.
تصاویر عمقی
Depth API از یک الگوریتم عمق از حرکت برای ایجاد تصاویر عمقی استفاده می کند که نمای سه بعدی از جهان را ارائه می دهد. هر پیکسل در یک تصویر عمقی با اندازه گیری فاصله صحنه از دوربین همراه است. این الگوریتم چندین تصویر دستگاه را از زوایای مختلف می گیرد و آنها را با هم مقایسه می کند تا فاصله هر پیکسل را زمانی که کاربر گوشی خود را حرکت می دهد، تخمین بزند. به طور انتخابی از یادگیری ماشین برای افزایش پردازش عمقی، حتی با حداقل حرکت کاربر، استفاده می کند. همچنین از هرگونه سخت افزار اضافی که ممکن است دستگاه کاربر داشته باشد بهره می برد. اگر دستگاه دارای یک حسگر عمق اختصاصی مانند ToF باشد، الگوریتم به طور خودکار داده ها را از تمام منابع موجود ادغام می کند. این کار عمق تصویر موجود را افزایش میدهد و حتی زمانی که دوربین حرکت نمیکند عمق تصویر را فعال میکند. همچنین عمق بهتری را بر روی سطوح با ویژگی های کم یا بدون ویژگی، مانند دیوارهای سفید، یا در صحنه های پویا با افراد یا اشیاء متحرک، فراهم می کند.
تصاویر زیر یک تصویر دوربین از یک راهرو با دوچرخه روی دیوار و تصویری از تصویر عمقی که از تصاویر دوربین ایجاد می شود را نشان می دهد. نواحی قرمز رنگ به دوربین نزدیکتر هستند و مناطق آبی دورتر هستند.
عمق از حرکت
هنگامی که کاربر دستگاه خود را حرکت می دهد، داده های عمق در دسترس می شوند. این الگوریتم می تواند عمق دقیق و قوی را از فاصله 0 تا 65 متری برآورد کند. دقیق ترین نتایج زمانی حاصل می شود که دستگاه در فاصله نیم تا حدود پنج متری از صحنه دنیای واقعی باشد. تجربیاتی که کاربر را تشویق می کند تا دستگاه خود را بیشتر جابجا کند، نتایج بهتر و بهتری خواهد داشت.
به دست آوردن تصاویر عمقی
با Depth API، می توانید تصاویر عمقی را که با هر فریم دوربین مطابقت دارد، بازیابی کنید. یک تصویر با عمق اکتسابی دارای همان مهر زمان و میدان دید درونی دوربین است. دادههای عمق معتبر تنها پس از اینکه کاربر شروع به حرکت دستگاه خود کرد، در دسترس هستند، زیرا عمق از حرکت به دست میآید. سطوح با ویژگی های کم یا بدون ویژگی، مانند دیوارهای سفید، با عمق نامشخص همراه خواهند بود.
بعدش چی
- آزمایشگاه عمق ARCore را بررسی کنید، که راههای مختلفی برای دسترسی به دادههای عمقی را نشان میدهد.