da ich hier immer super Tipps bekomme habe, werde ich es heute wieder versuchen
Ich habe eine Szene ähnlich dem Bild unten angefertigt. Die Kamera wird an der Position (0, 0, -5) initialisiert und schaut auf die Szene. Die Squares (x,y) sind feste in der Szene befestigt. Nun möchte ich es erreichen, dass ich mit der Kamera rotiere. Z.B. zu der linken oberen Ecke. Ich würde also einmal um die x und einmal um die y-Achse rotieren.
Problem ist nur, dass die Szene sich ständig anpasst und nicht bleibt. Also schaue ich immer in die Mitte und schaffe es nicht die obere linke Ecke zu betrachten (mit der Kamera).
Gibt es eine Möglichkeit das doch zu realisieren? Könnt ihr mir da ein bisschen helfen?
Hier ist mal ein Ausschnitt von meinem bisherigen Code:
oder du nutzt gluLookAt. Wobei ich nicht weiss ob das bei OpenGL ES überhaupt noch zur Verfügung steht.
Liegt glaub ich an der OpenGL ES Version....jedenfalls wenn es kein gluLookAt gibt ist das auch schnell programmiert. Die nötige Berechnung der Matrix findet sich im Wiki. Ansonsten einfach mal mein CoolMath anschauen.
Also ich habe das mit rotatef() dahinter versucht. Allerdings rotiert wieder nur das Viereck ;-(
Ich habe gluLookAt & glFrustum als Funktion in OpenGLES integriert. Kann man das dann auch einfach damit machen? Problem ist wirklich, dass es nicht auf das Objekt angewendet werden soll, sondern die XY-Plane konstant stehen bleiben soll ...
Eine andere Überlegung war von mir die Objekte auf der XY Plane zu positionieren und dann diese entsprechend zu Transformieren mittels Translatef(). Meint ihr das geht so einfach?
Also du solltest mal versuchen GENAU zu sagen was du erreichen willst.
Ich weiß einfach nicht was du mit "Problem ist nur, dass die Szene sich ständig anpasst und nicht bleibt." oder "die XY-Plane konstant stehen bleiben soll" meinst.
Jedenfalls kannst du mit gluLookAt recht intuitiv angeben wo du hinschauen willst. Du sagst einfach wo der Betrachter sein soll und nennst einen Punkt auf den die Kamera blicken soll. Fertig. Wichtig ist natürlich das du gluLookAt an der richtigen Stelle auf die ModelView-Matrix anwendest. Normalweise macht man das ungefähr so:
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Tausche dein Whiteboard gegen die Ultimative Antwort.
greetings Ne, Scherz. Außerdem ist die Antwort weltbekannt: 42.
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Leider klappt das nur bedingt, da es Werte zwischen -1 und 1 sind. Somit wird der Betrachtungspost nicht viel verändert. Sollte man hier eher mit einem Winkel arbeiten ???
Registriert: Sa Aug 18, 2007 18:47 Beiträge: 694 Wohnort: Köln
Programmiersprache: Java
Wieso erinnert mich das an den 3DS?
Ich weiss jetzt nicht wie die Achsen bei den Sensoren ausgerichtet sind, kann leider nur im Simulator testen. Wenn ich mir das iPhone vor die Nase halte in der "Standardansicht" dann ist der Vektor 0,0,-1 ? Also z=-1 ist da wo die Hometaste ist? Dann ist wohl x die Seite und y die Tiefe? Aber mit welchen Vorzeichen?
bzgl deines Codes:
nur wenn z gleich 0.0 ist wird überhaupt x geprüft. Ist das so gewollt?
[edit]hab da noch was gefunden. Da hat wohl OpenGL Einfluss gehabt. [/edit]
_________________ Es werde Licht. glEnable(GL_LIGHTING); Und es ward Licht.
Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.