Przewodniki dotyczące poszczególnych platform
Android (Kotlin/Java)
Android NDK (C)
Unity (Fundacja AR)
Nierealistyczny mechanizm
Jako deweloper aplikacji AR zależy Ci na płynnym połączeniu rzeczywistości wirtualnej z rzeczywistą. Gdy użytkownik umieszcza w scenie obiekt wirtualny, chce, aby wyglądał jak w prawdziwym świecie. Jeśli tworzysz aplikację, aby użytkownicy mogli kupować meble, chcesz, by mogli oni mieć pewność, że fotel, który zamierzają kupić, będzie pasować do ich przestrzeni.
Depth API pomaga aparatowi urządzenia rozpoznać rozmiar i kształt rzeczywistych obiektów w scenie. Umożliwia tworzenie obrazów głębi, czyli map głębi, co zapewnia aplikacjom dodatkową warstwę realizmu. Możesz wykorzystać informacje zawarte w obrazie głębi, aby zapewnić użytkownikowi realistyczne i realistyczne wrażenia.
Przypadki użycia interfejsu API Depth API
Interfejs Depth API może pomagać w okluzji obiektów, poprawić wrażenia widzów i zwiększyć realizm w obszarze AR. Poniżej znajdziesz kilka sposobów jego wykorzystania we własnych projektach. Aby zobaczyć przykłady działania głębi w praktyce, zapoznaj się z przykładowymi scenami w ARCore Depth Lab, który pokazuje różne sposoby uzyskiwania dostępu do szczegółowych danych. Ta aplikacja w Unity jest typu open source na GitHubie.
Włącz przesłonięcie
Przesłonięcie, czyli dokładne renderowanie wirtualnego obiektu za obiektami ze świata rzeczywistego, ma kluczowe znaczenie dla zapewnienia wciągających wrażeń AR. Weźmy na przykład wirtualną postać Andy'ego, którą użytkownik może zechcieć umieścić w scenie, na której widać kufer obok drzwi. Podczas renderowania nieprzesłonięte ciało Antka nie będzie realistycznie nachodziło na krawędź pnia. Wykorzystując głębię sceny i zrozumiesz, jak daleko jest wirtualny Andy w odniesieniu do takiego otoczenia (np. drewnianego pnia), możesz dokładnie wyrenderować obraz Andy'ego z przesłonięciem, co sprawi, że obraz z otoczenia stanie się bardziej realistyczny.
Przekształcanie sceny
Pokaż użytkownikom nowy, wciągający świat – możesz renderować wirtualne płatki śniegu, aby oparły się na ramionach i poduszkach kanap lub rzucać pokój w salonie w zamgloną mgłą. Za pomocą funkcji Głębia możesz stworzyć scenę, w której wirtualne światła wchodzą w interakcję, ukrywają się za i na nowo oświetlają prawdziwe obiekty.
Odległość i głębia pola
Chcesz pokazać, że coś jest daleko? Za pomocą interfejsu Depth API możesz mierzyć odległość i dodawać efekty głębi pola, takie jak rozmycie tła lub pierwszego planu sceny.
Umożliwianie użytkownikom interakcji z obiektami AR
Pozwól użytkownikom na „dotykanie” świata za pomocą aplikacji, umożliwiając treściom wirtualnym interakcję ze światem rzeczywistym w wyniku zderzeń i fizyki. Pokonuj prawdziwe przeszkody za pomocą wirtualnych obiektów lub graj w wirtualne kulki do paintballa i rozrzucaj je na prawdziwe drzewo. W połączeniu z fizyką gry i kolizją opartą na głębi możesz sprawić, że to doświadczenie będzie ożywione.
Ulepsz testy trafień
Głębokość może służyć do poprawy wyników testów trafień. Testy płaskich powierzchni działają tylko na powierzchniach płaskich z teksturą, podczas gdy testy głębokości są bardziej szczegółowe i działają nawet na obszarach niepłaskich i o niskiej tekstur. Dzieje się tak, ponieważ te testy głębokości wykorzystują informacje o głębi ze sceny do określenia prawidłowej głębokości i orientacji punktu.
W poniższym przykładzie zielone ikony Andy oznaczają testy trafień na płaskowyżu, a czerwone – testy głębokości.
Zgodność urządzeń
Interfejs Depth API jest obsługiwany tylko na urządzeniach o mocy obliczeniowej umożliwiającej obsługę i należy włączyć ją ręcznie w ARCore, jak opisano w Włącz głębię.
Niektóre urządzenia mogą też być wyposażone w sprzętowy czujnik głębokości, np. czas lotu (ToF). Więcej informacji znajdziesz na stronie Urządzenia obsługujące ARCore. aktualna lista urządzeń, które obsługują Depth API, oraz lista urządzeń, które mieć obsługiwany sprzętowy czujnik głębokości, np. czujnik ToF.
Obrazy przedstawiające głębię
Depth API wykorzystuje algorytm głębi w ruchu do tworzenia obrazów głębi, które zapewniają widok świata w 3D. Każdy piksel na obrazie głębi odpowiada miarowi odległości między sceną od kamery. Ten algorytm pobiera wiele zdjęć z 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 ze strony użytkownika. Pozwala to również na korzystanie z dodatkowego sprzętu, które może mieć urządzenie użytkownika. Jeśli urządzenie ma specjalny czujnik głębi, np. ToF, algorytm automatycznie łączy dane ze wszystkich dostępnych źródeł. Ulepsza obecny obraz głębi i zwiększa głębię obrazu, nawet gdy aparat się nie porusza. Pozwala to też uzyskać lepszą głębię na powierzchniach z niewielką liczbą elementów lub bez nich, np. na białych ścianach, oraz w dynamicznych scenach z poruszającymi się osobami lub obiektami.
Poniższe obrazy przedstawiają obraz z kamery przedstawiający korytarz z rowerem na ścianie oraz wizualizację obrazu głębi utworzonego na podstawie zdjęć wykonanych przez kamerę. Obszary w kolorze czerwonym znajdują się bliżej aparatu, a obszary na niebiesko bardziej oddalone.
Głębia od ruchu
Dane dotyczące głębi są dostępne, gdy użytkownik przenosi urządzenie. Algorytm może uzyskać dokładne i rzetelne oszacowania głębokości z odległości od 0 do 65 metrów. Najdokładniejsze wyniki pojawiają się, gdy urządzenie znajduje się w odległości od pół metra do około pięciu metrów od rzeczywistego świata. Funkcje zachęcające użytkownika do częstszego ruszania urządzenia przyniosą lepsze i lepsze wyniki.
Uzyskiwanie zdjęć głębi
Za pomocą interfejsu Depth API możesz pobierać zdjęcia głębi pasujące do każdej klatki aparatu. Pozyskany obraz głębi ma tę samą sygnaturę czasową i takie samo pole widzenia co aparat. Prawidłowe dane o głębi są dostępne dopiero po rozpoczęciu przenoszenia urządzenia przez użytkownika, ponieważ są odczytywane na podstawie ruchu. Powierzchnie z niewielką ilością elementów lub bez nich, takie jak białe ściany, będą wyświetlane z niedokładną głębią.
Co dalej?
- Wypróbuj ARCore Depth Lab, aby dowiedzieć się, jak uzyskać dostęp do szczegółowych danych.