Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Hi, ich hab folgendes Problem: Ich will ein ein Objekt drehen, und zwar um einen bestimmten Punkt, dazu müsste ich das ungefähr so machen (Meiner Meinung nach :rolleyes: ):
Code:
gltranslatef(ObjektPosition);
gltranslatef(Punkt, um den das Objekt gedreht werden soll, dieser Punkt liegt innerhalb des Objekts);
glrotatef(Rotation);
DrawObjekt;
Aber bei dem zweiten gltranslatef wird ja das Objekt logischerweise wieder weiterbewegt, was eigentlich nicht meine Absicht ist. Also, wie drehe ich mein Objekt um eine Achse, die in dem Objekt ist?
Ciao, La_Boda
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Sorry, habs schon gefunden :ph34r:
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Hi, ich habs jetzt mal mit Schids 2. Tut versucht, aber hat auch nichts geholfen. Hier ist mal ein Konzeptbild meines Proggs: <a href='http://www33.brinkster.com/pdllaboda/Bild.jpg' target='_blank'>Bild</a> Damit sich der Benutzer immer hinter dem Panzer befindet (3rd Person View), werden Sichtfeld und Panzer nicht bewegt, nur das Terrain. Das Problem ist, dass sich das Terrain immer um den Panzer drehen soll. Es dreht sich aber nur um seinen linken unteren Punkt, weil des Der Anfangspunkt der For-Schleife ist, mit der ich das Terrain zeichne. Also müsste ich irgendwie per gltranslatef die drehposition innerhalb der Terrains herausfinden, und darum herumdrehen. Aber mit dem gltranslate Befehl wird immer nur das Terrain verschoben. Ich müsste die translate Bewegung also so ausführen, dass sie keine Bewegung veranlasst, sondern nur, dass glrotatef herausfindet, wo es das Terrain drehen soll! Vielen Dank im Voraus, La_Boda
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn ich dich richtig verstehe, willst du ne Third-Person-Ansicht wie z.B. in nem Rennspiel, wo der Spieler sein Fahrzeug immer an der gleichen Position vor der Nase hat, oder? Wenn ja, dann schau dir mal folgenden Thread im Allgemeinforum an : <a href='http://www.phobeus.de/hosting/dgl/forum/index.php?act=ST&f=3&t=1103' target='_blank'>http://www.phobeus.de/hosting/dgl/forum/in...t=ST&f=3&t=1103</a>
Dort hab ich Quellcode gepostet wie ich das in der ZornGL-Engine realisiert hab.Dort kann man nämlich auch in die Dritte-Person-Ansicht wechseln und hat dann seine Spielgfigur immer vor der Nase.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Den Thread hab ich mir schon durchgelesen, darauf baut mein Progg auch auf. Ich krieg es aber einfach nicht hin, das Terrain richtig zu drehen. Sollte ich vielleicht das Terrain nicht von links unten zeichnen (FOR-Schleife!) sondern von der Mitte aus?
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wie du die Schleife gestaltest mit der du dein Terrain zeichnest ist eigentlich recht egal...allerdings solltest du dein Terrain zentrieren, so dass sein Mittelpunkt bei x=0, z=0 liegt.In ner For-Schleife würde das quellcodetechnisch dann ungefähr so aussehen : <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>for</span> x := <span class='integer'>0</span> <span class='reserved'>to</span> Width-<span class='integer'>1</span> <span class='reserved'>do</span> <span class='reserved'>for</span> z := <span class='integer'>0</span> <span class='reserved'>to</span> Height-<span class='integer'>1</span> <span class='reserved'>do</span> <span class='reserved'>begin</span> glVertex3f(x-Width/<span class='integer'>2</span>, Data[x,z], z-Height/<span class='integer'>2</span>); [...] <span class='reserved'>end</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
So wird dein Terrain zentriert gezeichnet und sollte auch im Bezug zum Blickwinkel des Betrachters richtig dargestellt werden...wenns nicht klappt, dann lad mal den Quellcode hoch und ich schau mirs mal an.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Es klappt jetzt
Bei dem anderen 3rd Person Thread hast du aber glaub ich vergessen, vor der Rotation die Drehposition anzupassen, jedenfalls bei mir wurde, obwohl ich nach dem gleichen Prinzip gegangen bin, das Terrain um die Kamera gedreht, nicht um die Figur. Is aber nicht weiter schlimm
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.