was genau ist der aktuelle rotationspunkt? und warum ausgerechnet zur near clipping plane? wäre der betrachter nicht auch gut? betrachter bekommst du, wenn du von der modelviewmatrix die ersten drei einträge der letzte spalte betrachtest, das für einen vektor hältst und einfach dessen länge betrachtest. bei der ncp ists dann schon ekeliger, da musst du die NCP bestimmen - wird z.B. im Frustum tutorial gemacht - sie in hesse normalform bringen und dann setzt du wieder den punkt den du aus der letzten spalte extrahiert hast in die normalform und dann sollte da der abstand herausfallen... sofern ich mir das jetzt grad alles richtig vorstelle und ich deinen rotationspunkt richtig interpretiere.
Hesse-Form schön und gut, aber ist der Normalenvektor der Near- und Far-clipping-plane
nicht die Z-Achse? Mit anderen Worten: Der Abstand eines jeden Punktes zur Near-clip-plane
ist sein Z-Wert (minus der Entfernung der Plane zum Nullpunkt).
Ich als gebürtiger Franke kann freilich mit einer "Hesse"-Form nur wenig anfangen Den Rotationspunkt würde ich als den Punkt interpretieren, um den (mit glTranslates...) die Kamera rotiert, wenn man danach glRotate aufruft. (Oder davor *g*)
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Jun 09, 2005 13:48 Beiträge: 117 Wohnort: Sankt Augustin
Hallo,
vielen Dank erst mal für Euere Antworten.
Folgendes Problem stellt sich mir:
Ich möchte meine Szene verschieben und zwar auf der Z-Achse, also in den Bildschirm hineien oder aus ihm heraus.
In meinem aktuellen Rotationspunkt (dem Punkt, um den sich die Szene bei einem GLROTATE dreht) befindet sich ein
Fadenkreuz. Kommt dieses Fadenkreuz näher an den Betrachter heran, soll sich die Bewegung verlangsamen, entfernt es sich,
soll alles wieder schneller werden. Das klappt auch, aber ich berechne den Abstand zum Betrachter nur dann korrekt,
wenn sich die Kamera- bzw. Betrachterprosition genau im Nullpunkt befindet. Da sich bei einem verschieben der Szene nicht
der Rotationspunkt ändert sondern der Punkt des Betrachters, habe ich leider keine feste Bezugsgröße. Deswegen wollte
ich die Entfernung des Fadenkreuzes zur Near Clipping Plane berechnen.
Oder weiß jemand einen Rat, wie es anders gehen könnte?
Transformiere deinen...äh..."Rotationspunkt", also den Koordinatenursprung (0,0,0,1) mit der Matrix der Kamera, also das was z.B. gluLookAt produziert hat. (Nicht die Projektionsmatrix...)
Dann hast du den "Rotationspunkt" im Koordinatensystem der Kamera. Egal wie deine Kamera definiert war, die Kamera befindet sich nun bei 0,0,0 und du blickst in Richtung der negativen Z-Achse. Die Y-Achse ist oben. Nun projizierst du deinen transformierten "Rotationspunkt", ich nenne ihn mal R, auf die Bildebene. Da du in Z-Richtung blickst geht das leicht über den Strahlensatz.
R' = R * (near / R.z)
(Möglicherweise sind hier die Vorzeichen falsch)
Da die Kameramatrix nur eine Roation+Translation ist und diese Operationen Abstände nicht verändern, ist der Abstand von R und R' die gesuchte Entfernung deines "Rotationspunkts" von der NearPlane.
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.