it-swarm.com.de

GluPerspektive Parameter - was bedeuten sie?

Ich frage mich über die gluPerspective Parameter.

In allen Beispielen sehe ich, dass fovy auf ungefähr 45-60 Grad gesetzt ist. Ich habe versucht, es auf verschiedene Werte zu setzen und das Objekt verschwindet einfach. Was ist die Erklärung dafür?

Der aspect Wert sollte immer das Verhältnis sein? warum sollte man es ändern?

zNear, zFar - wieder sind die üblichen Werte um 10 und über 500, was spiegelt es wider?

42
Despair

Der Zweck der 4 Parameter besteht darin, ein Ansichtsstumpf wie folgt zu definieren:

perspective frustum

auf dem Bildschirm sollte nichts außerhalb des Kegelstumpfes sichtbar sein. (Um dies zu erreichen, werden die Parameter verwendet, um eine 4x4-Matrix zu berechnen, die dann verwendet wird, um jeden Scheitelpunkt in den sogenannten Clip-Raum zu transformieren. Dort wird geprüft, ob ein Scheitelpunkt vorhanden ist im Kegelstumpf oder nicht ist trivial)

Der Parameter für das Sichtfeld ist im Grunde der Winkel zwischen einer Ebene, die durch die Kameraposition verläuft, sowie der Oberseite Ihres Bildschirms und einer anderen Ebene, die durch die Kamera verläuft Kameraposition und den unteren Rand Ihres Bildschirms. Je größer dieser Winkel ist, desto mehr können Sie von der Welt sehen - gleichzeitig werden die Objekte, die Sie sehen können, kleiner.

Um seinen Einfluss zu beobachten, würde ich vorschlagen, eine einfache App zu programmieren, mit der Sie das Sichtfeld per Tastendruck schrittweise vergrößern/verkleinern und dann einige Kugeln oder andere grundlegende Objekte rendern und sehen können, was passiert, wenn Sie es ändern.

Das Seitenverhältnis ist das Seitenverhältnis Ihres Ansichtsfensters. (In der obigen Grafik befindet sich das Ansichtsfenster in der Nähe der Schnittebene.) Es ist sinnvoll, es nach Belieben zu definieren, da das Seitenverhältnis Ihres Ansichtsfensters variieren kann.

Die Werte für zNear & zFar definieren den Abstand zwischen der Kameraposition und der nahen bzw. fernen Schnittebene. Nichts, das näher an der Kamera ist als zNear oder weiter entfernt als zFar, ist sichtbar. Beide Werte müssen> 0 und offensichtlich zFar> zNear sein. zFar sollte idealerweise so ausgewählt werden, dass alles, was Sie rendern möchten, sichtbar ist. Wenn Sie es jedoch größer als erforderlich machen, wird Tiefenpuffer-Präzision verschwendet und kann zu flackernden Effekten, den sogenannten Z-Fighting-Effekten, führen. Ebenso kann die Einstellung von zNear zu nahe an der Kamera den gleichen Effekt verursachen - in der Tat ist ein angemessener zNear-Wert wichtiger als zFar. Wenn Sie genau wissen möchten, warum dies geschieht, sollten Sie einige ausführliche Erklärungen lesen, z. B. diese oder diese

79
gemse