AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Animationen mit Delphi erstellen

Ein Thema von DerHaushaltsProfi · begonnen am 18. Jan 2015 · letzter Beitrag vom 24. Jan 2015
Antwort Antwort
Seite 2 von 2     12
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Animationen mit Delphi erstellen

  Alt 18. Jan 2015, 20:32
Würde ich in echt auch nicht so machen, aber es ist Pseudocode und ich wollte es nicht unnötig verkomplizieren. Außerdem ist TTimer auch nicht optimal, wenn man wirklich flüssige Animation haben will, weil die zeitliche Auflösung nicht genau genug ist. In der Schleife kann man wenigstens das Sleep auskommentieren und bekommt dann zumindest eine flüssige Bewegung, wenn es keine Rolle spielt, dass die CPU dann voll ausgelastet wird. Aber gerade bei Simulationen kann letzteres auch gewollt sein, da mehr Zwischenschritte = höhere Genauigkeit.

Achja, und dazu:
Es ist ja schon so lange her, da wiederhole ich doch mal die Aussage vom TE
Wir sind auf die Idee gekommen (Animation z.B. für Ausbreitungsrichtung von mechanischen Wellen), einzelne Bilder mit Gimp oder Paint zu erstellen und dann mit Timern diese Einzelbilder schnell durchlaufen zu lassen, sodass eine Art kleiner Film bzw. Animation entsteht die flüssig läuft.
Die gleichen Prinzipien kann man natürlich auch zum Abspielen von vorgefertigten Animationen verwenden. Dann berechnet man halt aus der Zeit den Bildindex statt der X-Koordinate eines Objekts. So viel Transferleistung sollte möglich sein.

Ich bin mir aber nicht sicher, ob das Abspielen einer vorgerenderten Animation wirklich das ist, was sie wollen, oder ob es nur die erste Idee war mangels besseren Wissens. Mit Gimp eine „flüssige“ Animation zu erstellen, wird schon deshalb schwierig, weil man sehr viele Einzelbilder braucht. Gerade so etwas wie Wellen kann man doch per Code viel besser zeichnen.

