Registriert: Sa Jun 06, 2009 16:13 Beiträge: 17 Wohnort: Künzelsau
Hallo Freunde der Sonne!
Ich arbeite seit eine gewissen Zeit an einem kleinen Spielchen und bin gerade dabei mir alle Objekte zu schreiben um danach nur noch die Spielmechanik einsetzten zu müssen.
Das Kollisions-tut hatte mir zu erst keine Probleme bereitet (bzw dort prüft man ja nur statische Objekte mit einem Beweglichen - bei mir soll sich alles bewegen)
Dann wollte ich eben um alle meine Objekte eben eine Hitbox drum rum bauen (=falscher Gedanke?).
Und da ist auch schon das Problem wenn ich meine Objekte bewege/drehe muss ich das auch mit meiner Hitbox tun (wie im Tut beschrieben).
Das bewekstellte ich dann indem ich meine eigne Matrix gebaut hab und alle translations/rotations manipulationen auch da mit mache.
Die Translation war einfach und funkt auch einwandfrei aber jetzt zur Rotation:
Die Matritzenverkettung und Abbildungen hab ich mir aus meinem Mathebuch und dem Internet beigebracht aber schaut selber was dabei rauskommt:
es muss an was Mathematischem liegen denke ich und ich schlicht die Rotationsmatrix (aus wiki) falsch mit meine aktuellen matrix multiplitziere
und noch eine Frage:
Ich wusste nicht welches in Open GL die Identitätsmatrix ist da hab ich einfach die einhaitsmatrix genommen:
1 0 0 | 0
0 1 0 | 0
0 0 1 | 0
€:
ich hab gar nich gesagt wie ich das anstelle, also so mach ichs:
Code:
u1 v1
u2 v2
a1 b1 a1*u1+b1*u2 a1*v1+b1*v2
a2 b2 a2*u1+b2*u2 a2*v1+b2*v2
nur eben mit 3x3
Vielen Gruß, Wh0p[/code]
_________________ Wieso kann es nicht einfach funktionieren?
Registriert: Sa Jun 06, 2009 16:13 Beiträge: 17 Wohnort: Künzelsau
Tut mir leid das so sagen zu müssen aber das half mir jetzt nicht bis über den berg
Das mit den 4x4 Matrizen bin ich auch noch nicht so dahintergekommen warum...
Aber ich will ja auch keine Matrizen ein oder auslesen. Ich hab meie Matrix selber im Speicher liegen mit der ich mein Punkt abbilden will
und diese Matrix soll jetzt eben genauso manipuliert werden können wie die Open gl matrix.
Das is womöglich unnötig kompliziert aber mir gehts jetzt ums Prinzip... wenn ich das hier: http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml umrechne kommt wieder die Matrix raus die ich benutz (wenn man das 4x4 nicht beachtet das ich nicht versteh)
Sollte allerdings eine Möglichketi bestehen einen Punkt so mit der aktuellen Modelviewmatrix zu multipliziern, dass ich mit dem dann auch weiterarbeiten kann wärs natürlich auch ganz toll (ich würde trotzdem gerne meinen Fehler wissen wollen).
Wenn die 4x4 Matrix solche Auswirkungen hat bitte ich um Erläuterung (am meisten hängts daran, dass wenn ich ein Punkt mit 3 Koordinaten verrechne kommen danach ja 4 Werte raus).
_________________ Wieso kann es nicht einfach funktionieren?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Vielleicht helfen dir die beiden Mathe-Tutorials Lineare Algebra und Nachsitzen dabei, das ganze richtig gestellt zu bekommen.
OpenGL rechnet intern auch mit 4D-Vektoren, daher auch die 4x4-Matrizen [Allerdings wird die w-Koordinate meist auf 1 belassen, da später dadurch geteilt wird ... ich bin mir gerade nicht ganz sicher, in welchem Moment. Irgendwo zwischen ModelViewMatrix und dem Endbild auf jeden Fall. Ich schätze mal, nach der Projektion. Was ich damit sagen will ist nur, dass du w am besten bei 1 belässt, wenn du nicht damit rumspielen willst .]
greetings
_________________ 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
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Zitat:
Vielleicht helfen dir die beiden Mathe-Tutorials Lineare Algebra und Nachsitzen dabei, das ganze richtig gestellt zu bekommen.
Danke, dass Du eingesprungen bist. Ja, insbesondere das Tutorial "Nachsitzen" wird Dir vermutlich helfen. Das sollte eigentllich den Großteil Deiner Fragen klären. Das ist eines der besten mathematischen OpenGL-Tutorials, die ich kenne.
Die 4x4-Matrix wird "Homogene" Matix genannt und ist erfunden worden, um mit Matrizen nicht nur rotieren, skalieren und scheren zu können, sondern auch zu verschieben. Hier: http://de.wikipedia.org/wiki/Homogene_Koordinaten gibts eine Info drüber, was homogene Matrizen eigentlich sind (weiß jetzt nicht, ob das im Tutorial auch erwähnt ist).
Zitat:
Sollte allerdings eine Möglichketi bestehen einen Punkt so mit der aktuellen Modelviewmatrix zu multipliziern, dass ich mit dem dann auch weiterarbeiten kann wärs natürlich auch ganz toll
Das geht, aber Du bist dann natürlich immer einen Rendervorgang hinterher. Es funktioniert aber auch mit der eigenen Matrix.
Registriert: Sa Jun 06, 2009 16:13 Beiträge: 17 Wohnort: Künzelsau
Die Lineare Algebra und das Mathe tutorial hab ich gelesen und das war nicht zu kompliziert, das ichs nicht verstanden hätte,
Nichts desto trotz sollte auch wenn meine Matrix nur 3x3 groß ist nicht so ein müll rauskommen Vektorrechnung und die geschichten aus den Tut behersche ich.
_________________ Wieso kann es nicht einfach funktionieren?
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Im Tutorial "Nachsitzen" gibt es eine Rubrik "Anwendung der Matrix auf einen Vektor". Dort wird vorgeführt, wie die Multiplikation eines Vektors mit einer Matrix vor sich geht. Das Einzige, was Du machen musst, ist Deine Rechnung mit der dortigen Rechnung zu vergleichen, Was anderes könnte ich Dir auch nicht sagen. Dort steht praktisch Source Code, den man 1:1 ins Programm übernehmen kann.
Registriert: Sa Jun 06, 2009 16:13 Beiträge: 17 Wohnort: Künzelsau
Ich glaube duverstehst da was Falsch...
ich WEIß wie ich die Matrix anzuwenden habe. Es Steht nur überall das und das ist die Rotationsmatrix für eine drehung um die x-Achse
verkette ich diese mit meine aktuellen matrix
alss meine Punkte durch die Matrix abilden
theoretisch und auf papier funktioniert das alles perfekt.. aber ich werds ohnehins sowieso selbst herausfinden müssen
_________________ Wieso kann es nicht einfach funktionieren?
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich arbeite normalerweise nicht mit diesen Konstrukten, wo man jeweils eine bestimmte Matrix braucht, damit man um die X,Y,Z-Achse drehen kann, daher alle Angaben ohne Gewähr:
Die Vertextransformation schaut für mich richtig aus.
Aber Deine Matrix, die Du für eine Rotation um die X-Achse konstruierst, kann nicht richtig sein, denn im Tutorial ist dafür die folgende Matrix angegeben:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Sa Jun 06, 2009 16:13 Beiträge: 17 Wohnort: Künzelsau
ich denk mir jetzt einfach mal du meinst die matrix:
Code:
1000
0 cos -sin 0
0 sin cos 0
0001
ja, die hab ich auch genommen, ich verkette die aber vorher mit meiner aktuellen matrix und wenn ich jetzt von mir aus wie im Beispiel noch nix anderes gemacht habe, dann muss ich die mit der einheitsmatrix verketten (denke ich):
Code:
100010*cos+sin 0*-sin+cos 0
0100 x oben = 01*cos+sin 0*-sin+cos 0
001000*cos+sin 1*-sin+cos 0
000100*cos+sin 0*-sin+cos 1
ich will meine matrix ja so oft ich will verändern können, ohne gleich alle meine Punkte da alle durchzujagen, das mach ich erst am schluss wenn die matrix so steht wie ichs brauch.
(ich will danach ja auch noch um y und z achse drehen)
das wissen mit der Verkettung bezieh ich aus meim Mathebuch (Affine Abbildungen),
aber da ist womöglich auch der Fehler das ich das ganze eben nich verketten darf...??? (sondern irgend was anderes????)
_________________ Wieso kann es nicht einfach funktionieren?
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Wenn Du mit "Verketten" meinst, dass Du die beiden Matrizen miteinander multiplizieren musst, dann hast Du ganz recht. Nur habe ich Deine Matrix nicht wiedererkannt, denn ich kenne nur die "unbearbeiteten" Rotationsmatrizen. Anders kann man sie ja gar nicht erkennen, denn aktuelle Matrix hängt ja immer davon ab, was Du vorher hineinmultipliziert hast.
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.