Mit welchem Framework(-Kombination) würde man ein GUI ink. Animation programmieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Dennis89
User
Beiträge: 1158
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,


mir schwirren zur Zeit so viele Dinge im Kopf herum und vor lauter Pygame, habe ich ganz vergessen dass ich euch eigentlich noch was wichtigeres fragen wollte.
Die Umsetzung ist zwar noch fragwürdig, aber zur Umsetzung gehört nicht nur der Nutzen, sondern man braucht auch jemanden, der das umsetzen kann.

Es geht mal wieder um ein GUI, das verschiedene Betriebszustände einer Maschine berechnet. Jetzt wäre es schön, wenn man das Ergebnis nicht nur in Zahlen hat, sondern auch etwas visuell.
Ein schönes Beispiel wäre, wenn ich zum Beispiel die Temperatur des Gasgemisches im Verbrennungsraum eines 4-Takt Motors berechnen will. Dann stelle ich mir das so vor, das nach dem berechnen eine Animation, ähnlich wie diese:
https://www.leifiphysik.de/waermelehre/ ... -animation

läuft und je nach Kolbenstellung die Gastemperatur farblich dargestellt wird. Nur als Beispiel, da sollen auch Kräfte verschiedener Bauteile entsprechend farblich dargestellt werden.

Ich bin in der Lage Animationen aus CAD-Modellen zu erstellen, das ist nicht das Problem. Die Frage ist eher, wie färbt man die Bauteile ein? Muss ich die Animation eher selbst aus einzelnen Bilder zur Laufzeit des Programms erstellen? Und dabei Bilder in allen benötigten Farben vorhalten? Wenn ja, mit was würde man das machen?
Als Framework für die GUI an sich würde ich gerne QT nehmen. Das bietet ja auch ein Animation Framework an:
https://doc.qt.io/qtforpython-6/overvie ... rview.html

Wobei da ja gleich am Anfang steht, dass das die Möglichkeit bietet GUI-Elemente zu animieren. Sind da jetzt nur "Buttons" etc. gemeint.(?)

Also meine eigentliche Frage wäre, in was muss ich mich einarbeiten um das zu programmieren? Es muss ja nicht heißen, das nur weil Qt da zum Beispiel was anbietet, das es auch Sinn macht das zu verwenden, vielleicht gibt es eine Kombination die besser/einfacher oder sonstige Vorteile bietet. Da wäre ich einfach mal an euren Meinungen/Erfahrungen/Empfehlungen interessiert.

Da ihr ja schon sehr viel Code von mir "kennt" bin ich grundsätzlich auch daran interessiert zu erfahren, ob ihr mir das zu traut?

Vielen Dank und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das geht sicherlich mit Qt, dein Link erwähnt später auch QGraphicsItem, das gehört zu QGraphicsView, und das wäre das Mittel der Wahl für mich.

Die wirklich größere Frage ist die nach dem Authoring dafür. Das man mit qt quasi beliebig Pixel und sogar hierarchische Objekte darstellen kann, ist erstmal schön und gut. Aber diese Dinger zu programmieren wird dann sehr aufwändig, du musst selbst die Koordinaten der beteiligten Objekte abhängig vom Zeitstempel und Drehzahl ausrechnen. Ggf auch Rotation dabei, zb für das Pleuel.

Da stellt sich die Frage, ob man sowas dann nicht mit entsprechenden Tools macht. Ein Weg ist zb Box2D, siehe zb https://www.reddit.com/r/Simulate/comme ... imulation/ Die entities, die da direkt gerendert werden, kann man stattdessen auch einfach mit Grafiken darstellen, unter Anwendung der entsprechenden Koordiantentransformation.

Andere Möglichkeiten sind Blender, Godot oder Unity, wobei sich da die Frage nach Exporten stellt, wenn es denn dann doch in Qt dargestellt werden soll.
Benutzeravatar
Dennis89
User
Beiträge: 1158
Registriert: Freitag 11. Dezember 2020, 15:13

Hi und danke für die schnelle Antwort.

Das Simulationsvideo von Box2D ist ja sehr cool.
Wenn ich das richtig verstanden habe, dann kann ich das ganze GUI mit Box2D bauen. Einen Wrapper für Python gibt es auch:
https://github.com/pybox2d/pybox2d

So interessiert ich auch immer bin, würde ich bei nicht-Hobby-Projekten doch eher den einfacheren Weg bevorzugen. Qt ist keine Pflicht, war nur mein Wunsch, falls ich eine Kombination benötigt hätte.

Grüße
Denis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich weiß nicht genau, was du jetzt mit einfacherem Weg meinst. Am Ende gibt’s eben zwei Ansätze: ein generisches Grafik-Rahmenwerk ala Qt, Skia, SVG etc, bei dem man dann aber Animationen aufwendig programmieren muss (dein Link oben ist nur ein Simples interpolieren von werten abhängig von der Zeit, zb eine kreisförmige Animation einer kurbelwelle + pleuel und Zylinder kannst du damit eher nicht hinbiegen).

Oder spezielle animationstools mit key-frames, tweening und/oder Physik-Unterstützung (bones, kinematics sind da die Stichworte), wo sich dann die Frage nach dem Abspielen stellt.
Benutzeravatar
Dennis89
User
Beiträge: 1158
Registriert: Freitag 11. Dezember 2020, 15:13

Guten Morgen,

danke für den weiteren Link, schaue ich mir nachher gleich an.

Mit einfacher meinte ich, dass ich nicht versuchen will irgendwas hinzubiegen, wenn es dafür fertige Tools gibt. Ich google auch noch deine weiteren Stichworte und mit dem groben Überblick muss dann das letztendlich gewünschte Ergebnis erst definiert werden. Ich denke dass wird eine Kombination aus Wunschvorstellung und dem was ich mir zum programmieren zutraue.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten