TrackIR Support Weiterentwicklung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      TrackIR Support Weiterentwicklung

      Moin zusammen

      ich habe mir gerade mein TrackIR-Support Skript (das ja am Ende nur eine simple joysticksteuerung für die indoor-Kamera ist) soweit umgeschrieben, dass es für die Kombi freePie + vJoy funktioniert.

      Das klappt soweit ganz hervorragend, sogar in der Kombi openTrack(htTracker) über freeTrack ins freePie, von da in einen vJoy-Stick und den per TrackIR-support lua in den LS.

      Funktioniert, aber ihr seht, dass sowas keine Lösung ist, die man mal eben auf MH stellen kann...

      Besteht bei euch Interesse, das Ganze auf eine Basis zu stellen, mit man eine vernünftig konfigurierbare Geschichte daraus macht? Mir würde es dabei um zwei Dinge gehen:
      a) Ein solides Konzept + Betatesting
      b) Unterstützung beim Support. Mir fehlt derzeit schon für "normale" Mods die Zeit für den Support, und mit sowas würde ich die sprichwörtliche Büchse der Pandora aufmachen.

      Bin gespannt auf Feedback
      Hallo Upsidedown,

      toll das Du dieses Thema aufgemacht hast!
      Also ich wäre dabei und würde, soweit es mir möglich ist, auch beim Support helfen.

      Werde auch noch versuchen mich ein bischen in Lua einzulesen, da das bisherige eigentlich hauptsächlich durch austesten zustande kam.
      Ist aber als LUA Laie glaube ich ein gehöriges Stückchen Arbeit.

      Auch die Kombi mit FreePie + VJoy ist klasse, dann wäre der Windows Testmodus passe'.

      Bin natürlich auch sehr gerne beim beta Testen dabei, schliesslich muss sich die Investition in TrackIR auch lohnen!
      Leider geht das meistens nur abends, zwecks Familie und Arbeit.

      Ich hoffe auch das sich noch einige hier melden um mitzumachen!
      Umso mehr, umso besser!

      Gruß PorscheJunior

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Porsche Junior ()

      Freut mich, dass das hier nicht ins Leere geht :)

      Das Schöne daran über freePie zu gehen ist, dass man dort über sehr viele Wege ankommen kann. Es kann, es muss aber nicht TrackIR sein.

      Das nicht Schöne an freePie ist, dass viele User damit wahrscheinlich überfordert sein werden.. "Ihh, Python" bzw "progammieren kann ich nicht" oder "und dann noch in der lua rumfummeln müssen",,,


      Deswegen hatte ich an folgendes Konzept gedacht:
      a) Eine kleine xml für den freePie-Support Mod (werd ich dann wohl umbenennen), in der man einstellt, welche der 6DOF man nutzen will und auf welchen vJoy-Achsen und bei mehr als einem vJoy-Gerät die zu erwarten sind
      b) Die Benennung in der xml sollte möglichst analog zur freePie-Syntax sein

      Damit muss man als User nicht mehr in der lua rumbasteln. Das hat beim Konfigurieren auch den riesigen Vorteil, dass man nicht ständig LS neu starten muss, sondern nur in freePie was anpasst und dann da das Skript schnell neu startet.

      Dem Mod würde ich dann noch Vorlagen als .py files für die Anbindung von freeTrack und TrackIR beilegen.

      Und als nettes kleines Addon noch den Hinweis, wie man aus dem LS unerreichbare Achsen wie z.B. die Kupplung vom G27 mit einer Zeile in so einem .py-Skript für freePie auch gleich noch ins Spiel bekommt. Das hat dann aber mit der .lua nichts mehr zu tun.

      Kommentare/Vorschläge/Ergänzungen?
      Wen ich das jetzt richtig verstanden habe, heißt das:

      Man würde lediglich Deinen Mod in den Modordner packen, vJoy instalieren und dann über den Code von FreePie den Rest erledigen bzw. über den FreePie Code auswählen können ob man mit TrackIR oder einem anderen HeadTracker arbeiten will.

      Das wäre genial!

      Wäre es machbar, das auch wenn TrackIR aktiv ist, sich die Ansicht auch zusätzlich noch mit der Maus bewegen lässt bzw. das man die Kopfbewegung inGame ausschalten kann und dann wieder über Maus steuert.
      Wenn man beispielsweise dann mal abgelenkt werden würde (Kopfbewegung) könnte man weiter mit der Maus fahren und paralell die andere Quatschtätigkeit :D auch weiter verfolgen.

      Bei meinen Versuchen hatte ich mal eine Konstellation, in der ich gleichzeitig den Kopf nach links und nach vorne verschieben konnte.
      Die Vor/Zurückachse ist ja eigentlich nach Deinen Ausführungen nicht so einfach belegbar oder könnte das wie in der Aussenansicht mit dem Zoomen funktionieren, nur auf die Kabine begrenzt?

      Kennst Du eventuell ein gutes Tutorial, das einem Laien die LUA Programierung ein bisschen näher bringt?
      Hab jetzt schon einiges gelesen, könnte in meinem Schädel vielleicht doch noch klick machen.
      Da muss ich ein wenig weiter ausholen:

      Das Problem ist, dass LS nur die olle XInput-Bibliothek und kein komplettes Direct-Input verwendet. Da kommen alle diese tollen Einschränkungen her:
      * Nur 5 Achsen pro Joystick nutzbar (statt acht)
      * Nur maximal 4 Joysticks (sobald mehr dranhängen sieht er gar keine mehr)
      * Nur Maximal 20 Buttons pro Joystick
      Macht total Spass...

      Jetzt kommt der Haken: Für volles 6DOF brauche ich folglich 2 vJoy Geräte. Die 6 Achsen bekomme ich zwar auf einem vJoy unter, aber nicht so, dass ich sie unter LS auch alle sehen kann.

      Prinzipiell kein Problem, mit vJoy kann ich bis zu 15 virtuelle Joysticks installieren und per freePie sauber ansteuern. Aber: Damit hab ich schonmal zwei von meinen maximal vier analogen Eingangsgeräten verbraten. Wenn ich mir dann angucke was auf meinem Zweitschreibtisch verschraubt ist: 1xG27 und 2xLeo Bodnar Boards mit Eigenbauten: => Aua...

      Die gute Nachricht ist: Auch wenn ich nur einem vJoy verwende kann ich mir mit freePie natürlich aussuchen, welchen DOF ich unter den Tisch fallen lasse. Mit der alten TIR2Joy-Lösung ging das nicht. Die hat zwar praktisch das gleiche gemacht, nur konnte man das Achsen-Mapping nicht einstellen.

      Das Ziel soll aber schon sein, dass man *auch* die 6DOF-Variante machen *kann*. Ohne in der lua rumfummeln zu müssen. Um ein bischen xml und Python wird man aber nicht drumherumkommen.

      Deswegen auch die Überlegung ein paar Presets beizulegen.
      die Problematik mit den max 4 Game Controller hatte ich am Anfang mit Trackir und PPJoy bereits.


      Ich bin ehrlich und beruflich in einer anderen Branche unterwegs. Es fällt ein wenig schwer euch zu folgen. Letztendlich wird wohl jeder ein paar Daten in einer XML etc ändern können - dennoch kann ich mir momentan noch nicht genau vorstellen wie die Umsetzung erfolgt.

      PPJoy und tir2joy war einfach und nachvollziehbar.


      Vjoy und freepie muss ich erstmal googln.


      Mein Wunsch z.b. wäre das "nach vorne schauen " nutzen zu können. Und wenn man eine DOF Achse dafür wegfallen muss, ist das halt so.


      Auf geht's :)
      @upsidedown:

      Also die Idee ist klasse!

      Natürlich gibt es damit etliche die sehr wahrscheinlich Probleme damit haben ein paar XML Zeilen in FreePie reinzukopieren.
      Ich denke mit ein klein wenig Hilfe und Deinen vorgefertigten Zeilen werden wir aber die meisten in die richtige Spur kriegen.
      Wir können ja noch ein paar kleine Bilder und Tutorials dazu bauen.

      Für ganz schwierige Fälle gibts ja noch TeamViewer.

      Vjoy und FreePie hatte ich schon auf meinem PC drauf, habs aber momentan wieder gelöscht da Dein Mod ja soweit funktioniert.
      Hab mich deshalb auch nicht weiter damit befasst wie die XML's eingesetzt werden.
      Werd's sofort wieder installieren wenn Du eine Variante davon parat hast!

      @Beckdorfer-Jung:

      Bin ebenso beruflich einige Kilometer davon entfernt (Bagger!),
      macht aber Spass sich mit der ganzen Sache zu beschäftigen.

      Man könnte z.B. die Roll Funktion opfern.

      Als Controller hab ich normalerweise TrackIR und das Saitek Bundle, somit da mal 3 Controller.

      Gehören dazu auch Maus und Tastatur? Normalerweise doch nicht. Diese werden ja ingame separat belegt.
      Dann hätte ich ja ansonsten noch einen frei!

      Testmodus aktiviert :thumbsup:
      Benutzer-Avatarbild

      Porsche Junior schrieb:


      @Beckdorfer-Jung:

      Bin ebenso beruflich einige Kilometer davon entfernt (Bagger!),
      macht aber Spass sich mit der ganzen Sache zu beschäftigen.

      Man könnte z.B. die Roll Funktion opfern.

      Als Controller hab ich normalerweise TrackIR und das Saitek Bundle, somit da mal 3 Controller.

      Gehören dazu auch Maus und Tastatur? Normalerweise doch nicht. Diese werden ja ingame separat belegt.
      Dann hätte ich ja ansonsten noch einen frei!

      Testmodus aktiviert :thumbsup:
      - z.B die "Roll-Bewegung" wäre zu verschmerzen. .

      - soweit ich das überblicke erfasst der LS Controller nur wenn sie als Game Controller registriert sind!?
      Ich mach einfach mal einen kurzen Rundumschlag:

      "PPJoy und tir2joy war einfach und nachvollziehbar."
      Genau das war der Grund, weswegen ich die Lösung auch für die LS-Community für zumutbar gehalten habe. Aber nach dem Update von Windows hatte ich auch keine Lust mehr auf PPJoy mit allem was da dran hängt..

      "Wäre es machbar, das auch wenn TrackIR aktiv ist, sich die Ansicht auch zusätzlich noch mit der Maus bewegen lässt bzw. das man die Kopfbewegung inGame ausschalten kann und dann wieder über Maus steuert." Das geht bereits mit dem alten Skript, die Taste dafür muss man sich nur selber belegen. Die Funktion bleibt natürlich drin.

      "oder könnte das wie in der Aussenansicht mit dem Zoomen funktionieren?"
      Dafür gibts ein driveControl-Modul, das das kann. Würde ich ungern koppeln, das kenn ich eigentlich nur von Flugsimulatoren (zum Zielen). Aber son Fendt ist keine A10C.. Ist aber kein weiter Weg, wenn man sich das selber basteln will.

      "Für ganz schwierige Fälle gibts ja noch TeamViewer."
      Und genau für sowas hab ich die Zeit nicht ;)

      "z.B die "Roll-Bewegung" wäre zu verschmerzen"
      das wäre auch mein favorisiertes (=default) Preset.

      Um die im Raum schwirrende Frage zu schließen: Nein, Maus+Tastatur zählen nicht zu den maximal vier Gamecontrollern.

      Ansonsten räum ich grad ein bischen auf. Die meiste Arbeit wird der olle xml-Kram machen fürchte ich...
      Benutzer-Avatarbild

      upsidedown schrieb:

      "Wäre es machbar, das auch wenn TrackIR aktiv ist, sich die Ansicht auch zusätzlich noch mit der Maus bewegen lässt bzw. das man die Kopfbewegung inGame ausschalten kann und dann wieder über Maus steuert." Das geht bereits mit dem alten Skript, die Taste dafür muss man sich nur selber belegen. Die Funktion bleibt natürlich drin.
      Entweder bin ich zu blind oder zu blöd. Find Nix. Aber egal, klappt ja auch so!

      Benutzer-Avatarbild

      upsidedown schrieb:

      "Für ganz schwierige Fälle gibts ja noch TeamViewer."Und genau für sowas hab ich die Zeit nicht ;)
      Das machen wir schon, ich denk das mit TV bleiben Einzelfälle.

      Vielleicht kommen ja noch ein paar Helferlein für den Support dazu wenn das ganze mal Richtung Zielgerade geht.
      Benutzer-Avatarbild

      Porsche Junior schrieb:

      Benutzer-Avatarbild

      upsidedown schrieb:

      "Wäre es machbar, das auch wenn TrackIR aktiv ist, sich die Ansicht auch zusätzlich noch mit der Maus bewegen lässt bzw. das man die Kopfbewegung inGame ausschalten kann und dann wieder über Maus steuert." Das geht bereits mit dem alten Skript, die Taste dafür muss man sich nur selber belegen. Die Funktion bleibt natürlich drin.
      Entweder bin ich zu blind oder zu blöd. Find Nix. Aber egal, klappt ja auch so!
      im tir Support Mod h habe ich nun auch nichts finden können, ... ich nutze dafür die shortcuts von trackir
      Maussteuerung der Kamera funktioniert bei mir nur wenn ich den TrackIR Support Mod entferne/deaktiviere.
      Auch wenn ich die Steuerungseinstellungen zurücksetze ist es dasselbe.
      Mit pausiertem TrackIR kann ich die Kamera gar nicht bewegen, auch nicht mit der Tastatur.
      Bewegt sich nur ganz minimal. Ist, wie wenn etwas die Kamerabewegung behindert.
      Kein Plan was das ist.

      Und bei Dir geht die Kamerasteuerung per Maus bei pausiertem TrackIR?
      Dann ist die erste Beta-Version 2x raus :)

      Generell zum Konzept: Es gibt zwei Dateien, die immer zusammengehören. Ein Beispiel (5DOF ohne Roll auf einem vJoy) ist bereits beigelegt.

      Die freePieCam_config.xml gehört ins "Hauptverzeichnis" vom LS, da wo auch die log.txt liegt. (Wer nicht weiß wo die liegt: Finger weg von diesem Mod...)

      Hier stellt man ein, auf welchen vJoy-Kanälen welche Info ankommt. Die Bezeichner sind so gewählt, dass sie im .py-Skript (siehe unten) gut wiedererkennbar sind.

      XML-Quellcode: freePieCam_config.xml

      1. <?xml version="1.0" encoding="utf-8" standalone="no" ?>
      2. <freePieCam>
      3. <yaw> <!-- Kopf seitlich drehen -->
      4. <use>true</use> <!-- An-/Abschalten der Achse im headtracking. Bei false sind die weiteren Felder irrelevant-->
      5. <device>0</device> <!-- Nummer des vJoy-devices wie in freePie verwendet (beginnt bei 0) -->
      6. <axis>x</axis> <!-- Name der Achse des vJoy-devices wie in freePie verwendet (im LS lesbar: x,y,z,rz,slider) -->
      7. <sensitivity>1.0</sensitivity> <!-- Empfindlichkeit. Nur zur Grobjustierung! Im Zweifel bei 1.0 lassen und im freePie-Skript die Skalierung checken!-->
      8. </yaw>
      9. <pitch> <!-- Kopf hoch/runter -->
      10. <use>true</use>
      11. <device>0</device>
      12. <axis>y</axis>
      13. <sensitivity>1.0</sensitivity>
      14. </pitch>
      15. <roll> <!-- Kopf schieflegen -->
      16. <use>false</use>
      17. <device>0</device>
      18. <axis>x</axis>
      19. <sensitivity>1.0</sensitivity>
      20. </roll>
      21. <tx> <!-- Kopf links/rechts -->
      22. <use>true</use>
      23. <device>0</device>
      24. <axis>z</axis>
      25. <sensitivity>1.0</sensitivity>
      26. </tx>
      27. <ty> <!-- Kopf hoch/runter -->
      28. <use>true</use>
      29. <device>0</device>
      30. <axis>rz</axis>
      31. <sensitivity>1.0</sensitivity>
      32. </ty>
      33. <tz> <!-- Kopf vor/zurueck -->
      34. <use>true</use>
      35. <device>0</device>
      36. <axis>slider</axis>
      37. <sensitivity>1.0</sensitivity>
      38. </tz>
      39. </freePieCam>
      Alles anzeigen


      Dazu gehört ein .py-Skript, das in freePie geladen wird:

      Python-Quellcode: freePieCam_5DOF_1vJoy_noRoll.py

      1. if starting:
      2. dev = 0 # fill in your device number here (but make sure you do it -1. So if you have vJoy device #1 enter 0)
      3. max = vJoy[dev].axisMax
      4. if (max == 0):
      5. max = 16382
      6. min = 0
      7. mid = (max+min)/2
      8. yaw = mid
      9. pitch = mid
      10. roll = mid
      11. tx = mid
      12. ty = mid
      13. tz = mid
      14. smooth = 0.97 ##adjust as you like (0<=smooth<1). The closer to 1 the slower/smoother the movement.
      15. # here data from headTracker is loaded. In this example it is trackIR. freePie supports many more! If you use something else, make sure that scaling is ok (check with diagnostics functions below).
      16. # Hier werden die HeadTracker Daten geladen. In diesem Beispiel ist es trackIR, freePie unterstützt allerdings sehr viel mehr Geraete!. Bei Veraenderungen muss sichergestellt werden, dass die Skalierung stimmt! Dies kann mit den Diagnosefunktionen unten überprüft und off-Game eingestellt werden.
      17. yaw = mid - trackIR.yaw*mid/360.0
      18. pitch = mid + trackIR.pitch*mid/360.0
      19. roll = mid + trackIR.roll*mid/360.0
      20. tx = mid - trackIR.x*mid*0.01 #side movement
      21. ty = mid - trackIR.y*mid*0.01 #up/down movement
      22. tz = mid - trackIR.z*mid*0.01 #front/back movement
      23. # clamp values (nothing to edit here):
      24. # Werte begrenzen (hier gibts nichts einzustellen):
      25. if (yaw > max):
      26. yaw = max
      27. elif (yaw < 0):
      28. yaw = 0
      29. if (pitch > max):
      30. pitch = max
      31. elif (pitch < 0):
      32. pitch = 0
      33. if (roll > max):
      34. roll = max
      35. elif (roll < 0):
      36. roll = 0
      37. if (tx > max):
      38. tx = max
      39. elif (tx < 0):
      40. tx = 0
      41. if (ty > max):
      42. ty = max
      43. elif (ty < 0):
      44. ty = 0
      45. if (tz > max):
      46. tz = max
      47. elif (tz < 0):
      48. tz = 0
      49. #data handover to vJoy: make sure that device and axis mapping is the same as in your freePieCam_config.xml!
      50. #Datenuebergabe an vJoy: Hier muss sichergestellt werden, dass die Zuordnung von device und Achsen identisch zur freePieCam_config.xml ist!
      51. vJoy[dev].x = vJoy[dev].x*smooth + (1-smooth)*yaw
      52. vJoy[dev].y = vJoy[dev].y*smooth + (1-smooth)*pitch
      53. #vJoy[dev].z = vJoy[dev].z*smooth + (1-smooth)*roll
      54. vJoy[dev].z = vJoy[dev].z*smooth + (1-smooth)*tx
      55. vJoy[dev].rz = vJoy[dev].rz*smooth + (1-smooth)*ty
      56. vJoy[dev].slider = vJoy[dev].slider*smooth + (1-smooth)*tz
      57. # here you can place additional code, to make even more use of freePie
      58. # Hier koennen weitere Funktionen untergebracht werden, zB um ungenutzte Achsen/Buttons von Controllern auf vJoy umzuleiten etc.
      59. #tmp = joystick[1].sliders[1] #g27 kupplung
      60. #tmp = 1-(tmp + 1000)/2000.0 # range 0..1
      61. #vJoy[dev].x = tmp * max
      62. # for adjusting/troubleshooting you can uncomment fields here. Data will be shown in the "Watch"-Tab below. Comment stuff out (#) for normal use
      63. # Zum Testen/Fehlersuchen koennen diese Zeilen unten aktiviert werden (# entfernen). Dann werden die entsprechenden Daten im "Watch"-Tab unten angezeigt. Im Normalbetrieb am Besten auskommentieren (# am Anfang)
      64. diagnostics.watch(vJoy[dev].x)
      65. diagnostics.watch(vJoy[dev].y)
      66. diagnostics.watch(vJoy[dev].z)
      67. diagnostics.watch(vJoy[dev].rz)
      68. diagnostics.watch(vJoy[dev].slider)
      69. #diagnostics.watch(freeTrack.yaw)
      70. #diagnostics.watch(freeTrack.pitch)
      71. #diagnostics.watch(freeTrack.roll)
      72. #diagnostics.watch(freeTrack.x)
      73. #diagnostics.watch(freeTrack.y)
      74. #diagnostics.watch(freeTrack.z)
      75. diagnostics.watch(trackIR.yaw)
      76. diagnostics.watch(trackIR.pitch)
      77. diagnostics.watch(trackIR.roll)
      78. diagnostics.watch(trackIR.x)
      79. diagnostics.watch(trackIR.y)
      80. diagnostics.watch(trackIR.z)
      81. #diagnostics.watch(tmp)
      Alles anzeigen
      Idealerweise muss diese Datei nur in freePie geladen und ausgeführt werden (F5). Man kann übrigens jederzeit das Skript in freePie stoppen (shift-F5), Dinge anpassen und es wieder neu starten (F5), ohne dafür LS schließen zu müssen!

      Bin gespannt wie das bei den (bislang 2) Beta-Testern funktioniert. :) Und generell ob das Konzept dahinter logisch erscheint und erkennbar ist, wo man eventuell etwas ändern darf/muss.

      Ein Hinweis: Bei mir war vJoy nach ein paar Experimenten irgendwann falsch kalibriert, nachdem es aus für mich nicht nachvollziehbaren Gründen die Auflösung geändert hatte. Man kann das mit der normalen Kalibrierung von Windows wieder hinbiegen. Ein freePie-Skript für die nötigen "Bewegungen" kann ich gerne zur Verfügung stellen.
      Nachdem ich in FreePie im Administrator Modus gestartet und im TIRSupport Mod das Device in vJoy Device umbenannt habe, läuft das ganze nun bis auf ein kleines Problem.
      Die Achsen sind noch verschoben, heißt, ich stehe auf dem Kopf und habe z.B. die Roll Bewegung auf der X Achse von Track IR.
      Muss ich im Mod noch umändern!

      Beim ersten anschauen sieht das Ganze relativ durchschaubar aus :thumbsup:

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Porsche Junior ()

      Benutzer-Avatarbild

      Porsche Junior schrieb:

      ... TIRSupport Mod das Device in vJoy Device umbenannt habe,....
      Halt!

      Den TIRSupport rausschmeissen und die ZZZ_freePieCam.zip aus der .rar verwenden!

      Ansonsten wird die config-Datei überhaupt nicht verwendet!

      Hätte ich deutlicher schreiben müssen, sorry.


      Nachtrag: Aber für sowas sind Beta-Tester unerlässlich: Check+Override ob der alte TIRsupport noch parallel läuft eingebaut.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von upsidedown () aus folgendem Grund: Nachtrag

      Erster Versuch: Test mit 5DOF

      Hoch/runter schauen funktioniert bei mir nicht,
      auch sitze ich verkehrt herum im Traktor.
      Ansonsten müsste glaub ich alles funktionieren.

      Zweiter versuch: 6 DOF

      Kamera steht Kopf,
      Bewegungen sind alle da ausser pitch (hoch/runterschauen)

      Tastenzuweisung in Gamekonsole hab ich noch nicht hinbekommen, per Console lässt es sich ausschalten.
      Ja, jetzt sind wir genau da wo ich es befürchtet hatte: Das jetzt mal 500-1000 downloads am ersten Tag und die Katastrophe ist perfekt :D

      Das müssen wir schon deutlich näher an plug&play hinbekommen.

      Was mir sehr helfen würde wären die ungefähren Werte, die freePie im watch-Tab anzeigt. Ich habe die diagnose-functions mit Absicht nicht auskommentiert in der Version die ich euch geschickt habe.

      Wobei ich gerade vermute, dass deine Probleme einfach an der Kalibrierung vom vJoy liegen. Ich werd morgen eine Version erstellen, die mit der dann leider nur halben Auflösung aber ohne nicht ganz einfaches Nachkalibrieren auskommt. Heute wird das aber nichts mehr.