2011-09-18 10 views
5

Od kilku miesięcy pracuję nad stworzeniem interfejsu multitouch opartego na technologii Kinect dla różnych syntezatorów muzyki programowej.Ogólne uwagi dotyczące interfejsu NUI/touch

Ogólna strategia, którą wymyśliłem, to tworzenie obiektów, programowo lub (jeśli to możliwe) algorytmicznie reprezentujących różne kontrolki miękkiego syntezatora. Te powinny mieć;

  • pozycja X pozycji
  • Y
  • Wzrost
  • Szerokość
  • MIDI kanał wyjściowy
  • sekwencji MIDI skalujący (konwersja xy coords do wartości MIDI)

2 strategie I Uważa się, że kreacja agorytmetyczna to opis XML i jakoś odciąganie rzeczy od samego początku e screen (tzn. dany program, znajdź xycoordy wszystkich kontrolek). Nie mam pojęcia, jak zrobić ten drugi, dlatego wyrażam go w tak specyficznym języku technicznym;). Mogłem zrobić rozwiązanie pośrednie, na przykład za pomocą kliknięć myszką w rogach kontrolek, aby wygenerować plik xml. Inną rzeczą, którą mogłem zrobić, którą często widziałem w aplikacjach flashowych, jest umieszczenie rozmiaru ekranu w zmiennej i użycie matematyki do zbudowania wszystkich obiektów interfejsu pod względem rozmiaru ekranu. Zauważ, że nie jest absolutnie konieczne, aby obiekty miały taki sam rozmiar jak elementy sterujące na ekranie lub aby reprezentowały wszystkie obiekty wyświetlane na ekranie (niektóre są tylko wskaźnikami, a nie interaktywnymi kontrolkami)

Inne uwarunkowania;

Biorąc pod uwagę (na razie) dwa zestawy współrzędnych X/Y jako wejście (lewe i prawe dłonie), jaki jest najlepszy sposób ich użycia? Moim pierwszym instynktem było/było stworzenie pewnego rodzaju testu skupienia, w którym jeśli współrzędne X/Y wchodzą w granice obiektu interfejsu, to obiekt staje się aktywny, a następnie staje się nieaktywny, jeśli przez jakiś czas wypada poza pewne inne mniejsze granice. Tanim rozwiązaniem okazało się użycie lewej ręki jako wskaźnika/selektora, a prawej jako kontrolera, ale wydaje się, że mogę zrobić więcej. Mam kilka rozwiązań gestów (ukrytych łańcuchów Markowa), które mogłem zepsuć. Nie, żeby były łatwe do wykonania, ale to coś, co sam mogłem zobaczyć, biorąc pod uwagę wystarczającą motywację.

więc podsumować, problem

  • stanowią interfejs (konieczny, ponieważ interfejs domyślny zawsze oczekuje wejście mysz)
  • wybrać regulację
  • manipulować za pomocą dwóch zestawów x/y coords (kontroler rotacyjny/ciągły) lub, w przypadku przełączników, najlepiej użyć gestu, aby przełączyć go bez ustawiania ostrości.

Wszelkie komentarze, szczególnie od osób, które pracowały/pracują w multitouch io/NUI, są bardzo doceniane. Odsyłacze do istniejących projektów i/lub niektórych dobrych materiałów do czytania (książek, stron itp.) Będą bardzo pomocne.

+0

Meta-dyskusja na temat tego pytania się dzieje/stało się: http://meta.stackexchange.com/q/106720/146495 –

Odpowiedz

2

Woah mnóstwo rzeczy tutaj. Pracowałem nad wieloma rzeczami NUI podczas mojej pracy w Microsoft, więc zobaczmy, co możemy zrobić ...

Najpierw jednak muszę usunąć tę ciekawość: Mówisz "Multitouch oparty na Kinect". To po prostu złe. Kinect z natury nie ma nic wspólnego z dotykiem (dlatego masz wyzwanie "wybierz kontrolę").Typy interfejsu użytkownika potrzebne do dotykania, śledzenia ciała i myszy są zupełnie inne. Na przykład w interfejsie dotykowym musisz być bardzo ostrożny przy zmianie rozmiaru na podstawie rozmiaru/rozdzielczości/DPI ekranu ... niezależnie od ekranu, palce są zawsze tej samej wielkości fizycznej i ludzie mają ten sam stopień dokładności fizycznej, więc chcesz przyciski i podobne elementy sterujące zawsze mają mniej więcej taką samą wielkość fizyczną. Badania wykazały, że 3/4 cala jest najlepszym miejscem na przyciski dotykowe. To nie jest tak bardzo martwić się o Kinect, ponieważ nie dotykasz bezpośrednio niczego - dokładność jest określana nie przez rozmiar palca, ale przez dokładność czujnika i zdolność użytkownika do precyzyjnego kontrolowania trudnych, wirtualnych kursorów &.

