Die Berechnung der Anzeigen Pyramidenstumpf in einem 3D-Raum

Die ich gezeichnet habe, Diagramm-Diagramm nach der Berechnung der bounding-Punkte der anzeigen pyramidenstumpfs in einem drei-dimensionalen Raum. Um zu beginnen, ich habe ein zwei Sätze von Daten mit drei Werten jeweils die xyz-Koordinaten der Kamera und die rotation um die x -, y-und z-Achse. Gegeben eine bestimmte Ansicht-Abstand, sollte es möglich sein, die Berechnung der bounding-Punkte von jeder der 6 Ebenen. Ich habe mit den Gleichungen zur Berechnung der Breite und Höhe der far plane:

hfar = 2 * tan(45/2) * view_distance
wfar = hfar * ratio

hfar die Höhe der Fernen Ebene, wfar als die Breite, und die ratio wird das Verhältnis des port view Breite geteilt durch die Höhe. Ich verwende das folgende Diagramm, um zu versuchen und es herausfinden:

Die Berechnung der Anzeigen Pyramidenstumpf in einem 3D-Raum

Ich muss die Punkte kommentiert, die durch (?,?,?). Ich habe versucht, um diese Werte zu berechnen für ein paar Tage jetzt, aber ohne Erfolg. Jede Hilfe würde geschätzt werden.

Auch, einige schöne Quellen mit Informationen über das Thema finden hier und hier.

BEARBEITEN:
Ein anderes Bild, das ich peitschte zeigt eine einzelne Scheibe, die durch die y-Achse nach unten auf der x-Achse. Es zeigt die gleichen Informationen wie das Bild oben, es zeigt aber auch, mein Problem: ich kann nicht berechnen die richtige z-Achse Werte für jedes der begrenzenden Punkte der Fernen Ebene.

Die Berechnung der Anzeigen Pyramidenstumpf in einem 3D-Raum

Halten Sie im Verstand, den gleichen Schnitt gemacht werden könnte durch die x-Achse zeigt den gleichen Prozess, aber mit dem Winkel, in dem der Spieler ist auf der Suche nach oben oder unten.

  • Sie können die Verwendung der trig-Taster, um dies herauszufinden. Ein Stück von Informationen, die ich nicht sehen in deinem post war die vertikale FoV. Sie benötigen diese Winkel, um herauszufinden, diejenigen Punkte. Lassen Sie Eine werden (x,y,z), B der Mittelpunkt des Fernen Ebene, und C der Mittelpunkt der oberen Kante des Fernen Ebene. Diese drei Punkte bilden ein Dreieck mit dem Winkel am nächsten zu Einem Wesen der Hälfte der vertikalen FoV. Sie können tan (), um herauszufinden, die halbe Höhe. Das horizontale FoV kann bestimmt werden, von Ihrem Verhältnis... und dann können Sie herausfinden, Ihre halbe Breite als gut.
  • In Anbetracht meiner FOV 45 Grad, würde ich die Hälfte, nehmen Sie die Tangente, dann multiplizieren, dass durch die Sichtweite. Dies geschieht für die x-und y-Achse. Ich verstehe, dass, aber das Verfahren funktioniert nicht für die z-Achse.
  • Wow, wie habe ich vermisse deine Formeln? Sobald Sie die Größen, die für f_height/2 und f_width/2, die entsprechenden Anweisungen kommen von der Kamera die Orientierung der Vektoren [nennen wir Sie oben, Seite und front]. Ist es das, was Sie ' re Probleme bei der Suche?
  • Genau! Meine gesamte Ausgabe kommt mit zu können, drehen Sie die gesamte Figur durch den Raum Zeigend an einem beliebigen Punkt entlang der bounding-sphere. Aber wenn Sie erklären könnte, wäre ich ein sehr glücklicher Programmierer 😀
  • Können Sie das erklären?
  • Mit Achse-Winkel-Rotationen, konnte Sie Ihren Drehungen auf Ihre ersten oben, Seite und front Vektoren mit so etwas wie (paulbourke.net/geometry/rotate). Zum Beispiel, Ihre " up " - Vektor wird zunächst [0,1,0]. Anwenden einer Drehung um eine Achse, wird Ihnen Ihre, bis ein neuer Vektor. Sie tun die gleiche Sache mit Ihrer ersten Seite und front Vektoren... und dann Sie können verwenden Sie die erste Methode, die Sie beschrieben, die Punkte zu Holen, die Sie suchen.
  • Sachen erhielten gerade wirklich kompliziert.. okay, was ist mit den Vektoren? Der sound ist nicht für ignorant oder so, aber ich wirklich gerade angefangen 3D alles, so dass die meisten dies ist die neue Terminologie.

Schreibe einen Kommentar