Rendering unendlich große, Ebene
Möchte ich machen ein Flugzeug, so dass es aussieht, als ob es unendlich in alle Richtungen. Ich will das Flugzeug Grenze in der Ferne der Horizont.
Mit einer einfachen Masche funktioniert nicht - der computer kann nicht Rendern unendlich viele Dreiecke. Selbst wenn dies möglich war, die Kamera Sichtbereich würde schneiden Sie die entfernte Polygone und erstellen Sie eine Lücke zwischen dem Flugzeug Grenze und den Horizont.
Ist ein workaround, um zu berechnen, Horizont mathematisch: Suche Punkte in der Ebene, die liegen auch auf der Ebene im unendlichen. Verbinden Sie diese Punkte, und zwei Ecken von der viewport erzeugt ein Trapez, das ist die gesuchte Ebene. Jedoch, auf diese Weise das Flugzeug kann nicht richtig beleuchtet, oder eine textur, oder etwas anderes, das erfordert eine feine triangulation...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie zeichnen eine unendliche Ebene mit dem standard-Rasterung-pipeline. Das homogene Koordinaten verwendet es darstellen kann "ideale" Punkte (andernfalls bekannt als Fluchtpunkte oder Punkte bei unendlich) genauso glücklich wie regelmäßige euklidische Punkte, und ebenso ist es vollkommen praktisch eingerichtet, eine Projektions-matrix die Orte, die weit Ebene auf unendlich.
Einen einfachen Weg, dies zu tun wäre, um ein Dreieck pro quadrant, wie folgt:
Wenn Sie möchten, eine test-Muster (wie ein unendliches Schachbrett), Sie wird zu tun haben mit der Tatsache, dass dehnen Sie Ihre Dreiecke zur Unendlichkeit verzerrt wird jede standard-textur. Allerdings können Sie einen pixel-shader bestimmt, dass die Farbe auf der Grundlage der tatsächlichen 3D-Punkt (D. H., verwenden Sie
x
undy
aus dem Weltraum(x,y,z)
Koordinaten), ignoriert die (verzerrte) textur-Koordinaten zusammen.Konnte man wählen zwischen zwei Konstante Farben, basierend auf der Parität (für ein Schachbrettmuster) oder tile eine textur durch das sampling basierend auf den gebrochenen Teil von Ihr gewählten Koordinaten.
Beachten Sie, dass OpenGL clip space ist [-1..1] für jede der x -, y -, und z ist. Sie können berechnen die entsprechenden Projektions-matrix durch die Auswertung der Grenzen, clip Abstand
f
erhöht, ohne gebunden:Wo (wie im link):
n
ist die near clip plane,r
ist die Hälfte der Sichtbereich Breite an der near clip plane, undt
ist die Hälfte der Pyramidenstumpf der Höhe an der near clip plane.Habe ich nicht getestet und die obige matrix, so lohnt es sich, was für Sie bezahlt. Auch bewusst sein, dass der Wert für die Tiefe verlieren Ihre Genauigkeit, wie Sie Ansatz infinity...
Obwohl die Genauigkeit bei Entfernungen näher, wird wahrscheinlich in Ordnung sein-z.B. bei jedem gegebenen Abstand, die Tiefe, die Auflösung in der (in der Nähe von:infinity) sollte etwa 10% weniger als der Fall, wo die (in der Nähe von:far) - Verhältnis (1:10).
Ihre Anzeige Pyramidenstumpf, das einem gekappten Pyramide, die aus 4 clip-Ebenen an den Seiten und oben/unten, und auf einer nahen und einer Fernen Ebene ist "unendlich" (es ist nicht unendlich, aber da Sie nichts sehen kann, die außerhalb des Sichtbereich, es ist so unendlich, wie es sein kann).
Zeichnung der Unterseite Ihres gekappten Pyramide (ein quad, oder zwei Dreiecke), daher ist eine Ebene, die "unendlich", gehen bis zum Horizont. Oder, für diese Angelegenheit, alle quad mit seinen Ecken an, auf die nahen und die Fernen Flugzeuge.