Jeśli spędzasz czas grając w gry Kinect, szybko staje się jasne, że istnieją 4 paradygmaty interakcji. 1) Polecenia oparte na ułożeniu. Użytkownik uderza i trzyma pozę, aby wywołać jakąś aplikację lub polecenie (zazwyczaj podnosząc menu). 2) Przyciski Hover. Użytkownik przesuwa wirtualny kursor nad przyciskiem i zatrzymuje go przez pewien okres czasu, aby wybrać przycisk. 3) Nawigacja i wybór z przesunięciem palca. Użytkownik macha rękami w jednym kierunku, aby przewinąć i wyświetlić listę oraz wybrać inny kierunek z listy: 4) Polecenia głosowe. Użytkownik po prostu komunikuje.

Istnieją inne pomysły podobne do myszy, które zostały wypróbowane przez hobbystów (nie widziałem ich w rzeczywistej grze), ale szczerze mówiąc, ssają: 1) za pomocą jednej ręki dla kursora i innej strony, aby "kliknąć" tam, gdzie znajduje się kursor lub 2) za pomocą współrzędnej Z dłoni, aby określić, czy "kliknąć", aby uzyskać "kliknięcie"

Nie jest dla mnie jasne, czy pytasz o to, jak sprawić, aby niektóre widżety myszy działały z Kinect. Jeśli tak, w internecie są pewne projekty, które pokażą ci, jak sterować myszą za pomocą wejścia Kinect, ale to kiepskie. To może brzmieć super fajnie, ale tak naprawdę wcale nie wykorzystujesz tego, co robi najlepiej urządzenie.

Gdybym budował syntezator muzyki, skupiłbym się na podejściu nr 3 - przesuwaniu. Coś jak Dance Central. Po lewej stronie ekranu wyświetl listę kontrolerów MIDI z niewielkim wizualnym wskaźnikiem ich statusu. Pozwól użytkownikowi przesunąć lewą rękę, aby przewinąć i wybrać kontroler z tej listy. Po prawej stronie ekranu pokaż, w jaki sposób śledzisz prawą rękę użytkowników w obrębie jakiejś płaszczyzny przed ich ciałem. Teraz pozwalasz im używać obu rąk jednocześnie, dając natychmiastową wizualną informację o tym, jak interpretuje się każdą rękę, i nie wymagając od nich dokładności.

ps ... Chciałabym także podać okrzyk do nadciągającej książki NUI Josh Blake'a. To dobre rzeczy. Jeśli naprawdę chcesz opanować ten obszar, zamów kolejną kopię :) http://www.manning.com/blake/

+0

Robert - dzięki banda za twoją odpowiedź, dobrze widzieć na pokładzie byłego gościa Microsoftu. Po pierwsze, re kinect vs multitouch. Zacząłem od szukania różnych rozwiązań śledzenia blobów na jakiś czas, i poddałem się, ponieważ kiedy warunki oświetlenia zmieniły się o najmniejszy możliwy margines, reakcja systemu spowolniła indeksowanie. Włączyłem kinect, ponieważ wewnętrznie obsługuje śledzenie blob i wyprowadza jeden lub więcej współrzędnych kursora x/y. Zauważyłem, że problem rozdzielczości, o którym wspomniałeś (jeśli mówimy o tym samym) nadal uzyskuje dla kinect, ponieważ rozdzielczości ekranu i rozmiary interfejsu są różne. – jamesson

+0

Re mysz, oprogramowanie pośredniczące, którego używam (primesense nite), w zasadzie wyprowadza 2 kursory w trybie ręcznym, a także kliknięcie oparte na gestach ("popychanie" ręki w kierunku ekranu). Mogę użyć wszystkich stawów (to daje 10 lub więcej, kolana, biodra, itp.), Jeśli tak sobie wybiorę, ale jeszcze tego nie odczuwałem. Re your swipe, to jest najlepsze, co mogę wymyślić na własną rękę. Mam nadzieję, że inni ludzie mają lepsze pomysły. – jamesson

+0

Oto przykład tego, co uważam za "lepsze" - http://anythinghonest.com/amos/. W intuicyjny sposób wykorzystuje wszystkie dostępne funkcje nowej technologii (w tym przypadku iPad), zapewniając jednocześnie głęboką kontrolę. Mogę ukraść części tego dla mojej rzeczy.Jeszcze raz dziękuję za pomoc. Joe – jamesson

Powiązane problemy