Dowiedz się, jak używać kotwic w chmurze we własnych aplikacjach.
Wymagania wstępne
Zanim przejdziesz dalej, upewnij się, że znasz podstawowe pojęcia związane z AR i wiesz, jak skonfigurować sesję ARCore.
Jeśli nie masz doświadczenia z kotwicami w chmurze, upewnij się, że wiesz, jak działają kotwice i zakotwiczone w chmurze.
Włącz interfejs ARCore API
Zanim użyjesz w swojej aplikacji kotwicy Cloud, musisz włączyć w niej ARCore API.
Włącz możliwości usługi Cloud Anchor w konfiguracji sesji
Gdy włączysz funkcję kotwicy Cloud w aplikacji, włącz jej funkcje w konfiguracji sesji AR w aplikacji, aby mogły komunikować się z interfejsem ARCore API:
Hostowanie kotwicy w chmurze
Hosting rozpoczyna się od wywołania metody ARAnchorManager.HostCloudAnchorAsync()
. ARCore prześle do interfejsu ARCore API dane wizualne, pozycje urządzeń i pozycję kotwicy. Interfejs API przetwarza te informacje, aby utworzyć mapę funkcji 3D, a ostatecznie zwraca do urządzenia unikalny identyfikator kotwicy w chmurze.
Możesz też przedłużyć czas życia hostowanej kotwicy za pomocą interfejsu ARCore Cloud Anchor Management API.
Aby zakończyć hosting usługi kotwicy w chmurze, aplikacja powinna wykonać te czynności:
- Zadzwoń pod numer
ARAnchorManager.HostCloudAnchorAsync()
. - Uruchom koderę i czekaj na wynik z obietnicy. Więcej informacji znajdziesz na stronie z artykułem Coroutines w Unity.
- Sprawdź stan wyniku, aby określić, czy operacja się powiodła, lub zinterpretuj kod błędu, jeśli się nie uda.
- Udostępnij wynik identyfikatora kotwicy Cloud innym klientom i użyj go do rozpoznania kotwicy Cloud za pomocą:
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
.
Sprawdzanie jakości mapowania punktów cech
ARCoreExtensions.FeatureMapQuality
wskazuje jakość punktów cech zarejestrowanych przez ARCore w ciągu ostatnich kilku sekund w danej pozycji kamery. Kotwice w chmurze hostowane z użyciem funkcji wyższej jakości są zwykle dokładniej rozpoznawane. Użyj narzędzia ARAnchorManagerExtensions.EstimateFeatureMapQualityForHosting()
, aby oszacować jakość mapy obiektów w danej pozycji kamery.
Wartość | Opis |
---|---|
Insufficient |
Jakość punktów cech zidentyfikowanych na podstawie pozycji w ostatnich kilku sekundach jest niska. Ten stan wskazuje, że ARCore prawdopodobnie będzie mieć większe problemy z rozpoznaniem usługi kotwicy w chmurze. Zachęć użytkownika do przesunięcia urządzenia tak, aby żądana pozycja kotwicy w chmurze, którą chce hostować, była widoczna pod różnymi kątami. |
Sufficient |
Jakość punktów cech zidentyfikowanych w pozycji w ciągu ostatnich kilku sekund jest prawdopodobnie wystarczająca do rozpoznania zakotwiczenia w chmurze przez ARCore, ale dokładność zatwierdzonej pozycji prawdopodobnie się zmniejszy. Zachęć użytkownika do przesunięcia urządzenia tak, aby żądana pozycja kotwicy w chmurze, którą chce hostować, była widoczna pod różnymi kątami. |
Good |
Jakość punktów cech zidentyfikowanych w pozycji w ciągu ostatnich kilku sekund wystarczy, aby aplikacja ARCore mogła skutecznie rozpoznać kotwicę w chmurze z dużą dokładnością. |
Rozwiązywanie wcześniej hostowanej kotwicy
Wywołaj ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
, aby znaleźć hostowaną kotwicę Cloud. Interfejs ARCore API okresowo porównuje cechy wizualne ze sceny z mapą funkcji 3D kotwicy, aby określić położenie i orientację użytkownika względem kotwicy. Po znalezieniu dopasowania interfejs API zwraca pozycję hostowanej kotwicy Cloud.
Możesz zainicjować rozstrzygnięcia dla wielu zakotwiczonych w chmurze w sekwencji. W danym momencie może istnieć do 40 równoczesnych operacji w Cloud Anchor.
Anulowanie operacji lub usuwanie kotwicy w chmurze
ARCloudAnchor.OnDestroy()
jest wywoływany automatycznie po usunięciu komponentu ARCloudAnchor
z obiektu gry, który go zawiera. Spowoduje to odłączenie i uwolnienie bazowego obiektu Cloud Anchor.
Sprawdzanie stanu wyniku operacji zakotwiczonej w chmurze
Użyj parametru CloudAnchorState, aby sprawdzić stan wyników operacji hostowania lub rozwiązywania problemów, w tym błędy.
Wartość | Opis |
---|---|
ErrorResolvingCloudIdNotFound |
Nie udało się rozwiązać problemu, ponieważ interfejs ARCore API nie mógł znaleźć podanego identyfikatora kotwicy w chmurze. |
ErrorHostingDatasetProcessingFailed |
Hostowanie nie powiodło się, ponieważ serwer nie mógł przetworzyć zbioru danych dla danej kotwicy. Spróbuj ponownie, gdy urządzenie zbierze więcej danych ze środowiska. |
ErrorHostingServiceUnavailable |
Interfejs ARCore API był nieosiągalny. Możliwych jest kilka przyczyn takiej sytuacji. Urządzenie może być w trybie samolotowym lub nie ma działającego połączenia z internetem. Żądanie wysłane do serwera mogło zostać przekroczony i nie uzyskać odpowiedzi. Może to być złe połączenie sieciowe, niedostępność DNS, problemy z zaporą sieciową lub coś innego, co wpływa na zdolność urządzenia do łączenia się z interfejsem ARCore API. |
ErrorInternal |
Zadanie hostingu lub rozwiązywania problemów z tą kotwicą zostało zakończone z błędem wewnętrznym. Aplikacja nie powinna podejmować prób usunięcia konta po tym błędzie. |
ErrorNotAuthorized |
Aplikacja nie może komunikować się z interfejsem ARCore API z powodu nieprawidłowej autoryzacji. Wybierz Ustawienia projektu > XR > Rozszerzenia ARCore, aby znaleźć prawidłową strategię autoryzacji. |
ErrorResolvingPackageTooNew |
Nie udało się znaleźć pakietu rozszerzeń ARCore używanego do rozpoznania kotwicy Cloud, jest ona nowsza i niezgodna z wersją używaną do jej hostowania. |
ErrorResolvingPackageTooOld |
Nie udało się zidentyfikować pakietu rozszerzeń ARCore używanego do rozpoznania kotwicy Cloud jest starszy i niezgodny z wersją używaną do jej hostowania. |
ErrorResourceExhausted |
Aplikacja wyczerpała limit żądań przypisany do danego projektu Google Cloud. Aby zgłosić prośbę o zwiększenie limitu interfejsu ARCore API w projekcie, skorzystaj z Google Developers Console. |
Success |
Udało się wykonać zadanie hostingu lub rozwiązywania problemów tej kotwicy. |
Limity interfejsów API dotyczące żądań hostów i rozwiązywania
W interfejsie ARCore API obowiązują następujące limity przepustowości żądań:
Typ limitu | Maksimum | Czas działania | Dotyczy: |
---|---|---|---|
Liczba kotwic | bez ograniczeń | Nie dotyczy | projekt |
Żądania kotwicy hosta | 30 | minuta | Adres IP i projekt |
resolve żądań zakotwiczonych | 300 | minuta | Adres IP i projekt |
Sprawdzone metody dbania o wygodę użytkowników
Poproś ich o wykonanie tych czynności, aby zapewnić im dobre wrażenia z aplikacji:
- Zaczekaj kilka sekund po rozpoczęciu sesji, zanim spróbujesz hostować kotwicę (np. umieszczając obiekt). To zapewni trochę czasu na ustabilizowanie się śledzenia.
- Wybierając miejsce, w którym ma się wyświetlać kotwica, znajdź obszar z elementami wizualnymi, które łatwo się od siebie odróżnić. Aby uzyskać najlepsze wyniki, unikaj powierzchni odbijających światło i powierzchni pozbawionych elementów wizualnych, np. pustych białych ścian.
Kamera powinna być ustawiona w taki sposób, aby znalazła się w centrum zainteresowania, i poruszać urządzenie po całym centrum, aby zmapować środowisko z różnych kątów, zachowując mniej więcej taką samą odległość jak tutaj. Pomoże to rejestrować więcej danych wizualnych i zwiększyć dokładność rozpoznawania.
Podczas hostowania i rozmowywania kotwic w chmurze upewnij się, że w rzeczywistym środowisku jest wystarczająco oświetlone.
Zasady wycofywania
- Aplikacje utworzone przy użyciu pakietu SDK ARCore w wersji 1.12.0 lub nowszej są objęte zasadami wycofywania interfejsu Cloud Anchor API.
- Aplikacje utworzone przy użyciu pakietu SDK w wersji 1.11.0 lub starszej ARCore nie mogą hostować ani wyświetlać kotwic w chmurze, ponieważ pakiet SDK używa starszego, wycofanego interfejsu ARCore API.
Co dalej
- Więcej informacji o sposobie wykorzystania ARCore w aplikacji znajdziesz w dokumentacji referencyjnej rozszerzenia ARCore Extensions for AR Foundation.