2011-01-04 8 views
0

Nachdem ein 3D-Punkt durch eine perspektivische Projektionsmatrix transformiert wurde, wofür steht die Z-Koordinate? Entfernung vom Auge? Entfernung von der nahen Clip-Ebene? Nichts davon?Z-Wert eines projizierten 3D-Punkts

bearbeiten

Ich habe festgestellt here eine Matrix mit der glFustrum Definition einrichten.

Dann transformiere ich einen 3D-Punkt mit dieser Matrix.

Ich bin links mit einem 3D-Punkt, wo X und Y sind die Koordinaten des Punktes auf der nahe kegelstumpffläche, und Z, angeblich eine Tiefe Informationen, die ich habe es schwer zu nutzen.

Danke!

+0

Können Sie ein Beispiel geben, was genau Sie tun? Üblicherweise ist die Projektionsmatrix 4x3, d. H. Der resultierende Vektor enthält keine z-Koordinate. – David

Antwort

1

Transformierte z (dass man als Nenner verwenden, für x und y Dividieren) der Abstand vom Auge in die Richtung senkrecht zur Projektionsebene skaliert, so dass die Projektionsebene in der Entfernung ist 1.

+0

Eigentlich teile ich x, y und z mit w. Ist das nicht "perspektivische Teilung"? Mein Gehirn schmerzt! –

+0

OpenGL-Ansatz verwendet "Clipping-Koordinaten", die ich nie nützlich fand (Clipping ist besser im Objektraum gemacht) und deshalb bin ich gewohnt, w = z. Unter Berücksichtigung dieses Schritts ist die w-Koordinate jedoch der normalisierte Abstand von der Projektionsebene und sollte z mit Ausnahme der reinen Skalierung nicht geändert werden. Mit anderen Worten, um von den Augenkoordinaten zu den Clipkoordinaten zu kommen, ändern Sie nur x und y, um die Seitenebenen der Kamera zu begradigen, die eine abgeschnittene Pyramide in einem Würfel transformieren. – 6502

0

Es ist war eine Weile für mich, aber wenn Sie die X- und Y-Koordinaten auf dem Kegelstumpf haben, steuert das Z nicht die Schichtordnung?

Verwandte Themen