Głębia dodaje realizm

Przewodniki dotyczące poszczególnych platform

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.