Konfiguration
Standardmäßig verwendet die Unreal Engine eine perspektivische Projektion. Dieses Projektionsmodell führt jedoch zu Verzerrungen der Geometrie, wenn mit einem großen Sichtfeld gearbeitet wird. Das ist beispielsweise hier bei einer Kugel und einem Sichtfeld (FOV) = 120 sehr deutlich zu erkennen.
Daher bietet Unreal Engine einen optionalen Nachbearbeitungsdurchlauf, der versucht, dieses Problem mithilfe einer Panini-Projektion zu beheben. Die Idee dieser Nachbearbeitung besteht darin, die gerenderten Pixel an die Position zu verschieben, an der sie sich befinden sollten, wobei statt der perspektivischen Projektion die Panini-Projektion verwendet wird. Um die Einrichtung vorzunehmen, müssen Sie lediglich
r.LensDistortion.Panini.D > 0 einstellen
. Dieser Nachbearbeitungseffekt wird im Hochskalierungs-Durchlauf ausgeführt. Das bedeutet, dass dieser Durchlauf verwendet wird, wenn r.ScreenPercentage != 100 oder
r.LensDistortion.Panini.D > 0 einstellen
. Für ein besseres Verständnis dieses Parameters können Sie direkt auf die Original-Forschungsarbeit zurückgreifen, auf die am Ende dieser Seite verwiesen wird.
r.LensDistortion.Panini.D > 0 hebt den Effekt direkt hervor. Es ist jedoch nicht der einzige Parameter, r.LensDistortion.Panini.S lerp mit der harten Komprimierung des Papiers. Und wenn eine Kugel in den Ecken immer noch verdeckt aussieht, kann dieser Parameter ebenfalls angepasst werden. Allerdings werden bei r.LensDistortion.Panini.S < 0 in den Ecken nicht gerenderte, schwarz aussehende Pixel angezeigt.
Um besser zu verstehen, wie dieser Effekt funktioniert, kann auch r.LensDistortion.ScreenFit geändert werden. Dabei ist zu beachten, dass einige der perspektivisch projizierten Pixel am Ende nicht auf dem Bildschirm angezeigt werden, und zwar im oberen und unteren Bereich des Bildschirms.
Gerade Linien
Die Panini Projektion bringt mehrere Garantien auf die Linien. Erstens bleiben die vertikalen Linien für alle Werte von r.LensDistortion.Panini.D und r.LensDistortion.Panini.S garantiert gerade. Zweitens bleiben die Linien, die durch das Zentrum des Bildschirms verlaufen, auch für jeden Wert von r.LensDistortion.Panini.D garantiert gerade, aber r.LensDistortion.Panini.S = 0. Diese mathematische Eigenschaft ist daher ideal für First-Person-Shooter-Spiele, da die Panini-Projektion einer auf die Bildschirmmitte gerichteten Waffe ihre geraden Linien zum Zentrum hin beibehält.
Unschärfe im Zentrum
Ein Problem dieses Nachbearbeitungseffekts ist, dass ein Unschärfeeffekt im Zentrum des Bildschirm auftritt, wenn
r.LensDistortion.Panini.D
ein Unschärfeeffekt in der Bildmitte auftritt. Die Panini-Projektion wurde speziell im hochskalieren Durchlauf implementiert, um den Vorteil des Schärfefilters zu nutzen und diesem Phänomen entgegenzuwirken. Allerdings kann es schnell passieren, dass dies nicht mehr ausreicht, um das Problem zu beheben. Daher müssen Sie möglicherweise r.ScreenPercentage erhöhen, um dieses Problem zu beheben, was jedoch auf Kosten Ihrer gesamten Rendering-Performance geht, da dadurch die Anzahl der zu zeichnenden Pixel erhöht wird. Sie könnten in Betracht ziehen, eine bessere Wahl zu treffen, indem Sie sich für eine geringeren Wert bei
r.LensDistortion.Panini.D
Hardware entscheiden, die ein höherer Prozentsatz des Bildschirms nicht leisten kann, und diesen Effekt dennoch erzielen, indem Sie sich ausschließlich auf den Schärfefilter des hochskalierenten Durchlauf verlassen.
Eine weitere Möglichkeit, die Panini-Projektion zu verwenden, besteht darin, eine Materialfunktion zu verwenden, die einen Weltpositionsversatz ausgibt, der in den Welt-Positionsversatz-Input-Pin des Materials eingespeist wird. Das ist genau das, was Unreal-Turnier verwendet, anstatt die Waffe mit einem anderen Sichtfeld (FOV) zu rendern, um die Verzerrungen der perspektivischen Projektion zu beheben. Sie möchten sich das vielleicht im GitHub-Repository der UT ansehen.