Animation erstellen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Ich denke in deinem Linux fehlt eine lib.

Wen du ein Debian/Mint oder ähnliches Linux hast, müsste es mit,

Code: Alles auswählen

sudo apt-get install libgl-mesa-dev
// oder
sudo apt-get install freeglut3-dev
gehen.

In deinem Nachrichten-Fenster ist sicher noch etwas von "-Ixxxxxx" gestanden.
Wen es nicht geht, poste mal die ganze Nachrichten-Ausgabe.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Soner
Beiträge: 744
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Animation erstellen

Beitrag von Soner »

Ich habe das heruntergeladen und angeschaut:
Horst_h hat geschrieben:Hallo,

ich habe die Animation vom 23. Feb 2016, 21:44 etwas modifiziert, umso soweit zu beschleunigen, das sie unter wine und FullHD noch mit Timer1.interval = 14 funktioniert.
Dabei habe ich eine CPU Last von knapp über 90%.
Das wichtigste dabei sind kontante Bitmaps, wie das Rad inclusive Hintergrund zu erstellen und zu kopieren ( draw ) und darin zu zeichnen.Auch den Kolben kann man als Bitmap speichern und an die passende Stelle kopieren.VIelleicht wäre BitBlt noch schneller, habe ich aber nicht getestet.
Was scheinbar sehr viel Zeit kostet ist das zeichnen mit diesen sehr breiten Linien.
Anbei das Lazarusprojekt + - ändern den Schrittwinkel und die scrollbar1 das Timer1.interval. zwischen 1 und 100.

Gruß Horst
Jungs, ihr habt das ganz gut hinbekommen, das Problem mit Flackern ist, das die Animationssteuerung ziemlich schlecht ist, ich habe bisschen umgeändert jetzt ist es besser, nur minimales Flackern bei sehr großen Auflösung. Ich ändern noch etwas und lade gleich hoch.

Soner
Beiträge: 744
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Animation erstellen

Beitrag von Soner »

Hier habt Ihr die Rad2 von Horst_h mit kleinen Änderungen.
Man konnte eigentlich flackern weiter reduzieren in dem mann nur die Änderungen neu zeichnet.
Ich glaube dafür braucht man OpenGL nicht, LCL-Canvas reicht vollkommen.
Wenn ihr "antialiased "-Linien haben wollt dann könnt ihr auch AGG-Pascal verweden (Siehe in lazarus\components\aggpas).
Viel Spaß.
Dateianhänge
Rad2Son.zip
Rad2 mit minimale Änderung.
(4.1 KiB) 68-mal heruntergeladen

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Hier habt Ihr die Rad2 von Horst_h mit kleinen Änderungen.
Die Änderung hat etwas gebracht, jetzt flacker es bei mir auch nicht mehr.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hallo Mathias,

ich nutze Windows 7.
Das ist die komplette Fehlermeldung: "glgtkglxcontext.pas(19,48)Fatal: Can`t find Unit X used by GLGtkGLxContext"

@Soner
Danke!
Ich schau mir das gleich einmal an.

Gruß

Hannes

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

ich nutze Windows 7.
Unter Windows sollte dies eigentlich auf Anhieb laufen.
Das ganze X-Zeugs sah mir stark nach Linux aus.
Ich glaube dafür braucht man OpenGL nicht, LCL-Canvas reicht vollkommen.
Eigentlich denke ich das auch, aber aus irgend welchen Gründen, wollte man es nicht mit dem Standard-GDI machen.
Soweit ich mich erinnern mag, wegen Antialiasing.

Wie schon mal gesagt, mein einfaches Rad ist flackern gelaufen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hallo,
"man" wollte das schon per GDI machen war aber gezwungen wegen der schlechten Qualität hier nach Alternativen zu fragen.
Die Animation konnte man kaum jemandem zumuten und eine Möglichkeit das zu verbessern (Antialiasing) konnte ich nicht finden.
Meine Versuche mit anderen Möglichkeiten habe ich auch bekannt gegeben.
OpenGL wurde mir mehrfach empfohlen. Es ist ja wirklich nicht so, dass ich das unbedingt nutzen möchte sondern vielmehr ein Versuch
die Performance-Probleme abzustellen.
Natürlich ist es für mich auch reizvoll diese Möglichkeit kennen zu lernen aber in erster Linie will ich mit meinem Projekt weiter kommen.
Wenn ich mit der Lösung von Horst/Soner, oder einer ähnlichen, zum Ziel komme sind meine Probleme vom Tisch.
Mittlerweile habe ich fast ebenso viel Zeit beim Probieren von ev. Lösungen verbraucht wie für das eigentliche Vorhaben. Scheinbar muß
man da, als Anfänger, durch.

