Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 11:27

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bewegung klappt überhaupt nicht!
BeitragVerfasst: Do Jun 28, 2007 12:31 
Offline
DGL Member

Registriert: Mi Jun 27, 2007 20:32
Beiträge: 4
Hallo,

Bin seit gestern mit dem Thema OpenGL beschäftigt!
Habe zuerst selber das Template wie im Tutorial gschrieben und dies klappte auch!
Ich habe mein schönes Dreieck gesehen...

Nun wollte ich die Kamerasteuerung machen, dabei bin ich auf die Prozedure UpdateMovement gestoßen!
Nur leider will diese überhaupt nicht funktionieren!
Sobald ich das:
Code:
  1.  
  2. glTranslatef( PosVect[0],  PosVect[1],  PosVect[2]);
  3. updatemovement;
  4.  

In meine Renderroutine schreibe, sehe ich gar nichts mehr!

Gibt es dazu vllt. noch ein tolles Tutorial?


mfg
Ford


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 28, 2007 13:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Fehlt davor vielleicht ein glloadidentity?
Es kann auch an was anderem liegen, aber dafür muss ich mehr code sehen.

Gruß, MatReno

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 28, 2007 13:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ist PosVect[2] kleiner Null? Wenn nicht, bist du vor deinem Dreieck.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 28, 2007 13:58 
Offline
DGL Member

Registriert: Mi Jun 27, 2007 20:32
Beiträge: 4
Also alles was vom Standarttemplate abweich ist das hier:

In Form.Create:
Code:
  1.  
  2. RotateX := 0;
  3. RotateY := 0;
  4. RotateZ := 0;
  5. PosVect[0] := 0;
  6. PosVect[1] := 0;
  7. PosVect[2] := -1; [*]
  8.  


[*] von 0 bis -1 sehe ich das Objekt! Sobald es kleiner -1 ist sehe ich nur noch schwarz!


Dann in Form.Render:
Code:
  1.  
  2.   glClearColor(0,0,0,0);
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4.  
  5.   glLoadIdentity;
  6.  
  7.   glTranslatef( PosVect[0],  PosVect[1],  PosVect[2]);
  8.   { Das Objekt noch drehen, damit denn wir haben bis jetzt ja nur den }
  9.   { Vector gedreht.                                                   }
  10.   glRotatef(RotateX, 1, 0, 0);
  11.   glRotatef(RotateY, 0, 1, 0);
  12.   glRotatef(RotateZ, 0, 0, 1);
  13.  
  14.   glBegin(GL_TRIANGLES);
  15.   glColor3f(1, 0, 0); glVertex3f(-1,-1, 0);
  16.   glColor3f(0, 0, 1); glVertex3f( 1,-1, 0);
  17.   glColor3f(0, 1, 0); glVertex3f( 0, 1, 0);
  18.   glEnd;
  19.  
  20.   updatemovement;
  21.  
  22. SwapBuffers(DC);
  23.  


Und hier noch die UpdateMovement:
Code:
  1. procedure UpdateMovement;
  2. const
  3.   RotXAxis  : TVector3f = (1, 0, 0);
  4.   RotYAxis  : TVector3f = (0, 1, 0);
  5.   RotZAxis  : TVector3f = (0, 0, 1);
  6. var
  7.   Direction : single;
  8.   LookVec   : TVector4f;
  9. begin
  10.   // Ist die Vorwärts-Taste gedrückt? Wenn ja, nach vorne gehen.
  11.   if GetAsyncKeyState(VK_UP)=1 then Direction := 1 else
  12.     // Ist die Rückwärtstaste gedrückt? Wenn ja, nach hinten gehen.
  13.   if GetAsyncKeyState(VK_Down)=1 then Direction := -1 else
  14.       // Wenn keine der beiden Tasten gedrückt wurde, kann die Prozedur
  15.       // verlassen werden, da dann keine Positions-Anpassung notwendig
  16.       // ist
  17.       Exit;
  18.  
  19.   // Den Blickrichtungs-Vektor initialisieren. Hier soll nur nach vorne,
  20.   // also in die Y-Richtung geschaut werden.
  21.   LookVec[0] := 0;
  22.   LookVec[1] := 1;
  23.   LookVec[2] := 0;
  24.   // Den W-Wert auf 0 setzen. Wir benötigen ihn nicht.
  25.   LookVec[3] := 0;
  26.  
  27.   // Den Look-Vektor zuerst um die Z-Achse...
  28.   RotateVector(LookVec, RotZAxis, -DegToRad(RotateZ));
  29.   // ...um die Y-Achse...
  30.   RotateVector(LookVec, RotYAxis, -DegToRad(RotateY));
  31.   // ... und um die X-Achse drehen.
  32.   RotateVector(LookVec, RotXAxis, -DegToRad(RotateX));
  33.  
  34.   // Nun den gedrehten Vector zum Aktuellen Positions-Vektor
  35.   // hinzuzählen. Damit die Bewegung beachtet wird, das ganze
  36.   // um den Speed-Faktor 0.01 mal Direction multiplizieren.
  37.   PosVect[0] := PosVect[0] + (LookVec[0] * (Direction * 0.01));
  38.   PosVect[1] := PosVect[1] + (LookVec[1] * (Direction * 0.01));
  39.   PosVect[2] := PosVect[2] + (LookVec[2] * (Direction * 0.01));
  40. end;
  41.  


Ich lasse mir auch PosVect[2] anzeigen die hat aber egal welche Taste ich drücke immer den bei Form.Create eingestellten Wert!

Danke schon Mal!

mfg
Ford


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 28, 2007 20:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Den W-Wert solltest du auf 1 setzten, es sei denn, er wird wirklich nicht an OpenGL übergeben.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 28, 2007 22:02 
Offline
DGL Member

Registriert: Mi Jun 27, 2007 20:32
Beiträge: 4
Guten Abend,

Also dieses hier:
Code:
  1. PosVect[2] := -1;

wird zu dem:
Code:
  1. PosVect[2] :=  1;

?

Werde es morgen gleich ausprobieren!

mfg
Ford


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 29, 2007 08:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das ist der Z-Wert.
Ich rede vom W-Wert, den du hier
Code:
  1.  
  2.   // Den W-Wert auf 0 setzen. Wir benötigen ihn nicht.
  3.   LookVec[3] := 0;
hast. Wenn du das allerdings aus nem Tutorial so übernommen hast, dann lass es so.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 29, 2007 14:43 
Offline
DGL Member

Registriert: Mi Jun 27, 2007 20:32
Beiträge: 4
Der stand schon im Tutorial auf 0! Es geht nicht, leider! Ich weiß nicht was ich falsche mache! :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 29, 2007 19:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Lade bitte mal die komplette .pas-, .dfm- und .dpr-Datei als Zip hoch. Sonstige Fremd-Libs nutzt du doch nicht, oder?
Ich denke so finden wir den Fehler wesentlich schneller, außerdem hat man dann Einblick auf alles, was noch irgendwie mit dem Fehler zu tun haben könnte.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 30, 2007 10:17 
Offline
DGL Member

Registriert: Di Sep 19, 2006 13:24
Beiträge: 173
Ist dein FarClipping vielleicht zu niedrig eingestellt?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]