Zrób aplikację Killer Augmented Reality: 7 kroków

Zrób aplikację Killer Augmented Reality: 7 kroków

Spisu treści:

Anonim

Ten samouczek pokaże Ci, jak korzystać z interfejsów API w Unity, aby uczynić aplikacje rozszerzonej rzeczywistości inteligentniejszymi. Wszystko będzie skierowane do początkujących. Będziemy używać silnika gier wideo Unity 3D, ponieważ pozwoli nam to tworzyć aplikacje wieloplatformowe, które będą działać na IOS lub Android. Wtyczka Vuforia pozwoli nam uzyskać dostęp do strumienia kamery, a klasa WWW Unity pozwoli nam komunikować się z API za pośrednictwem protokołu http. Jest to ten sam mechanizm, który jest używany podczas uzyskiwania dostępu do witryn w przeglądarce.

Myślę, że prawdziwym zabójczym zastosowaniem rzeczywistości rozszerzonej nie jest granie, ale raczej używanie AR jako narzędzia do rzeczywistego zwiększenia obecnego postrzegania rzeczywistości. Sposobem na to jest połączenie aplikacji, które wykorzystują moc Internetu.

Jeśli chodzi o oprogramowanie, będziesz potrzebować Unity 3D:

i Vuforia SDK:

Kieszonkowe dzieci:

Krok 1: Klasa WWW Jedności

Tak więc klasa WWW Unity jest pierwszym krokiem do zrobienia tego, ponieważ pozwala na wysyłanie żądań przez serwer http do serwera. Gdy odwiedzasz witrynę, którą właśnie robisz, wpisujesz adres URL do przeglądarki i wysyłasz żądanie http do serwera pod tym adresem.Serwer WWW zwraca kod HTML, którego przeglądarka używa do renderowania strony internetowej.

Krok 2: Pozwala utworzyć żądanie

Aby to zilustrować, pozwól nam złożyć wniosek do www.unity.com.

Rozpocznij nowy projekt jedności, utwórz skrypt C # o nazwie test i przeciągnij go do głównego aparatu.

Najpierw utwórz moduł wyliczający o nazwie żądanie, chcemy pracować z obiektami www wewnątrz linii, abyśmy nie zatrzymywali całego programu podczas przetwarzania. Następnie upewnij się, że ten kod uruchomi się, uruchamiając linię poleceń w funkcji start.

Wewnątrz coroutine pozwala utworzyć ciąg i zdefiniować go jako adres internetowy Unity.

Utwórz nowy obiekt www i podaj adres URL.

Wydajność zwraca www (tak, że nie będziemy kontynuować, dopóki operacja nie zostanie zakończona).

Utwórz ciąg o nazwie html i zdefiniuj go jako www.text, który jest ciągiem tekstu zwróconym z naszego żądania.

Kiedy to wydrukujemy, zobaczymy, że jest to html witryny unity.com

Krok 3: Wstęp do skrobania w sieci.

Teraz, nie wchodząc jeszcze w api, moglibyśmy przeanalizować te dane, aby wyciągnąć użyteczne informacje z witryn internetowych, których można użyć w naszej aplikacji. Nazywa się to skrobaniem w sieci. Powiedzmy na przykład, że chcemy wyodrębnić tytuł strony internetowej.

Wiemy ze standardowego html, że tytuł będzie między dwoma tagami tytułu.

Tytuł początkowy i tag tytułu końcowego: To jest tytuł strony internetowej

Po prostu wiem, że istnieją lepsze i czystsze sposoby, aby to zrobić, ale ze względu na czas wystarczy manipulować sznurkiem, aby wyciągnąć to, co chcemy.

W tej chwili mamy ciąg oddzielony pojedynczymi znakami. Więc kiedy drukujemy html 2, otrzymujemy trzeci znak (ponieważ indeksy zaczynają się od 0). Zamiast tego utwórz listę łańcuchów i podziel ją według znaku nowej linii. Teraz, gdy drukujemy htmlList 2, otrzymujemy trzeci wiersz tekstu.

Aby znaleźć linię zawierającą „tytuł”, możemy przejść przez każdy wiersz tekstu za pomocą pętli for.

Możemy znaleźć żądaną linię, sprawdzając, czy bieżąca linia zawiera tytuł słowa. Po znalezieniu tej linii możemy zastąpić pierwszy tag tytułu pustym łańcuchem, a następnie zastąpić drugi tag tytułu pustym łańcuchem. Pozwala wydrukować wynik, a następnie możemy przerwać tutaj, ponieważ nie musimy iść dalej. Wynik będzie teraz zawierał tytuł strony internetowej. Jeśli chcesz lepszej, ale nieco bardziej skomplikowanej metody osiągnięcia tego celu, spójrz na wyrażenia regularne lub REGEX.

Krok 4: API

Teraz spójrzmy na faktyczne żądanie API. Użyjemy interfejsu API wyszukiwarki niestandardowej Google. Najpierw potrzebujemy unikalnego klucza. Przeszukaj klucz api niestandardowego wyszukiwania Google i przejdź do pierwszego linku. Utwórz konto, jeśli jeszcze go nie masz i utwórz aplikację. Włącz interfejs API wyszukiwania niestandardowego dla tej aplikacji i skopiuj klucz do schowka.

Możesz zrobić 100 wyszukiwań dziennie za pomocą tego konkretnego interfejsu API.

Krok 5: Cześć, jestem JSON, miło cię poznać.

Wróć do Unity i zacznij od usunięcia wszystkiego, aż ustawimy nasz ciąg html. Pozwala zmienić nazwę tego „json”, ponieważ będziemy odbierać obiekt JSON. Teraz wystarczy skopiować nasz klucz API w dowolnym miejscu.

Wróć do google i kliknij „Using Rest”. Jeśli się rozejrzysz, okaże się, że api wymaga 3 parametrów, klucza api, niestandardowego identyfikatora wyszukiwarki i zapytania wyszukiwania. Skopiuj przykładowe żądanie i przejdź do ciągu URL w Unity.

Przenieś klucz licencyjny do odpowiedniej lokalizacji w adresie URL, a ponieważ nie będziemy tworzyć niestandardowej wyszukiwarki, zmień parametr cx na cref i ustaw go jako pusty ciąg.

Utwórz prywatną zmienną łańcuchową o nazwie query i ustaw ją na równi z tym, co chcesz wyszukać. Wróć do adresu URL i usuń wszystko po „q =” i połącz ciąg z zmienną zapytania, którą właśnie zdefiniowaliśmy. Teraz, gdy wydrukujemy odpowiedź, wszystkie wyniki google zostaną uporządkowane w ładne obiekty JSON.

Krok 6: Co teraz?

Świetnie, teraz mamy więcej bełkotu.

Cóż, możesz wyodrębnić to, co chcesz, używając biblioteki o nazwie LitJSON.

github.com/lbv/litjson

To pozwoliłoby nam starannie poradzić sobie ze wszystkimi tymi informacjami.

Aby uzyskać szybką poprawkę, możesz po prostu przeanalizować ją tak, jak w przypadku HTML z ostatniego przykładu.

Teraz, aby wyświetlić to w widoku gry, kliknij prawym przyciskiem myszy w hierarchii Unity i utwórz nowy tekst interfejsu.

Dodaj tę dyrektywę używając do swojego skryptu: „UnityEngine.UI;”

Teraz wystarczy utworzyć odniesienie do tekstu interfejsu użytkownika, definiując publiczny obiekt GameObject yourTextObject;

Przeciągnij tekst do pustego gniazda, które właśnie zostało utworzone w inspektorze.

Teraz możesz ustawić to tak:

yourTextObject.GetComponent().text = „Cokolwiek chcesz”.

Krok 7: Zróbmy kolejny krok …

Zrobiłem ten samouczek, ponieważ wiele się nauczyłem, próbując znaleźć obejście problemu z brakiem interfejsu API do wyszukiwania darmowych obrazów do tyłu. Google pozwala na wyszukiwanie obrazów w odwrotnej kolejności w przeglądarce, ale nie poprzez http, jak wszystkie inne usługi.

Byłem zdeterminowany, żeby to zadziałało, więc oto co zrobiłem:

Okazuje się, że wynik żądania do wyszukiwania w odwrotnym obrazie google jest przekierowywany wielokrotnie i wreszcie jest renderowany jako HTML za pomocą javascript. Tak więc uzyskanie danych, których potrzebujemy, nie jest możliwe tylko w Unity. Jedynym sposobem, w jaki mogłem pomyśleć, aby go uzyskać, było stworzenie własnego rodzaju api w php. Mogę przekazać url obrazu, który chcę przeszukać z Unity do skryptu php, który hostowałem na serwerze. Skrypt php śledzi przekierowania z google za pomocą cURL i jest w stanie wyświetlić html javascript za pomocą Node.js, który jest środowiskiem javascript po stronie serwera.

Jeśli chcesz dowiedzieć się więcej na ten temat, sprawdź wideo w intro.

Dzięki za szukanie i daj mi znać, jeśli masz jakieś pytania!