Animation erstellen
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
Wahrscheinlich stimmt mit der Z-Position noch etwas nicht, das man das weisse Rechteck nicht sieht.
Ansonsten sieht sie doch gut aus, oder ?
Ansonsten sieht sie doch gut aus, oder ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Da sind wir aber verschiedener Meinung. Ich finde es nicht gut. Diese ausgefransten Linien gefallen mir gar nicht.
Vor "OpenGL" sah das so aus:
Vor "OpenGL" sah das so aus:
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
Was meinst du damit ?Diese ausgefransten Linien gefallen mir gar nicht.
Die schwarze Umrandung der Schraffur ?
Oder meinst du, weil die Linien der Schraffur nicht schön 45° sind ? Hast du immer noch glScalef für die Textur eingebaut ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Ohne scale sieht das so aus:
Außerdem ist, nur mit scale !, dieser komische Effekt wieder da. Mein Bildschirm wird um Einiges dunkler.
Bin jetzt am Überlegen eine andere Lösung zu suchen.
Der Anhang von meinem letzten Post zeigt wie ich es gerne hätte.
Mit scale (30,20,1):
Der Unterschied sollte deutlich zu sehen sein. Eine Umrandung habe ich ja nicht.Was meinst du damit ?
Die schwarze Umrandung der Schraffur ?
Außerdem ist, nur mit scale !, dieser komische Effekt wieder da. Mein Bildschirm wird um Einiges dunkler.
Bin jetzt am Überlegen eine andere Lösung zu suchen.
Der Anhang von meinem letzten Post zeigt wie ich es gerne hätte.
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
Dann lasse das scale weg und ändere den Faktor.Außerdem ist, nur mit scale !, dieser komische Effekt wieder da.
Code: Alles auswählen
procedure gl(x, y, z: single);
const
Faktor=0.3; // zB. 5.0
begin
glTexCoord2f(x * Faktor, y * Faktor);
glVertex3f(x, y, z);
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
Du hattest recht, die Schraffur sieht komisch aus, mit folgendem Filter sollte es auch bei dir verschwinden.
Aber das mit dem Faktor würde ich trotzdem ändern.
Aber das mit dem Faktor würde ich trotzdem ändern.
Code: Alles auswählen
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- Dateianhänge
-
- Zwischenablage-1.jpg (8.84 KiB) 2281 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Nun sieht das schon etwas besser aus. Ideal finde ich das aber immer noch nicht.
Vor Allem ist dieser Effekt mit dem dunklen Bildschirm wieder da.
Ich habe aber keine "Color-Anweisung" finden können die das verursachen könnte.
Man erkennt das recht gut am grauen Hintergrund innerhalb der schraffierten Flächen.
das sollte eigentlich weiss sein. Das ist jetzt der komplette Code der mit der Texture zu tun hat:
Vor Allem ist dieser Effekt mit dem dunklen Bildschirm wieder da.
Ich habe aber keine "Color-Anweisung" finden können die das verursachen könnte.
Man erkennt das recht gut am grauen Hintergrund innerhalb der schraffierten Flächen.
das sollte eigentlich weiss sein. Das ist jetzt der komplette Code der mit der Texture zu tun hat:
Code: Alles auswählen
procedure TSteuerung.FormCreate(Sender: TObject);
begin
SWWG := 0;
SWWB := 30;
InitOpenGL;
OpenGLControl1.MakeCurrent;
ReadExtensions;
ReadImplementationProperties;
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glGenTextures(1, @textureID0);
glBindTexture(GL_TEXTURE_2D, textureID0);
bit := CreateBitmap;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, bit.Width, bit.Height,
0, GL_BGR, GL_UNSIGNED_BYTE, bit.RawImage.Data);
bit.Free; // Temporäre Bitmap wieder frei geben.
glGenerateMipmap(GL_TEXTURE_2D);
quadricParam := @gluNewQuadric;
TBSpeed.Position := 30;
Winkel := 0;
VOR := True;
BtVor.Caption := 'rückwärts';
DoubleBuffered := True;
end;
Code: Alles auswählen
function TSteuerung.CreateBitmap: TBitmap;
begin
Result := TBitmap.Create;
with
Result do
begin
Width := 16;
Height := 16;
with Canvas do
begin
Pen.Color := clWhite;
Pen.Width := 2;
Brush.Color := clWhite;
Rectangle(0, 0, Result.Width, Result.Height);
Pen.Color := clBlack;
Line(0, 0, Result.Width, Result.Height);
end;
end;
end;
Code: Alles auswählen
procedure Tsteuerung.gl(x, y, z: single);
const
Faktor = 7;
begin
glTexCoord2f(x * Faktor, y * Faktor);
glVertex3f(x, y, z);
end;
Code: Alles auswählen
procedure TSteuerung.Zylinder(Hub, ZTA, KMZM: single);
begin
// --- Textur Aktivieren
glEnable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureID0);
glBegin(GL_QUADS);
glColor3f(1, 1, 1);
gl(ZTA - Hub * 0.75, Hub * 0.5, 0);
gl(ZTA - Hub * 0.75, -Hub * 0.5, 0);
gl(ZTA + Hub * 0.75, -Hub * 0.5, 0);
gl(ZTA + Hub * 0.75, Hub * 0.5, 0);
glEnd();
glBegin(GL_QUADS);
glDisable(GL_TEXTURE_2D);
glColor3f(1, 1, 1);
glVertex3f(ZTA - Hub * 0.7, Hub * 0.3, -0.02);
glVertex3f(ZTA - Hub * 0.7, -Hub * 0.3, -0.02);
glVertex3f(ZTA + Hub * 0.7, -Hub * 0.3, -0.02);
glVertex3f(ZTA + Hub * 0.7, Hub * 0.3, -0.02);
//Schieberkasten
glColor3f(0, 0, 0);
glVertex3f(ZTA - Hub * 0.75, 2 * KMZM - (Hub / 2), 0);
glVertex3f(ZTA - Hub * 0.75, Hub / 2, 0);
glVertex3f(ZTA + Hub * 0.75, Hub / 2, 0);
glVertex3f(ZTA + Hub * 0.75, 2 * KMZM - (Hub / 2), 0);
glColor3f(1, 1, 1);
glVertex3f(ZTA - Hub * 0.7, KMZM + Hub / 7, -0.02);
glVertex3f(ZTA - Hub * 0.7, KMZM - Hub / 7, -0.02);
glVertex3f(ZTA + Hub * 0.7, KMZM - Hub / 7, -0.02);
glVertex3f(ZTA + Hub * 0.7, KMZM + Hub / 7, -0.02);
glEnd();
end;
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
Code: Alles auswählen
glBegin(GL_QUADS);
glDisable(GL_TEXTURE_2D);
Wen du diese beiden Zeilen vertauscht, sollte es gut sein.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Vielen Dank!
Es ist mir etwas unangenehm Dich wegen diesem Fehler bemüht zu haben. Darauf hätte ich wirklich selber kommen können.
Ich habe den Code mehrmals überprüft aber manchmal sieht man den Wald vor Bäumen nicht.
Es ist mir etwas unangenehm Dich wegen diesem Fehler bemüht zu haben. Darauf hätte ich wirklich selber kommen können.
Ich habe den Code mehrmals überprüft aber manchmal sieht man den Wald vor Bäumen nicht.
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
Dies ist mir auch schon passiert, manchmal sucht man viel zu weit..Es ist mir etwas unangenehm Dich wegen diesem Fehler bemüht zu haben. Darauf hätte ich wirklich selber kommen können.

Die Position des Schiebersteines stimmt immer genauer, aber ist immer noch nicht perfekt.
- Dateianhänge
-
OpenGL_Rad.zip
- (137.25 KiB) 75-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Sehr schade, ich kann das leider nicht anschauen:
Mathe.RAB ist die Länge der Schwingenstange.(wird berechnet)
SPW/SWSP ist der Winkel der Auslenkung des Schwingensteins:
st ist die Position (in y) des Schwingensteins. (kommt von einer Trackbar)
P.S. Hab Deinen Post nochmal gelesen. Ich hatte Schwingenstein mit Schieberstein verwechselt.
Nun brauch ich auch noch eine neue Brille...
Sorry
Die Position des Schwingensteins mache ich so (x,y,z):haengegestaenge.pas(93,64) Error: Operator is not overloaded: "TPointf" + "TPointf"
Code: Alles auswählen
((cos(SPW / 180 * Pi) * Mathe.RAB), sin(SPW / 180 * Pi) * Mathe.RAB, 0);
SPW/SWSP ist der Winkel der Auslenkung des Schwingensteins:
Code: Alles auswählen
RadToDeg((arcsin(SWSP * sin(90) / st)) * 2);
P.S. Hab Deinen Post nochmal gelesen. Ich hatte Schwingenstein mit Schieberstein verwechselt.
Nun brauch ich auch noch eine neue Brille...
Sorry
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
In der Zip ist eine Exe die bei dir laufen sollte. http://mathias1000.bplaced.net/OpenGL_R ... GL_Rad.zipSehr schade, ich kann das leider nicht anschauen:
Ich meinte eigentlich schon den Stein bei der Schwinge.P.S. Hab Deinen Post nochmal gelesen. Ich hatte Schwingenstein mit Schieberstein verwechselt.
Gibt es überhaupt einen Schieberstein ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Einen "Schieberstein" kenne ich so nicht.
Vielen Dank für das ZIP-File. Die exe läuft bei mir auch.
Deinen Code habe ich versucht zu verstehen. Leider komme ich da nicht mehr richtig mit. Dazu trennen uns wohl Welten was die Erfahrung im Programmieren angeht.
Woher kommt der Fehler beim Compilieren? Kann ich, von meiner Seite aus, etwas dagegen tun?
Wenn ich mir Dein Programm anschaue fällt mir folgendes auf:
Der Mittlepunkt des Schwingenkreises (der kleine Punkt) sollte bei 0° und bei 180° das Zentrum des mittleren Lagers des Voreilhebels treffen wenn die Voreilung 0 beträgt. Sonst stimmt die Geometrie nicht.
Wichtig dabei ist auch der Neigungswinkel der Schwinge (ergibt sich aus der Differenz der Positionen von Schwingenlager und Anlenkpunkt (mittleres Lager Voreilhebel).
Bei mir ist da auch noch ein kleiner Fehler drin.
Schau mal, zum Vergleich, in mein Programm . Einfach bei den Eingaben "Voreilung" 0 eingeben.
Vielen Dank für das ZIP-File. Die exe läuft bei mir auch.
Deinen Code habe ich versucht zu verstehen. Leider komme ich da nicht mehr richtig mit. Dazu trennen uns wohl Welten was die Erfahrung im Programmieren angeht.
Woher kommt der Fehler beim Compilieren? Kann ich, von meiner Seite aus, etwas dagegen tun?
Wenn ich mir Dein Programm anschaue fällt mir folgendes auf:
Der Mittlepunkt des Schwingenkreises (der kleine Punkt) sollte bei 0° und bei 180° das Zentrum des mittleren Lagers des Voreilhebels treffen wenn die Voreilung 0 beträgt. Sonst stimmt die Geometrie nicht.
Wichtig dabei ist auch der Neigungswinkel der Schwinge (ergibt sich aus der Differenz der Positionen von Schwingenlager und Anlenkpunkt (mittleres Lager Voreilhebel).
Bei mir ist da auch noch ein kleiner Fehler drin.
Schau mal, zum Vergleich, in mein Programm . Einfach bei den Eingaben "Voreilung" 0 eingeben.
-
- Beiträge: 6912
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Animation erstellen
FPC 3.1.1, dort habe sie zu dem einfachen Record von TPointF etliche Funktionen dazu gefügt.Woher kommt der Fehler beim Compilieren? Kann ich, von meiner Seite aus, etwas dagegen tun?
Ich habe halt vieles in Klassen verpackt, schlussendlich wird das ganze dadurch übersichtlicher.Dazu trennen uns wohl Welten was die Erfahrung im Programmieren angeht.
Bei normaler strukturiert Programmierung, braucht man sehr viele Variablen und somit wird es immer unübersichtlicher.
Wie du vielleicht gehen hast, hat es in den verschiedene Klassen sehr viel privates Zeugs.
Ich habe mir eine Bibliothek für OpenGL 3.3 geschrieben, wen ich die ohne Klassen gemacht hatte, dann hätte ich Null Überblick.
Ich werde mir dies später mal angucken.Der Mittlepunkt des Schwingenkreises (der kleine Punkt) sollte bei 0° und bei 180° das Zentrum des mittleren Lagers des Voreilhebels treffen wenn die Voreilung 0 beträgt. Sonst stimmt die Geometrie nicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Animation erstellen
Hallo Mathias,
bitte verstehe mich nicht falsch. Ich bin sehr dankbar für Deine Unterstützung aber ich habe erst vor einigen Wochen Lazarus installiert und vorher auch kaum mit Pascal zu tun gehabt.
Somit gibt es für mich noch viel zu lernen. Selbst Grundlagen stellen manchmal noch Hürden für mich dar.
Manchmal denke ich, dass ich mein Vorhaben wohl etwas zu blauäugig begonnen habe.
Deine Strategie möchte ich in keinster Weise kritisieren nur fehlt mir halt noch oft der Durchblick dafür.
Ich schau jetzt mal ob ich ein Update auf FPC 3.1.1 fertig bekomme.
Danke für Dein Verständnis
Hannes
bitte verstehe mich nicht falsch. Ich bin sehr dankbar für Deine Unterstützung aber ich habe erst vor einigen Wochen Lazarus installiert und vorher auch kaum mit Pascal zu tun gehabt.
Somit gibt es für mich noch viel zu lernen. Selbst Grundlagen stellen manchmal noch Hürden für mich dar.
Manchmal denke ich, dass ich mein Vorhaben wohl etwas zu blauäugig begonnen habe.
Deine Strategie möchte ich in keinster Weise kritisieren nur fehlt mir halt noch oft der Durchblick dafür.
Ich schau jetzt mal ob ich ein Update auf FPC 3.1.1 fertig bekomme.
Danke für Dein Verständnis
Hannes