Geändert von Namenloser (18. Jan 2015 um 21:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Animationen mit Delphi erstellen

  Alt 18. Jan 2015, 21:37
Ja und die Bilder sind ja auch immer einfach so da, brauchen keine Zeit zum Laden und Speicher verbrauchen die auch nicht. Ne is klar.

Keiner von uns weiß wieviele Bilder und wie groß, und wenn zu viele und zu groß dann muss man sich auch Gedanken machen, wie man die pünktlich in den Speicher bekommt.

Da nützt die Transferleistung von deinem Ansatz gar nichts.

Die Auflösung des Timers reicht nicht aus? Wieviele Bilder pro Sekunde möchtest du denn anzeigen (und dann bitte auch erklären für wen)? Nach meiner Erfahrung reichen eigentlich 25 Bilder/Sekunde aus. Das macht dann 40ms pro Bild. Wie ist die Auflösung des Standard-Timers? ca. 20ms? Nach meiner Erfahrung bekommt man mit einem normalen Timer und einer recht fixen Darstellung (keine Monsterberechnungen) knapp 60 Bilder pro Sekunde auf den Schirm gemalt. Das menschliche Auge hat ab 25 Bildern/Sekunde den Eindruck einer flüssigen Bewegung. Aber evtl. hast du ja schnellere Augen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Animationen mit Delphi erstellen

  Alt 19. Jan 2015, 09:33
Die Auflösung des Timers reicht nicht aus? Wieviele Bilder pro Sekunde möchtest du denn anzeigen (und dann bitte auch erklären für wen)? Nach meiner Erfahrung reichen eigentlich 25 Bilder/Sekunde aus. Das macht dann 40ms pro Bild. Wie ist die Auflösung des Standard-Timers? ca. 20ms? Nach meiner Erfahrung bekommt man mit einem normalen Timer und einer recht fixen Darstellung (keine Monsterberechnungen) knapp 60 Bilder pro Sekunde auf den Schirm gemalt. Das menschliche Auge hat ab 25 Bildern/Sekunde den Eindruck einer flüssigen Bewegung. Aber evtl. hast du ja schnellere Augen?
Das ist auch so eine Urban Legend. Es gibt keine feste Schwelle, ab der das menschliche Auge eine flüssige Bewegung wahrnimmt. Guck dir mal ein Video mit 25 FPS an, und dann das gleiche Video mit 60 FPS und sag mir du siehst keinen Unterschied. Was man als „flüssig“ bezeichnet, hängt von den eigenen Ansprüchen ab. Wenn 25 FPS reichen, dann kannst du den Timer vielleicht nehmen. Wenn du 60 FPS haben willst, ist der Timer unter Windows nach meiner Erfahrung nicht geeignet.

Das Hauptproblem beim Timer ist gar nicht mal, dass das minimale Intervall zu grob ist, sondern dass er zu sehr streut. Du kriegst vielleicht im Durchschnitt 50 FPS, aber der tatsächliche Abstand zwischen zwei Frames schwankt mal zwischen 15ms und 25ms. Das hat sehr starken Einfluss darauf, ob die Animation flüssig wirkt oder nicht.

Aber das sind alles Details, die für den OP wahrscheinlich erst mal überhaupt nicht wichtig sind, und deswegen bin ich darauf, ob man das jetzt konkret mit einer Schleife oder einem Timer oder sonstwie implementiert, in meinem Beitrag auch gar nicht erst eingegangen. In der Praxis reicht TTimer hier wahrscheinlich. Ist aber ein Implementierungsdetail, was für meinen Beitrag nicht relevant war.

Wenn man es „wirklich richtig“ machen will, führt eigentlich sowieso kein Weg an OpenGL/DirectX vorbei.

Geändert von Namenloser (19. Jan 2015 um 09:37 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Animationen mit Delphi erstellen

  Alt 19. Jan 2015, 00:23
Wie bereits etliche User vollkommen richtig dargestellt haben: Es macht wenig Sinn, sich vor Entwicklung der eigentlichen Anwendung – deren Ziel es in erster Linie sein soll, physikalische Abläufe darzustellen, wobei es erst einmal um die Ermittlung von bestimmten Zahlenwwerten geht – schon Gedanken über eventuelle Animationen zu machen. Zumindest war hier noch kein Code zu sehen, der zeigt, wie z.B. Wellenausbreitung überhaupt berechnet und erst einmal in Zahlenwerten dargestellt werden soll.

Zur eigentlichen Animation findet man via Google zahlreiche Hinweise:

Allerdings halte ich derartige Vorhaben nicht wirklich geeignet für Delphi-Anfänger. Ich beaobachte praktisch jede Woche eine derartige Anfrage von Delphi-Anfängern in den einschlägigen Foren, die danach fragen, wie man hochwertige Anwendungen wie Schaltungssimulationen oder Spiele entwickelt, wofür nicht selten mehrere erfahrene Eintwickler Monate oder gar Jahre benötigen. Ich glaube daher, wenn ihr euch bei eurem Simulationsprogramm physikalischer Effekte auf die Darstellung der Zahlen beschränkt, habt ihr schon mehr als genug zu tun, wie man z.B. dort, am Projekt Soundbibliothek des Prof. Dr. -Ing. habil G.P. Ostermeyer an der Technische Universität Braunschweig, oder auch an dieser Doktorarbeit über Schallstreuung in der atmosphärischen Grenzschicht sehr schön sehen kann. Wenn dann noch Zeit und Lust besteht, könnt ihr euch ja immer noch überlegen, wie ihr da zur Anschauung weitere visuelle Effekt einbaut. Ihr könnt ja einmal quasi als Test versuchen, das Frequenzspektrum irgend eines Songs grafisch darzustellen (z.B. mit Hilfe der Bass.dll), aber nicht mit einer fertigen Komponente, sondern selbst berechnen und die Linien selbst zeichnen. Dabei werdet ihr vermutlich schon einiges lernen und nebenher ein Gefühl dafür bekommen, was euch bei komplexen Simulationen erwartet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz