FlexTech Blog - let's Flex

joystick z kamery

Autor: Paweł Cichoń


Jakiś czas temu zostałem zapytany, czy można podłączyć się z poziomu Flash Playera do joysticka, co więcej wykorzystać wbudowane w te urządzenia Dual Shocki, tak, aby powiadamiać gracza wibracjami, że nastąpiła kolizja, czy jakieś trzęsienie podczas rozgrywki itd… Niestety tak, jak w przypadku bardzo ograniczanego dostępu do API systemu operacyjnego przykładowo z poziomu AIR’a, tak samo i w tu sprawa nie jest oczywista. Niemniej jednak można sobie radzić. Stąd bodajże rok temu wykorzystując NetConnection i ByteArray stworzyłem niedużą aplikację w Javie, która przy pomocy socketów oraz API jinput komunikowała się na wolnych portach z środowiskiem Flash Player’a na zasadzie klient – serwer, przesyłając informację na temat wychyleń joysticka, czy uruchamiając wibracje, wtedy, kiedy trzeba. Z pewnością rozwiązanie niezbyt eleganckie, ale innego wyjścia raczej nie ma, a przynajmniej nie znalazłem.

shot_1.jpg      shot_2.jpg

Niemniej jednak to, że pojawiają się pewne ograniczenia środowiska, czasami jest paradoksalnie pozytywem, ponieważ automatycznie zastanawiamy się jak maksymalnie szeroko wykorzystać wszystko to, co nam oferuje standardowo Flash Player. Otóż dostęp do mikrofonu (Microphone), czy kamery (Camera) z poziomu Flash’a, Flex’a, czy AIR’a jest banalnie prosty, a to daje duże pole do po popisu, aby próbować niestandardowych metod komunikacji między grą, a graczem i odwrotnie.

Poniżej załączam dwa przykłady jak można wykorzystać do tego celu choćby kamerę internetową.

Przykład 1. (wymagana kamera – tryb 160×120) Sterowanie samochodem za pomocą ruchów ciała, bądź ruchów ręką (palcem wskazującym, całą dłonią, itd…) – ta metoda bazuje na wykrywaniu zmian pomiędzy kolejnymi klatkami strumienia płynącego z naszej kamery. Należy pamiętać o tym, aby podczas testów tło na około nas było możliwie najbardziej jednolite i aby nie poruszało się dużo „obiektów” na raz.


Kod źródłowy można pobrać stąd. Do odpalenia niezbędne są biblioteki Papervision3D 2.0.

Przykład 2. (wymagana kamera – tryb 160×120) Ta metoda bazuje na wykrywaniu koloru przedmiotu trzymanego w ręku i śledzeniu go. Aby ją przetestować, wybierzmy jakieś w miarę jednolite tło, które nie zawiera koloru czerwonego – to ważne. Chwyćmy w rękę jakiś nieduży czerwony klocek, czy inny czerwony przedmiot, a czerwona kula będzie podążała za naszym wskaźnikiem.


Kod źródłowy można pobrać stąd.

Nie ukrywam, że choćby sterowanie konsolą WII może być niezłą inspiracją, aby szukać niestandardowych metod UI dla naszych aplikacji – możliwości wydają się nieograniczane, a joystickiem stają się przedmioty, które trzymamy w ręku, czy nasze dłonie, palce, głowa.

Co do mikrofonu może on również być inspiracją, bo dlaczego nie sterować grą przykładowo przy pomocy detekcji natężenia dźwięku (z pomocą przychodzi tu activityLevel itd…), zawsze można poeksperymentować.


Tagi: ,,,,

6 komentarzy

  1. Aha, zapomniałem dodać, że w tej chwili tryb kamery jest ustawiony na 160×120 – 15fps (setMode(160,120,15,true)) , czyli defaultowy – większość kamer powinno być z tym trybem kompatybilne, ale nie ręczę … jeżeli nie będzie takiego trybu, nie będzie działać jak należy.

  2. Efekt extra, szkoda tylko, że działa jedynie na Windzie – flash player nie widzi ruchów ani na mac’u and pod linuxem.
    Ktoś potrafi wytłumaczyć, dlaczego tylko Windowsowe kamery działają z FP?
    Pozdrawiam serdecznie

  3. @Robert
    To dosyc stary link, ale niestety niektóre kamery mają problem z kompatybilnością z FP – http://www.adobe.com/go/tn_16453 . Ja osobiście nie miałem jeszcze problemu z kamerą pod MAC’iem …

  4. U mnie na mac’u działa bez zarzutu – fajna zabawka:) Brawo Paweł!

    Robert: Zobacz w ustawieniach czy masz wybraną dobrą kamerę;)

  5. U mnie na MAC’u działa.

    Tez troche eksperymentowałem z kamerą i mikrofonem.
    Małe demko podstawowego połączenia z mikrofonem http://blog.kurak.net/demos/microphone_1/ (im głośniej tym sie szybciej bedzie kręcił, ewentualnie mozna dmuchać w mikrofon ;)

  6. I guess that to receive the personal loans from banks you must have a firm reason. Nevertheless, once I’ve got a car loan, just because I was willing to buy a building.

Skomentuj “joystick z kamery”

Wyszukaj w postach

Bloguje
  Paweł Cichoń

Trzeba kliknąć

Już wychodzisz? Nie zapomnij kliknąć tych linków. Przyda się!


Spotlight

Prezentujemy sylwetki tzw. klasyków, którzy mają niesamowitą wiedzę oraz robią klasyczną robotę.


Dobra książka

AdvancED Flex 3