Registriert: Mi Apr 09, 2008 16:28 Beiträge: 52 Wohnort: Münster
Hi Ich habe ein kleines Problem :
bei meiner Map möchte ich mich gerne frei bewegen können.
Vprwärts und rückwärts funktioniert (mit Tastenabfragen).
Ich möchte aber dann noch die Möglichkeit haben mich seitwärts zu drehen (nicht zu bewegen)
D.h. : wenn ich mich an einem Punkt befinde und z.B. die linke Pfeiltaste drücke dann soll sich die Map nach rechts ( sieht aus als ob ich mich nach links drehen würde) um meine aktuelle Position drehen.
Wenn ich aber einfach glrotatef verwende dann dreht sich die Map aus irgenteinem Grund um den Punkt von dem aus ich ganz am Anfang des Programms gesatrtet bin! Obwohl ich mich doch gar nicht bewegt habe sondern die Map sich um mich bewegt!!!
Kann mir jemand bitte erklären wie ich diesen Punkt so verlegen kann, dass die Map sich wirklich um MEINE Position dreht und nicht m irgenteine andere.
Ich würde mich sehr über viele Antworten freuen MFG
_________________ "Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."
-- Dan Salomon
Lass Dich nicht davon abschrecken, dass es sich im Tutorial um Matrizen dreht, sondern ruf das Tutorial mal auf und blätter ein wenig runter bis zur Überschrift:
>>Auswirkungen von Matrixmanipulationen - oder "Wie positioniere ich meine Objekte richtig?"<<
Es geht hier nämlich schlicht darum, was glTranslate/glRotate eigentlich machen. Ein wenig weiter unten sind auch Kombinationen von glTranslate/glRotate erklärt. Es wird Dir wirklich weiterhelfen. Die Burschen, die das dokumentiert haben, haben ganze Arbeit geleistet.
Registriert: Mi Apr 09, 2008 16:28 Beiträge: 52 Wohnort: Münster
Ja ok also ganz ehrlich:
Das hilft mir jetz nich wirklich Was da steht is ja schön geschrieben aba da steht leider nur das was ich schon weiß :(
Der Teil den ich nicht verstehe fehlt leider (nja gehört ja auch nich wirklich dahin )
Und zwar ist mein Problem eben ,dass sich bei glrotatef() das Koordinatensystem mitverschiebt. Wenn ich bei meinem Spiel nach rechts gehe (also die Map nach links drehe) , dann möchte ich ja in diese Richtung gehen. Dafür müsste ich mich also in die z- Richtung des alten Koordinaten Systems bewegen, (geht aba nicht weil durch glRotatef() ja das alte nicht mehr da ist.
Ich muss also umrechnen was bei einem bestimmten Drehwinkel eine Strecke auf der z- Achse des alten Koordinatensystems nun auf dem neuen Koordinatensystem für Bewegungen auf der x und z- Achse erforderlich sind.
Dafür brauch ich irgentwelche Formeln auf die ich leider noch nicht gekommen bin (Hab schon vieles auprobiert sinus, Pythagoras usw. aba kein Erfolg )
Wenn mir da jemand bald helfen könnte wär das echt super Ich brauch das nämlich für nen Informatik Projekt.
Wenn jemand von euch schonmal ein Programm programmiert hat bei dem man sich frei auf der Map bewegen kann müsste er das ja wissen.
Hoffentlich gibts da welche :)
MFG
_________________ "Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."
-- Dan Salomon
Du hast doch üblicherweise ein Weltkoordinatensystem. In dem kannst du dich(zumindest wenn die Bewegung kein Flugzeug sonderen ein an den Boden gebundenes Objekt beschreibt) mit
DeltaX=cos(Angle)*Speed*DeltaT
DeltaY=-sin(Angle)*Speed*DeltaT
(vorzeichen hängt von deinem genauen Koordinatensystem ab)
Um das dann darzustellen fängst du jedes Frame wieder mit glLoadIdentity an, und bewegst die Szene so wie du willst.
Registriert: Mi Apr 09, 2008 16:28 Beiträge: 52 Wohnort: Münster
Äähm könntest du mir das mal erklären?
Ich ersteh diese Rechnungen nicht.
Und mit glloadIdentity fang ich natürlich jedes Mal an (sonst würde man ja gar nichts sehen).
MFG
_________________ "Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."
-- Dan Salomon
Du hast deine Spielfigur, die eine Richtung zeigt und an einem Ort steht. Diese Spielfigur kannst du mit der genannten Formel bewegen, vollkommen unabhängig von OpenGL. Wenn du nun eine first person Kamera hast, dann bewege die erst mit Translate zur Figur, und führe dann ein Rotate aus um in die selbe Richtung wie die Einheit zu sehen
edit: Hab die Reihenfolge glaube ich mal wieder vertauscht
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Hallo DK99,
Was Dir The-Winner hier vorschlägt, ist nichts Exotisches. So oder so ähnlich macht das auch Jan Horn in seiner >>Basic 3D Engine<< wo Du Dir den Sourcecode herunterladen kannst, siehe http://www.sulaco.co.za/opengl.htm, auf dieser Seite das vorletzte Projekt.
Traude
Mitglieder in diesem Forum: 0 Mitglieder und 9 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.