Jak stworzyć aplikację rozszerzonej rzeczywistości?
Najprostsza odpowiedź brzmi – nie próbuj dostosować rzeczywistości do wirtualnej koncepcji. Zamiast tego wklej obiekty do wyświetlonego obrazu rzeczywistego świata tak, aby można było poczuć, że są tak realne jak rzeczywistość obok nich. Jakich metodologii możesz użyć? Jakiego ryzyka możesz się podjąć, a jakiego unikać? Jaką wybrać platformę i o czym warto pamiętać?
Przemysław Piasecki. Unity Game Developer w Knights of Unity. Profesjonalny inżynier z dyplomem Bachelor of Science (edukacja skoncentrowana na developmencie gier wideo) z Buckingamshire New University w Londynie. Jego umiejętności obejmują development gier wideo i programowanie sztucznej inteligencji.
Krystian Lema. Unity Game Developer w Knights of Unity. Skończył kierunek Automatyka i Robotyka, posiada tytuł magistra Informatyki. Interesuje się grami wideo na silniku Unity, pisaniem logiki, zarządzaniem systemami i algorytmami. Jest pasjonatem technologii i inteligentnych budynków.
Rzeczywistość rozszerzona (Augmented Reality – AR) i rzeczywistość wirtualna (Virtual Reality – VR) otworzyły drzwi do nowych kierunków developmentu w sektorze IT. Co jeszcze istotniejsze, mogą zostać użyte w niemal każdym sektorze gospodarki, by wspierać standardowe procedury i dać klientom lub pracownikom realne wrażenie obcowania z produktem. Dziś chcielibyśmy się skoncentrować na developmencie aplikacji AR – procesie i wyzwaniach.
Spis treści
Jakie metodologie wybrać, gdy chcemy stworzyć projekt AR?
W przeciwieństwie do rzeczywistości wirtualnej, która tworzy całkiem nową rzeczywistość, AR rozszerza postrzeganie realnej przestrzeni przez dodanie do niej nieistniejących obiektów i wydarzeń. Z tego powodu istotnym jest pamiętanie o możliwościach i specyfice AR; pomoże to w przygotowaniu projektu.
Przed startem (tak jak w przypadku każdego innego projektu IT) istotny jest wybór metodologii, w której ma się pracować. Jest ich trochę, niektóre bardziej nowoczesne od pozostałych.
Mamy na przykład do czynienia z klasycznym podejściem, w którym Project Manager przekazuje feedback do developerów pracujących niezależnie nad różnymi częściami projektu.
Metoda Waterfall. To podejście wymaga wykonania pewnych tasków zanim przystąpimy do kolejnych. Przechodź przez kolejne fazy: konceptu, inicjalizacji, analizy, designu, developmentu, testowania, uruchomienia i zapewnienia wsparcia.
Metodologia Agile stała się w ostatnich latach najpopularniejsza. Jest znacznie bardziej elastyczna niż poprzednie. Bazuje na krótkich, tak zwanych „sprintach”, które pozwalają zespołowi developerów na częstsze dostosowywanie tasków do aktualnej sytuacji w projekcie. Nie istnieje jasno zdefiniowany czas sprintu, co oznacza, że możesz pracować przez tydzień lub dwa, a potem rozmawiać o wynikach, tweakach, nowych taskach, itd. To podejście pozwala na lepszą kontrolę nad postępami prac oraz procesami.
Wiele firm pracuje dziś z wykorzystaniem metodologii Agile i adaptuje ją do swoich potrzeb. Większość projektów ma wiele zmiennych, które adaptuje się w trakcie trwania projektu. Proces testowania także podlega zmianom, ma to naturalnie związek z fluktuacjami w całości prac. To jeden z powodów, dla których wybór metodologii zwinnej jest przeważnie najlepszym wyborem.
Na czym należy się skupiać w trakcie procesu developmentu?
Najważniejszą rzeczą, o której trzeba pamiętać od początku do końca jest to, że AR powinna „pasować” do rzeczywistości. Oznacza to po prostu, że projekt powinien wyglądać przekonująco i pasować do rzeczywistego obrazu w który jest wkomponowany. W przypadku VR wszystko może wyglądać jak nie z tego świata, w przypadku AR chcesz aby wszystko wyglądało prawdziwie.
Ocena ryzyka w projekcie AR
W AR, jak to bywa przypadku zaawansowanych technologii, istnieje wiele czynników ryzyka, które należy wziąć pod uwagę gdy rozpoczyna się ocenę ryzyka. Istnieją dwa podejścia – ilościowe i jakościowe.
Należy przy tym pamiętać, że istnieją różne rodzaje ryzyka, pochodzące z różnych stron i na różnych etapach tworzenia projektu:
- Ryzyka związane z klientem
Dobra komunikacja to pierwsza rzecz do wdrożenia w każdej firmie i jednocześnie pierwsza, która może zawieść. Jeszcze przed rozpoczęciem projektu dobrze jest wiedzieć jak powinien wyglądać produkt końcowy. Pomocne jest tłumaczenie wizji klientowi i dyskusja eliminująca wątpliwości. Znajdź wspólny język i to nie tylko z klientem, ale także z teamem software developerów.
Typowy błąd polega na działaniu opartym na niezrozumieniu potrzeb klienta, więc upewnij się, że obie strony rozumieją na czym ma polegać projekt i co trzeba zrobić, aby osiągnąć cel.
Może się także zdarzyć, że klient będzie miał nieracjonalne oczekiwania lub jego pomysły nie będą odpowiadały możliwościom danej technologii. Nie warto się wtedy spieszyć, tylko rozmawiać, bo pomyłki prowadzą do niskiej jakości kodu. Pamiętaj o ewaluacji w ramach realistycznych deadline’ów z klientem i bądź przygotowany, by odrzucić projekt, jeśli oczekiwania nie są realistyczne.
Szacowanie budżetu projektu może być trudne. Opanowanie tej sztuki zajmuje lata pełne doświadczeń i praktyki. Dobrą metodą jest podzielenie projektu na mniejsze części i oszacowanie wartości każdej z nich.
- Ryzyka techniczne
Podstawową rzeczą w developmencie jest jakość kodu i algorytm, więc trzeba skupić się właśnie na tych zagadnieniach.
Wybór platformy także może rodzić komplikacje, więc rozpoznanie alternatyw jest pomocne. Graficzny interfejs użytkownika (Graphical User Interface – GUI) jest bardzo ważny dla interakcji użytkowników z aplikacją. Pozytywne doświadczenie jest bardzo ważne.
Pamiętaj o testowaniu, znajdź strategię, która będzie pasowała do projektu i upewnij się, że testowanie odbywa się na każdym etapie trwania projektu.
Wydajność to także ważny czynnik. Zadbaj o to, aby aplikacja była stabilna i nie „wysypywała się” na zróżnicowanych urządzeniach. Testowanie w tym pomoże.
Serwis. Użytkownicy wymagają uwagi, muszą mieć możliwość otrzymania wsparcia (online lub telefonicznie), aby czuli się dla firmy ważni. Nie zapominaj też, że to oni są najlepszym źródłem informacji zwrotnych. Słuchaj użytkowników i przeprowadzaj aktualizację aplikacji tak często, jak jest to potrzebne.
- Ryzyka biznesowe
Branża gier wideo jest bardzo dynamicznym środowiskiem. Sprawdź konkurencję, upewnij się co oferują i jak wyglądają ich szanse na przyszłość. Pomyśl o wszystkich problemach, które mogą wyniknąć w interfejsie użytkownika, bo to najbardziej ryzykowny czynnik przy produkcji aplikacji AR.
Obecność jako pierwszy z produktem na rynku jest ważne, skup się na managemencie. Dobre zarządzanie prowadzi do sukcesu, słabe do porażki. Wszystko zależy od radzenia sobie z czasem, zasobami i budżetem.
Mogą pojawić się też trudności niezwiązane bezpośrednio z aplikacją, które wpłyną jednak na jej funkcjonalność. Dobrym przykładem jest tutaj połączenie z Internetem. Sprawdź aplikację na różnych łączach o różnej przepustowości by upewnić się, że działa.
Ilość zasobów może różnić się w zależności od etapu trwania projektu. Warto mieć kompetentnych ludzi, czas i pieniądze. Nie każdy developer musi też być odpowiedni dla danego projektu. Pieniądze z kolei to skomplikowany temat, więc jeśli tylko tego potrzebujesz, pozyskaj inwestorów.
Pamiętaj także o platformie, na której projekt ma się ukazać. Każda z nich ma swoje funkcjonalności i działa na innych systemach operacyjnych.
Różne platformy i funkcjonalności
ARCore autorstwa Google
Opis
AR Core to SDK stworzone przez Google. Pozwala na budowę aplikacji rozszerzonej rzeczywistości, content może być zintegrowany za pomocą telefonicznej kamery. To jedna z najpopularniejszych obecnie tego typu technologii.
Aby zintegrować wirtualny i prawdziwy świat, AR Core wykorzystuje:
- Śledzenie ruchu – aby ocenić pozycję telefonu względem otoczenia;
- Świadomość środowiskową – aby wykryć rozmiar i lokację powierzchni, od pozycji horyzontalnych i wertykalnych po zagięte;
- Szacowanie światła – aby oszacować rozkład oświetlenia w prawdziwym świecie.
Software
OS: Android 7.0 (Nougat) or later, iOS (ARCore requires an ARKit compatible device running iOS 11.0 or later)
Hardware
AR Core jest dostępny za darmo dla nowszych urządzeń takich jakSamsung Galaxy S7 Edge, Galaxy S8/S8+, Galaxy S9/S9+, LG G6, LG V30, Huawei P20, Google Pixel 2/2XL i więcej. Wszystkie obsługiwane urządzenia można znaleźć za pomocą Google.
Urządzenia z iOS także są wspierane, ale wymagają używania ARKit.
Support dla Unity
ARCore wspiera developerów Unity. Konkretnie:
- SDK dla Unity z przykładami w Unity,
- Przewodniki w ARCore i kreację prostych aplikacji,
- Dokumentację Unity i referencje application programming interface (API).
Funkcja wykrywania powierzchni
W ARCore możliwe jest wykrywanie powierzchni horyzontalnych i wertykalnych. ARCore skanuje Twoje otoczenie za pomocą kamery danego urządzenia i rozpoznaje powierzchnie. Developer otrzymuje informacje o pozycji i rotacji wykrytej powierzchni. Mając te informacje programista jest w stanie skalkulować kąty między jakimikolwiek wykrytymi powierzchniami. To bardzo pomocne, gdy chcemy precyzyjnie umieścić obiekt w przestrzeni 3D.
Ta funkcjonalność jest przydatna, ale precyzja pozostawia wiele do życzenia, chociaż owszem, czasami działa to dobrze. Sprawdza się, gdy chcemy umiejscowić mapę do gry na stole biurowym, wtedy całe otoczenie stołu może posłużyć za otoczenie w grze. Może jednak nie sprawdzić się w aplikacjach, w których wymagana jest precyzja lub w której muszą zostać spełnione dodatkowe warunki lub poprawki w kodzie.
ARKit autorstwa Apple
Opis
ARKit to framework do rzeczywistości rozszerzonej, stworzony przez Apple i przeznaczony dla urządzeń z systemem iOS. Może być używany do tworzenia aplikacji i gier, w których pomieszczenie zostaje zmienione w środowisko dla danej aplikacji. ARKit jest zintegrowany z iOS, to alternatywa dla ARCore. W praktyce działa bardzo podobnie do niego.
Oto główne funkcjonalności, które Apple umieściło w swojej technologii AR:
- Jednolite doświadczenia AR. Teraz Twoje aplikacje AR będą zachowywać ciągłość między sesjami, mogą być także wznowione w późniejszym czasie. Użytkownik może zacząć układać puzzle AR na stole i wrócić do nich później; zastanie je w tym samym stanie i nie musi zaczynać od początku.
- Współdzielone doświadczenia AR. Aplikacje AR nie są już limitowane obecnością jednej osoby albo urządzenia przypisanego do doświadczenia AR. Teraz wielu użytkowników może używać swoich urządzeń z iOS, aby jednocześnie obserwować obiekty AR lub grach w gry w trybie multiplayer. Można nawet wprowadzić obserwatorów, którzy będą oglądali zmagania, patrząc na nie z boku.
- Wykrywanie i śledzenie obiektów. ARKit 1.5 dodał wsparcie dla wykrywania obrazów 2D, pozwalając wyzwalać doświadczenia AR bazując na obrazach takich jak plakaty, artworki albo znaki. ARKit 2 rozszerza to wsparcie, proponując pełne wsparcie dla śledzenia obrazów 2D, można więc zaimportować możliwy do przenoszenia obiekt jak pudełko czy czasopismo między różnymi doświadczeniami. ARKit 2 dodaje także opcje wykrywania realnie istniejących obiektów 3D, takich jak rzeźby, zabawki czy meble.
Software
ARKit jest częścią iOS od wersji 11.0
Hardware
ARKit jest dostępny dla nowszych urządzeń z logiem Apple. Wspierane są niemal wszystkie nowsze sprzęty. Pełna lista kompatybilnych urządzeń dostępna jest na stronie Apple.
Wsparcie dla Unity
Podobnie do ARCore, ARKit wspiera wiele platform developerskich, także Unity:
- SDK dla Unity jako plugin,
- Użyteczne przewodniki i artykuły można znaleźć tutaj i tutaj,
- Dokumentacja.
Funkcja wykrywania powierzchni
Podobnie jak ARCore, ARKit może wykrywać powierzchnie, horyzontalne i wertykalne. Zostało to zaimplementowane inaczej, ale rezultat jest prawie ten sam. Dzięki skanowaniu za pomocą kamery urządzenia, developer może uzyskać dostęp do informacji na temat pozycji i rotacji danej powierzchni. Strukturalnie zostało to rozwiązane inaczej, ale rezultat jest ten sam. Pozycja i rotacja w strukturach Unity to Vector3 i Quaternion. Więcej informacji na temat detekcji powierzchni i kątów między nimi znajduje się na blogu Knights of Unity.
Vuforia
Opis
Systemy operacyjne: iOS, Android
Vuforia została stworzona przez amerykańską firmę o nazwie Qualcomma. Ten framework jest używany przez twórców aplikacji w ponad 130 krajach. Baza grafik w Vuforii może zostać zbudowana i uzyskać do niej można dostęp na różne sposoby, na przykład:
- Tworząc ją wewnątrz urządzenia mobilnego, tworząc aplikacji i przetwarzając całość danych używając procesora urządzenia,
- Przesyłając dane na zewnętrzny server chmury obliczeniowej, gdzie odbywają się wszystkie operacje.
Vuforia i rozpoznawanie obrazów
SDK Vuforia pozwala na śledzenie nie jednego, ale wielu obiektów/obrazów jednocześnie. Przez analizę powiązań między charakterystycznymi punktami referencyjnymi, nie jest ograniczona tylko do obrazów i powierzchni 2D, może być także używana w trybie 3D. Rozpoznany obraz może być użyty do generowania dodatkowego contentu, w dodatku na kilka sposobów.
Najpopularniejszym jest wyświetlanie informacji na temat śledzonego obiektu. Może to być tytuł obrazu, który zostaje podany przez pobranie danych z lokalnej bądź zewnętrznej bazy i wyświetlony przez kamerę. Źródłem obrazu nie jest tutaj kod QR, ale realnie istniejący obiekt. Innym sposobem jest generowanie bardziej zaawansowanych obiektów, takich jak animowane modele. Mogą posłużyć one do pokazania zachowania zwierząt lub wyświetlić scenę bitwy w trakcie czytania książki.
Vuforia pozwala ponadto na rozpoznawanie tekstu! W standardowej wersji możemy uzyskać dostęp do słownika z ponad 100.000 natychmiast dostępnych angielskich słów, developerzy mogą także dodawać własne.
Qualcomm daje developerom możliwość używania specjalnych kodów nazywanych „VuMark” które są całkiem podobne do klasycznych kodów QR ale dają możliwość umieszczenia w nich dowolnego obrazu – zwiększają się przez to możliwości personalizacji. Więcej informacji o tym jak stworzyć własny kod VuMark znajduje się na stronie Vuforii.
Inne funkcjonalności:
Vuforia Smart Terrain – opcja pozwalająca na rekonstrukcję i rozszerzenie fizycznych obiektów w środowisku. Dzięki temu umożliwia tworzenie nowego typu gier i oprogramowania do wizualizacji. Znakomicie nadaje się dzięki temu do gier planszowych i doświadczeń, w których można wykorzystać obiekty w rodzaju pudełek po płatkach śniadaniowych lub puszek, aby stworzyć środowisko dla gry lub wizualizacji.
Vuforia Model Targets – wprowadza rozpoznawanie obiektów na podstawie kształtu, w przeciwieństwie do klasycznego druku. To pozwala na śledzenie obrazów, zeskanowanych obiektów, specjalnych, zakodowanych znaków, tekstów i powierzchni.
Vuforia Ground Plane – funkcjonalność silnika Unity, która pozwala na umieszczenie rozszerzonego obiektu na podłożu lub innej, horyzontalnej przestrzeni. Pomaga w tworzeniu wysokiej jakości aplikacji opartych na dużej roli wizualiów.
Vuforia User Defined Targets – umożliwia tworzenie obrazów bezpośrednio z kamery użytkownika. Takie obiekty dzielą większość cech ze standardowymi obrazami, ale nie wspomagają wirtualnych przycisków (Virtual Buttons).
Vuforia Fusion – funkcja której zadaniem jest powstrzymać fragmentację i uaktywnić kamery, sensory, a także zewnętrzne frameworki takie jak ARKit.
External Camera Usage – funkcja ta pomaga developerom zdefiniować jak silnik Vuforia pozyskuje ramowe dane. Musi zaimplementować kilka API, których z kolei używa SDK aby dotrzeć do zewnętrznego systemu. W obecnej chwili wspierane są tylko funkcjonalności związane z obrazem, takie jak Image Targets, Multi Targets, VuMarks oraz Object Targets.
Vuforia 7.1 Update – zawiera mnóstwo usprawnień w stosunku do wersji 7.0, łącznie z automatyczną inicjalizacją scen z componentem Vuforii. Usuwa także wsparcie dla Google Tango, opcję klonowania obiektów i inne. W Vuforii 7.2 oczekiwane jest zwiększenie wsparcia dla ARCore, Microsoft HoloLens oraz urządzeń z Universal Windows Platform.
Przyszłość Vuforii
Qualcomm pracuje aktualnie nad rozwojem silnika i funkcjami które zostaną dodane do SDK. Wśród nich znajdują się:
- Background Effects – pozwoli na dodanie efektów wirtualnych shaderów na kamerę. Można będzie przykładowo nałożyć efekt prześwietlenia rentgenowskiego albo trybu nocnego (night vision),
- Video PlayBack – pozwoli na płynne przejścia między obrazem statycznym na tryb wideo bezpośrednio na targetowanej przestrzeni,
- Virtual Buttons – umożliwi nowy rodzaj interakcji między obiektami takimi jak magazyny albo plakaty przez dodanie na ich powierzchni wirtualnego ekranu dotykowego,
- Occlusion Management – umożliwi rozpoznawanie obrazów ukrytych za codziennie napotykanymi barierami, przykładowo ludzkimi dłońmi. Wspieranie special occlusion pozwoli na wyświetlanie obiektów tak, jakby były obiektami fizycznymi.
Podsumowanie
Rzeczywistość rozszerzona to bardzo pojemna przestrzeń która w przyszłości może stać się źródłem wielu dobrych rozwiązań i rozrywki. AR pozwala na zagłębienie się w jej nowy wymiar. To także gwałtownie rozwijający się rynek, gdzie nowe rozwiązania i urządzenia są tworzone w coraz szybszym tempie.
Artykuł został pierwotnie opublikowany na cshark.com/blog, a jego autorami są Partnerzy firmy — Knights of Unity. Zdjęcie główne artykułu pochodzi z pexels.com.