Przewodniki dotyczące poszczególnych platform
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
Jako deweloper aplikacji AR chcesz płynnie łączyć świat wirtualny z rzeczywistym. Gdy użytkownik umieszcza wirtualny obiekt w scenie, chce, aby wyglądał on jak element świata rzeczywistego. Jeśli tworzysz aplikację, w której użytkownicy mogą kupować meble, chcesz, aby mieli pewność, że fotel, który zamierzają kupić, zmieści się w ich mieszkaniu.
Interfejs Depth API pomaga aparatowi urządzenia określać rozmiar i kształt rzeczywistych obiektów w scenie. Tworzy obrazy głębi lub mapy głębi, dodając w ten sposób warstwę realizmu do Twoich aplikacji. Informacje z obrazu głębi możesz wykorzystać do tworzenia wciągających i realistycznych treści.
Przykłady zastosowań interfejsu Depth API
Interfejs Depth API może obsługiwać zasłanianie obiektów, zwiększać imersję i umożliwiać nowe interakcje, które zwiększają realizm projektów AR. Oto kilka sposobów, w jakie możesz wykorzystać tę funkcję w swoich projektach. Przykłady działania głębi znajdziesz w przykładowych scenach w ARCore Depth Lab, które pokazują różne sposoby uzyskiwania dostępu do danych o głębi. Ta aplikacja Unity jest dostępna jako oprogramowanie typu open source w GitHubie.
Włączanie okluzji
Określanie okluzji, czyli dokładne renderowanie wirtualnego obiektu za obiektami ze świata rzeczywistego, ma kluczowe znaczenie dla wciągających wrażeń w AR. Załóżmy, że użytkownik chce umieścić wirtualnego Andy’ego w scenie zawierającej bagażnik obok drzwi. Renderowanie bez okluzji spowoduje, że Andy będzie nierealistycznie nachodzić na krawędź pnia. Jeśli wykorzystasz głębię sceny i określisz, jak daleko wirtualny Andy znajduje się od otoczenia, np. drewnianego pnia, możesz dokładnie wyrenderować Andy’ego z okluzją, dzięki czemu będzie wyglądał znacznie bardziej realistycznie w swoim otoczeniu.

Przekształcanie sceny
Zaproś użytkownika do nowego, wciągającego świata, renderując wirtualne płatki śniegu, które osiadają na podłokietnikach i poduszkach kanapy, lub otaczając jego salon mgłą. Za pomocą funkcji głębi możesz tworzyć sceny, w których wirtualne światła wchodzą w interakcje z prawdziwymi obiektami, chowają się za nimi i ponownie je oświetlają.
Odległość i głębia ostrości
Chcesz pokazać, że coś jest daleko? Za pomocą interfejsu Depth API możesz mierzyć odległość i dodawać efekty głębi ostrości, takie jak rozmycie tła lub pierwszego planu sceny.
Włączanie interakcji użytkowników z obiektami AR
Umożliwiaj użytkownikom „dotykanie” świata za pomocą aplikacji, pozwalając treściom wirtualnym wchodzić w interakcje ze światem rzeczywistym dzięki kolizjom i fizyce. Spraw, aby wirtualne obiekty pokonywały przeszkody w prawdziwym świecie lub aby wirtualne kulki z farbą trafiały w prawdziwe drzewo i rozpryskiwały się na nim. Połączenie wykrywania kolizji na podstawie głębi z fizyką gry może sprawić, że rozgrywka stanie się bardziej realistyczna.
Ulepszanie testów trafień
Głębokość może służyć do poprawy wyników testu trafienia. Testy trafienia w płaszczyznę działają tylko na płaskich powierzchniach z teksturą, natomiast testy trafienia w głębię są bardziej szczegółowe i działają nawet na obszarach niepłaskich i o niskiej teksturze. Dzieje się tak, ponieważ testy trafienia w głębi wykorzystują informacje o głębi sceny do określania prawidłowej głębi i orientacji punktu.
W przykładzie poniżej zielone roboty Andy oznaczają standardowe testy trafień w płaszczyznę, a czerwone – testy trafień w głębię.
Zgodność urządzeń
Interfejs Depth API jest obsługiwany tylko na urządzeniach o mocy obliczeniowej wystarczającej do obsługi głębi. Musi być włączony ręcznie w ARCore zgodnie z instrukcjami w sekcji Włączanie głębi.
Niektóre urządzenia mogą też mieć czujnik głębi, np. czujnik czasu przelotu (ToF). Aktualną listę urządzeń obsługujących interfejs Depth API oraz urządzeń z obsługiwanym sprzętowym czujnikiem głębi, np. czujnikiem ToF, znajdziesz na stronie Urządzenia obsługujące ARCore.
Obrazy głębi
Interfejs Depth API wykorzystuje algorytm głębi na podstawie ruchu do tworzenia obrazów głębi, które zapewniają widok świata w 3D. Każdy piksel na obrazie głębi jest powiązany z pomiarem odległości sceny od kamery. Ten algorytm pobiera wiele obrazów urządzenia z różnych kątów i porównuje je, aby oszacować odległość do każdego piksela, gdy użytkownik przesuwa telefon. Selektywnie wykorzystuje uczenie maszynowe, aby zwiększyć głębię przetwarzania, nawet przy minimalnym ruchu użytkownika. Wykorzystuje też dodatkowy sprzęt, który może mieć urządzenie użytkownika. Jeśli urządzenie ma dedykowany czujnik głębi, np. ToF, algorytm automatycznie łączy dane ze wszystkich dostępnych źródeł. Poprawia to istniejący obraz głębi i umożliwia uzyskanie głębi nawet wtedy, gdy kamera się nie porusza. Zapewnia też lepszą głębię na powierzchniach z niewielką liczbą elementów lub bez nich, takich jak białe ściany, oraz w dynamicznych scenach z poruszającymi się osobami lub obiektami.
Poniższe obrazy przedstawiają zdjęcie korytarza z rowerem na ścianie oraz wizualizację obrazu głębi utworzonego na podstawie zdjęć z aparatu. Obszary w kolorze czerwonym są bliżej kamery, a obszary w kolorze niebieskim – dalej.

Głębia na podstawie ruchu
Dane o głębi stają się dostępne, gdy użytkownik porusza urządzeniem. Algorytm może uzyskać dokładne oszacowania głębokości w zakresie od 0 do 65 metrów. Najdokładniejsze wyniki uzyskasz, gdy urządzenie będzie znajdować się w odległości od pół metra do około pięciu metrów od rzeczywistej sceny. Im bardziej użytkownik porusza urządzeniem, tym lepsze wyniki uzyskuje.
Pobieranie obrazów głębi
Za pomocą interfejsu Depth API możesz pobierać obrazy głębi pasujące do każdej klatki z aparatu. Uzyskany obraz głębi ma taką samą sygnaturę czasową i wewnętrzne parametry pola widzenia jak kamera. Prawidłowe dane o głębi są dostępne dopiero po rozpoczęciu poruszania urządzeniem przez użytkownika, ponieważ głębia jest uzyskiwana na podstawie ruchu. Powierzchnie z niewielką liczbą elementów lub bez nich, takie jak białe ściany, będą miały przypisaną niedokładną głębię.
Co dalej?
- Zapoznaj się z ARCore Depth Lab, w którym pokazujemy różne sposoby uzyskiwania dostępu do danych o głębi.