poniedziałek, 10 kwietnia 2017

[DSP2017] 13# Vuforia, HoloLens, a także… czajnik na głowie

Vuforia to biblioteka pozwalająca wyłapywać przedmioty z otaczającej nas rzeczywistości i dodawać do nich dodatkowe elementy czy poddawać animacji… Mogą to być płaskie obrazy, ale także przestrzenne przedmioty jak np. podełko po ciastkach, zabawka itd oraz specjalne znaczniki. Vuforia wspiera Unity, platformy mobilne tj. Android, iOS czy Windows Universal, a także HoloLens!

Na początek kilka przydatnych linków, na które rzuciłem okiem, by zapoznać się z tematem:

Vuforia jest dostępna jako rozszerzenie  dla Unity w postaci pakietu. Możemy go zaimportować do naszego projektu. Również sztandarowy przykład ładujemy do Unity jako rozszerzenie (już bez osobnego importu rozszerzenia Vuforii, które jest w nim). Po jego otwarciu w Unity widzimy dwa czajniki, w czasie działania aplikacji pojawią się wtedy, gdy zostaną wykryte skojarzone z nimi obrazki.

Capture03

Aby móc to odpalić, musimy wcześniej wygenerować sobie klucz licencyjny (do deweloperskiej zabawy bez publikacji, sprzedaży, wdrożeń jest darmowy). Niestety, jeśli dysponujemy tylko emulatorem HoloLens, to tego nie sprawdzimy. Vuforia pozwala co prawda jeszcze używać kamery internetowej do podglądu sceny w trybie Play w samym Unity, ale w przypadku projektu dla HoloLens to nie działa, o czym pisze nawet w dokumentacji. Wobec takiej sytuacji mógłbym tutaj zakończyć tego posta albo nie poruszać w ogóle takiej tematyki, ale wpisy HoloLens, Unity and Recognition with Vuforia (Part 1) oraz HoloLens, Unity and Recognition with Vuforia (Part 2) zachęciły mnie na tyle, że postanowiłem nawet bez integracji z HoloLens wypróbować rozpoznawanie własnych przedmiotów przez Vuforię.

Na pierwszy raz niech idzie płaski obraz. Wyjąłem jeden z moich singli z szuflady, położyłem na parapecie i zrobiłem mu zdjęcie. Wyciąłem tak by mieć zdjecie tylko przedniej okładki. Na portalu Vuforii w sekcji Develop –> Target Manager założyłem swoją bazę o nazwie HoloVision dla Device (w urządzeniu, nie przez chmurę). Następnie wybrałem Add Target i pojawiło się następujące okienko dialogowe:

Capture1

Wybrałem Single Image, wybrałem mój obrazek z dysku (aha, skompresowałem go by zajmował mniej niż 2MB, bo jest limit na rozmiar). Podałem szerokość 12cm w metrach jako 0.12.

Database

Po chwili przetwarzania obraz został dodany do bazy. Widzimy, że dostał 5 gwiazdek, więc powinien być łatwo rozpoznawalny. W jego szczegółach możemy zobaczyć punkty znaczące oznaczone kolorem żółtym. Całą bazę pobrałem jako pakiet Unity naciskając Download Database.

Capture04

Teraz wziąłem sobie przykład ImageTargets-6-2-10.unitypackage z Core Features dla Unity. Zaimportowałem do niego pakiet, który przed chwilą pobrałem ze strony. Automatycznie jednak to nie poszło. W Assets musiałem odszukać teksturę madryt_scaled z mojej bazy do rozpoznawania i ustawić w inspektorze Texture Type na Default i Texture Shape na 2D.

Capture01

Następnie na ImageTargetChips (mogły być też ImageTargetStones czy ImageTargetTarmac) w skrypcie ImageTargetBehaviour zmieniłem Database na moją HoloVision, co spowodowało także zmianę Image Target na jedyny zawarty w niej obraz, czyli madryt. Szerokość ustawiła się na 0.12, a wysokość odpowiednio się przeliczyła.

Capture02 X

Zaznaczam ARCamera (jeden z najważniejszych elementów Vuforii w Unity) w Hierarchy i z poziomu jej inspektora otwieram ustawienia dla Vuforii. Do pola App License Key wklejam deweloperski klucz licencyjny, który wcześniej utworzyłem sobie na portalu. Aha, ważne jest, aby w sekcji Datasets nasza baza była załadowana i aktywna. W moim przypadku tak nie było i przy HoloVision zaznaczyłem oba checki. Na dole w sekcji Webcam można zarządzać ustawieniami kamery internetowej, która może posłużyć dla trybu Play w Unity.

Uwaga. Teraz podam przepis na najbardziej oryginalne selfie, jakie sobie kiedykolwiek zrobiłem. Włączam tryb Play w Unity. Nad głową w dłoni trzymam płytę, która powinna zostać rozpoznana i bach, pojawia się nad nią czajnik, którego w rzeczywistości nie ma!

CzajnikX

Nawiasem mówiąc wyszło…. takie małe nawiązanie do Zaciera, który w realu na koncertach nosi często garnek lub czajnik na głowie –SmileTo chyba najbardziej zwariowany odcinek, powstał dość spontanicznie, ale tak jest chyba właśnie najlepiej. Zobaczymy, co następnym razem urodzi się pod moją czaszką.

Brak komentarzy: