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

Aktuelle Zeit: Fr Jul 04, 2025 18:56

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Nov 28, 2010 19:33 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Hallo,
ich habe einen Algorithmus, der mit ca. 1000 Würfel zeichnet:
Code:
for x:=-50 to 50 do
for z:=-97 to -3 do
begin
if ((x mod 2)=0) or ((z mod 2)=0) then continue;
glpushmatrix();
    glTranslatef(x,0,z);
   glCallList(wuerfel);
glpopmatrix();
end;

So, wie kann ich mich jetzt durch die Blöcke durch bewegen?
Wenn ich vor dem rendern diesen Code einfüge:
Code:
glTranslatef(big_x/10, 0, big_z/10);

dann dreht er sich nicht, und man guckt immer nur geradeaus.
Wie ändere ich meinen Code so, dass ich rückwärts etc. laufen kann (wie bei assassins creed)

P.S. wenn big_x wird bei Taste nach rechts um eins erhöht, big_y bei vorne hinten


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 28, 2010 20:28 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Wenn ich dich richtig verstehe, möchtest du sowohl deine Position als auch deine Blickrichtung ändern? Dann schau dir mal gluLookAt an.


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 21:12, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 28, 2010 20:45 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Da kann ich verändern, was ich will, da ist kein Unterschid im Bild, hier mal meine render-Funktion:
Code:
procedure tform1.render;
var x,y,z,k: integer;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  glTranslatef(0, 0, -10);

  //glRotatef(big_x, 1,0,0); //  hoch
  //glRotatef(-big_x/5, 0,1,0);    //rechts-links
 //glRotatef(big_x, 0,0,1);       //drehen

inc(i);
  glInitNames;
  glPushName(0);

k:=0;
for x:=-50 to 50 do
for z:=-97 to -3 do
begin
if ((x mod 2)=0) or ((z mod 2)=0) then continue;
glpushmatrix();
    glTranslatef(x,0,z);
   glCallList(wuerfel);
   //gluLookAt(big_x, 0, 0, 0, 0, 0, 0, 0, 0); Caption:=IntToStr(big_x);
glpopmatrix();
end;
//gluLookAt(big_x, 0, 0, 0, 0, 0, 0, 0, 0); Caption:=IntToStr(big_x); oder hier,
//kein unterschied
SwapBuffers(dc);
end;


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 28, 2010 21:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du musst die Kamera setzen BEVOR du renderst, nicht danach. (rendern passiert bei dir in "glCallList" )

Es ist empfehlenswert dies nach dem
Code:
glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

zu machen.

Desweiteren sind deine Werte für gluLookAt falsch. Die letzten drei Werte müssen einen Vektor darstellen der dahin zeigt wo "oben" ist. Das dürfte bei dir (0,1,0) sein.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 28, 2010 21:42 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Jetzt wird gar nichts mehr angezeigt:
Code:
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
   gluLookAt(0, 0, 0, 0, 0, 0, 0, 1, 0);
  glTranslatef(0, 0, -10); 


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 28, 2010 21:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Bitte schau dir doch einfach mal die Doku zu gluLookAt an. Du hast Kamera-Position und Kamera-Ziel gleichgesetzt auf (0,0,0), daher weiß die Kamera nicht wohin sie gucken soll.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Nov 28, 2010 21:59 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Und wie kriege ich das jetzt so, wie in einem richtigen Spiel?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Nov 29, 2010 21:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ah, das ist doch eine Frage, die wie geschaffen ist für unsere Exzellente Tutorialsammlung:
Tutorial: Objekt gedreht und dennoch nach vorne bewegt
Tutorial: Objekt immer um eigene Achse drehen

und wenns noch ein paar Basics für die Kamera sein dürfen, siehe auch: Tutorial: Kamera

Ich hoffe, es hilft!

grüße

_________________
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  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 16 Queries | GZIP : On ]