Przewodnik dla programistów Cloud Anchors dla Unity (AR Foundation)

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:

  1. Zadzwoń pod numer ARAnchorManager.HostCloudAnchorAsync().
  2. Uruchom koderę i czekaj na wynik z obietnicy. Więcej informacji znajdziesz na stronie z artykułem Coroutines w Unity.
  3. Sprawdź stan wyniku, aby określić, czy operacja się powiodła, lub zinterpretuj kod błędu, jeśli się nie uda.
  4. 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