Einfaches Head Tracking?

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Einfaches Head Tracking?

Beitrag von Krishty »

Hi,

Kann mir jemand Empfehlungen geben, wie man möglichst einfach Head Tracking in seine Anwendung einbinden kann – also, welche Hardware und welche API? Was ich so weit herausgefunden habe:

Die Wiimote ist quasi dafür geschaffen und verbraucht keine Systemressourcen (weil die Hardware alles erledigt). Allerdings soll das Protokoll nicht gerade trivial sein: U.A. soll man den BlueTooth-Stack des Systems von Hand steuern müssen. Öh wie wär’s mit Nein?

TrackIR von NaturalPoint ist der de-facto-Standard im Simulationsbereich, und wird von vielen erfolgreichen Titeln unterstützt. Ich habe mir gestern eines gekauft, aber: Genau so einfach wie es für den User ist, so katastrophal ist es für Entwickler. Für kommerziellen Betrieb muss man eine Lizenz erwerben (was ja machbar ist), aber dann muss man eine viel zu fette DLL mitausliefern (Unterstützung für Motion Capture mit >400 Bones, brauche ich!!1) und es scheint zu den Geschäftspraktiken zu gehören, dass die Unterstützung anderer Hardware vertraglich eingeschränkt wird. Da das Gerät nur verschlüsselt mit dem Treiber kommuniziert und Reverse Engineering totgeklagt wird, will ich mit denen auch nichts zu tun haben (hätte ich das vor dem Kauf gewusst, hätte ich mir das Geld auch gespart).

FreeTrack war bis ungefähr 2010 eine GPL-offene Alternative, die neben jedem denkbaren selbstgebastelten System auch TrackIR-Hardware ansteuern konnte. Damit wäre es für mich perfekt. Dummerweise mussten sie die TrackIR-Hardware auf Druck von NaturalPoint entfernen; jetzt ist es für mich weder besser noch schlechter als alles andere.

FaceTrackNoIR ist ein neuer (und scheinbar offener?) Ansatz, bei dem keine spezielle Hardware zum Einsatz kommt, sondern eine normale Webcam genutzt wird. Das macht wahrscheinlich vieles einfacher, aber bedeutet wohl auch hohe CPU-Last und, sofern man keine 120-Hz-High-End-Webcam besitzt, trägere Reaktion oder geringere Genauigkeit. Für mich als Einsteiger sieht das nach der Zukunft aus, aber vielleicht sehen Experten das anders.

Meinungen?

Rant nebenbei: Da dedizierte Hardware dafür verkauft wird, dachte ich, dass man längst bloß den Sensor auf den Bildschirm setzt und in den USB-Port steckt; man das fertige XYZ aus dem HID-Report ausliest; und die Werte dann eben schnell in die Anwendung steckt. Scheiße anner Latte. Alles Steinzeit. Alles Grabenkämpfe. Kein Konzept. Es gibt hunderte Websites, die zeigen, wie man sich mit Klebeband und Leuchtdioden selber Head-Tracker für die Webcam baut, und ich vermute fast, dass man damit noch besser wegkommt als mit allen Produkten und APIs da draußen. Hilft meinem Publikum leider nicht.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Sternmull
Establishment
Beiträge: 264
Registriert: 27.04.2007, 00:30
Echter Name: Til
Wohnort: Dresden

Re: Einfaches Head Tracking?

Beitrag von Sternmull »

Mich würe mal interessieren was denn deine Anwendung ist.

Scheint so als hättest du dich bei deiner Recherche auf Out-of-the-box-Lösungen beschränkt. Reicht deine Zeit und Energie vielleicht aus um entwas tiefer anzusetzen und mit sochlen Tools wie OpenCV oder so selber was zu basteln? Ich könnte mir vorstellen das man da evtl. schon was hinbekommen würde um das Tracking per Kamerabildern zu implementieren. Du hast auch deine Bedenken bezüglich der CPU-Belastung angesprochen. Wie kritisch ist das denn? Einem aktuellen PC würde ich ein bischen Bildverarbeitung so nebenbei ja schon zutrauen.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Einfaches Head Tracking?

Beitrag von Krishty »

Sternmull hat geschrieben:Mich würe mal interessieren was denn deine Anwendung ist.
Sagen wir, ein 3D-Weltraum-Shooter. Damit man nicht die Hände vom Gamepad / Joystick nehmen muss, und sich schnell und genau frei umgucken kann, möchte ich wissen, wie der Anwender seinen Kopf dreht.
Sternmull hat geschrieben:Scheint so als hättest du dich bei deiner Recherche auf Out-of-the-box-Lösungen beschränkt. Reicht deine Zeit und Energie vielleicht aus um entwas tiefer anzusetzen und mit sochlen Tools wie OpenCV oder so selber was zu basteln?
Naja; solche Systeme sind nicht trivial zu implementieren, sondern setzen schon eine gewisse Expertise voraus. Bis das Ganze stabil läuft, würde ich wohl ein ganzes Jahr brauchen. Die Foren der out-of-the-box-Lösungen verraten außerdem ein ständiges „Mit Kamera XYZ funktioniert es nicht!“, und ich habe keine Lust, meine eigene Lösung die nächsten Jahre über kontinuierlich wegen irgendwelcher schlechten Webcam-Treiber zu debuggen.
Sternmull hat geschrieben:Ich könnte mir vorstellen das man da evtl. schon was hinbekommen würde um das Tracking per Kamerabildern zu implementieren. Du hast auch deine Bedenken bezüglich der CPU-Belastung angesprochen. Wie kritisch ist das denn? Einem aktuellen PC würde ich ein bischen Bildverarbeitung so nebenbei ja schon zutrauen.
Herkömmliches Tracking würde kaum ins Gewicht fallen – da wird das Infrarotbild der Kamera als schwarz-weiß-Signal aufgefangen, und ein Thresholding durchgeführt bis nur die Infrarot-Marker übrig bleiben. Bei der Gesichtserkennung, die TrackIR macht, wird es schon schwieriger. Im Sinne von: 120 Mal pro Sekunde die Kopforientierung aus einem mittelhoch aufgelösten Kamerabild zurückrechnen, das könnte locker einen Kern auslasten, wenn man nicht sehr genau weiß, wie sowas implementiert werden muss. Und es steht völlig im Raum, ob die Genauigkeit am Ende ausreicht um es nicht völlig verwackeln zu lassen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Sternmull
Establishment
Beiträge: 264
Registriert: 27.04.2007, 00:30
Echter Name: Til
Wohnort: Dresden

Re: Einfaches Head Tracking?

Beitrag von Sternmull »

Da du nichts von einer 3D-Brille geschrieben hast, nehme ich an das es mit einem handelsüblichen Monitor gespielt wird? Ich kann mir grad nicht vorstellen was es mir bringt wenn sich die Ansicht ändert wenn ich meinen Kopf vom Monitor weg drehe :-)
Bei den Monitoren und den Abständen die ich zum Kopf gewohnt bin darf ich meinen Kopf nicht weit drehen wenn ich das Bild noch geradeaus vor mir haben will.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Einfaches Head Tracking?

Beitrag von Krishty »

Damit ganz klar ist, wovon ich rede:

Head Tracking in ArmA 2:
[youtube]9wXx3vMy_AQ[/youtube]
Die erste Minute zeigt gut das Konzept; und bei 4:25 siehst du, wie praktisch das beim Fliegen ist: du kannst genauer als mit Tasten steuern wo du hinschaust, und du hast eine Hand mehr für Flugzeugsteuerung frei. Noch dazu ist äußerst intuitiv und fühlt sich recht natürlich an.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten