Przewodniki dotyczące poszczególnych platform
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
Jako deweloper aplikacji AR chcesz, aby użytkownicy mogli płynnie łączyć świat wirtualny z rzeczywistym. Gdy użytkownik umieszcza wirtualny obiekt w scenie, chce, aby wyglądał jak element świata rzeczywistego. Jeśli tworzysz aplikację, która umożliwia użytkownikom zakup mebli, chcesz, aby byli pewni, że fotel, który zamierzają kupić, zmieści się w ich domu.
Interfejs Depth API pomaga kamerze urządzenia określić rozmiar i kształt rzeczywistych obiektów w scenie. Tworzy ona obrazy głębi, czyli mapy głębi, dzięki czemu dodaje do aplikacji odrobinę realizmu. Możesz używać informacji z obrazu z głębią, aby zapewnić użytkownikom realistyczne wrażenia.
Przypadki użycia interfejsu Depth API
Interfejs Depth API może umożliwiać zasłonięcie obiektów, zwiększać immersję i umożliwiać nowe interakcje, które zwiększają realizm rzeczywistości rozszerzonej. Poniżej znajdziesz kilka sposobów na wykorzystanie tego modelu w swoich projektach. Aby zobaczyć, jak działa Depth, zapoznaj się z przykładowymi scenami w ARCore Depth Lab, w których prezentowane są różne sposoby uzyskiwania dostępu do danych głębi. Ta aplikacja Unity jest dostępna jako oprogramowanie open source w GitHubzie.
Włącz zasłonięcie
Zasłonięcie, czyli dokładne renderowanie wirtualnego obiektu za rzeczywistymi obiektami, jest kluczowe dla wciągającego wrażenia AR. Załóżmy, że użytkownik chce umieścić wirtualnego Andy’ego w scenie zawierającej bagażnik obok drzwi. W renderze bez zasłonięcia Andy nakłada się nierealistycznie na krawędź bagażnika. Jeśli wykorzystasz głębię sceny i wiesz, jak daleko Andy jest od otoczenia, np. drewnianego pnia, możesz dokładnie renderować go z zasłonięciem, dzięki czemu będzie wyglądać znacznie bardziej realistycznie.
Przekształcanie sceny
Zaprezentuj użytkownikowi nowy, wciągający świat, renderując wirtualne płatki śniegu, które osiadają na podłokietnikach i poduszkach na kanapie, lub stwórz mgłę w salonie. Za pomocą Depth możesz tworzyć sceny, w których wirtualne światła oddziałują na siebie, chowają się za obiektami i oświetlają je na nowo.
odległość i głębia ostrości,
Chcesz pokazać, że coś jest daleko? Możesz użyć pomiaru odległości i dodać efekty głębi ostrości, takie jak rozmycie tła lub pierwszego planu sceny, za pomocą Depth API.
Umożliwienie użytkownikom interakcji z obiektami AR
Umożliw użytkownikom „dotknięcie” świata w aplikacji, umożliwiając interakcję treści wirtualnych z rzeczywistym światem za pomocą fizyki i kolizji. Wirtualne obiekty mogą przelatywać przez rzeczywiste przeszkody, a wirtualne farby do paintballa mogą trafiać w rzeczywiste drzewo. Połączenie kolizji na podstawie głębi z fizyką gry może sprawić, że gra nabierz życia.
Ulepszanie testów skuteczności
Głębię można wykorzystać do poprawy wyników testu trafień. Testy kolizji płaszczyzny działają tylko na płaskich powierzchniach z teksturą, podczas gdy testy kolizji głębi są bardziej szczegółowe i działają nawet na obszarach niepłaskich i o niskiej jakości tekstury. Dzieje się tak, ponieważ testy uderzeń w głębię korzystają z informacji o głębi z sceny, aby określić prawidłową głębokość i orientację punktu.
W tym przykładzie zielone Andy reprezentują standardowe testy trafień samolotów, a czerwone – testy głębokości.
Zgodność urządzeń
Interfejs Depth API jest obsługiwany tylko na urządzeniach z wystarczającą mocą obliczeniową, aby obsługiwać głębię. Musisz go włączyć ręcznie w ARCore zgodnie z instrukcjami w artykule Włączanie Depth API.
Niektóre urządzenia mogą też mieć czujnik głębi sprzętowej, np. czujnik czasu przelotu (ToF). Na stronie Urządzenia ARCore obsługiwane przez Depth API znajdziesz aktualną listę urządzeń, które obsługują Depth API, oraz listę urządzeń z obsługiwanym czujnikiem głębi, np. ToF.
Obrazy głębi
Interfejs Depth API używa algorytmu głębi z ruchu do tworzenia obrazów głębi, które zapewniają widok świata w 3D. Każdy piksel obrazu głębi jest powiązany z pomiarem odległości sceny od kamery. Ten algorytm pobiera wiele zdjęć urządzenia pod różnymi kątami i porównuje je, aby oszacować odległość do każdego piksela, gdy użytkownik porusza telefonem. Wybiórczo wykorzystuje systemy uczące się, aby zwiększyć głębię przetwarzania, nawet przy minimalnym ruchu użytkownika. Korzysta też z dodatkowego sprzętu, który może być zainstalowany na urządzeniu użytkownika. Jeśli urządzenie ma dedykowany czujnik głębi, np. ToF, algorytm automatycznie scala dane ze wszystkich dostępnych źródeł. Dzięki temu można ulepszyć istniejący obraz głębi oraz uzyskać efekt głębi nawet wtedy, gdy kamera się nie porusza. Zapewnia też lepszą głębię na powierzchniach z niewielką ilością szczegółów lub bez nich, takich jak białe ściany, oraz w dynamicznych scenach z poruszającymi się ludźmi lub obiektami.
Na tych zdjęciach widać obraz z kamery przedstawiający korytarz z rowerem na ścianie oraz wizualizację obrazu głębi utworzonego na podstawie zdjęć z kamery. Obszary zaznaczone na czerwono znajdują się bliżej kamery, a obszary zaznaczone na niebiesko – dalej.
Głębia z ruchu
Dane o głębi stają się dostępne, gdy użytkownik przeniesie urządzenie. Algorytm może uzyskać dokładne oszacowania głębokości w odległości od 0 do 65 m. Najdokładniejsze wyniki uzyskuje się, gdy urządzenie znajduje się w odległości od pół do pięciu metrów od sceny w rzeczywistych warunkach. Wrażenia, które zachęcają użytkownika do większego poruszania urządzeniem, będą przynosić coraz lepsze wyniki.
Pobieranie obrazów głębi
Dzięki interfejsowi Depth API możesz pobierać obrazy głębi, które pasują do każdego kadru. Uzyskany obraz głębi ma tę samą sygnaturę czasową i pole widzenia co kamera. Prawidłowe dane o głębi są dostępne dopiero wtedy, gdy użytkownik zacznie poruszać urządzeniem, ponieważ głębia jest uzyskiwana na podstawie ruchu. Powierzchnie z niewielką ilością cech, np. białe ściany, będą powiązane z niedokładną głębią.
Co dalej?
- Zapoznaj się z ARCore Depth Lab, w którym znajdziesz różne sposoby uzyskiwania dostępu do danych głębi.