Abgesehen davon interessiert es mich schon sehr warum das Beispiel vom Mathias bei mir nicht laufen will.

Gruß und Danke

Hannes

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Abgesehen davon interessiert es mich schon sehr warum das Beispiel vom Mathias bei mir nicht laufen will.
Welches Lazarus/FPC hast du ?
Hast du evtl. an deinem Lazarus etwas verbastelt ?
Normalerweise bindet man unter Windows die Pakage ein, kompiliert Lazarus neu (geschieht in der Regel automatisch, wen man auf "Speicher und IDE rekompilieren klickt").
Anschliessend hat man zwischen den Reitern "LazControls" und "Pascal Script", ein "OpenGL", welches dann ein Symbol mit drei farbigen würfeln hat.

Wann kommt deine Fehlermeldung, beim kompilieren von Lazarus, oder des Rad-Projectes ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hallo Mathias,
die Fehlermeldung kommt beim Compilieren des Projekts.
Das OpenGL-Symbol ist da wo es sein soll.
Meine Lazarus Version: 1.4.4 / FPC 2.6.4
Ich nutze Windows 7 / 64
"Gebastelt" habe ich nicht, jedenfalls nicht bewusst, aber viel probiert.
Vielleicht sollte ich über eine Neuinstallation nachdenken.

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Ein Neuinstallation wäre sicher nicht schlecht, somit hast du eine grosse Chance, das es nacher geht.
Unter Windows geht dies sehr schnell.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Die neue Installation läuft..

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hallo Mathias,
Dein Rad dreht sich und ich ärgere mich sehr darüber, dass es an meinem Lazarus lag!
Ob ich meine Animation mit OpenGl umsetzen kann werde ich dann sehen. Momentan ist mir das noch schleierhaft...

Danke

Hannes

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Dein Rad dreht sich und ich ärgere mich sehr darüber, dass es an meinem Lazarus lag!
Das ist mir auch schon passiert, wen ich mit Komponenten oder sonstigen rumgebastelt hatte.


Im Anhang noch eine neue Version des OpenGL-Rades.
Dateianhänge
OpenGL_Rad.zip
(126.08 KiB) 77-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Johannes
Beiträge: 174
Registriert: Sa 9. Jan 2016, 09:30

Re: Animation erstellen

Beitrag von Johannes »

Hallo Mathias,
herzlichen Dank!
Das muss ich jetzt erst einmal verstehen. Leider hatte ich heute nicht viel Zeit dafür(privater Stress).
Wir kommt es fast so vor als ob Deine Codes immer kürzer, die Ergebnisse aber dabei immer beeindruckender werden..
Wenn man in den Eigenschaften vom OpenGLControl noch "Multisampling" auf 2 (oder auch 4) setzt gibt es auch noch
glatte Kanten. (Hab ich ganz allein gefunden :) )
Nun muss ich "nur" noch den "kleinen Rest" begreifen aber dank der Hilfe aus dem Forum bin ich optimistisch.
Ich werde mich jedenfalls erst einmal intensiv selbst bemühen bevor ich hier Fragen stelle.
Ein wenig in Tutorials hab ich schon gestöbert und mir gefällt die Lösung via OpenGL immer besser. Sie bringt mir viele
Vorteile. Jetzt kann ich auch mit Fließkommazahlen in der Animation umgehen. Die Skalierung, war bei meinem letzten Stand
oft eine Fehlerquelle, ist ein Kinderspiel( hoffe ich ), das Koordinatensystem ist wie in meinem CAD und von CPU-Last ist auch nix
mehr zu spüren.
Wer weiß, vielleicht mag ich ja auf meine alten Tage nochmal etwas ganz Anderes damit machen.

Mit freundlichen Grüßen

Hannes

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Animation erstellen

Beitrag von Mathias »

Wenn man in den Eigenschaften vom OpenGLControl noch "Multisampling" auf 2 (oder auch 4) setzt gibt es auch noch
glatte Kanten. (Hab ich ganz allein gefunden :) )
Du bist ein absoluter Jenie, das habe ich schon seit Monaten gesucht. :oops:
Ich wollte dies später mal mit FrameBuffer und ähnlichem lösen.
Manchmal geht etwas sehr einfach. :wink:
Die Skalierung, war bei meinem letzten Stand oft eine Fehlerquelle, ist ein Kinderspiel( hoffe ich ),
Dies ist effektiv ein Kinderspiel, dies geht einfach mit.

Code: Alles auswählen

 glScalef(1.5, 1.5, 1.5);   
das Koordinatensystem ist wie in meinem CAD und von CPU-Last ist auch nix mehr zu spüren.
Ja es ist wie im CAD, minus ist die linke/untere Ecke.
CPU-Last ist auch fast nichts, dies macht fast alles die GPU, und dies erst noch alles in 3D.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten