Ich verwende den Standardansatz für das Billboarding in Unity, der in Ordnung, aber nicht ideal ist:
transform.LookAt(camera)
Das Problem ist, dass dies zu Verzerrungen in Richtung der Ränder des Ansichtsfensters führt, insbesondere wenn der Sichtfeldwinkel größer wird. Dies ist anders als das perfekte Billboarding, das Sie z. Untergang, wenn Sie einen Feind aus einem beliebigen Winkel sehen und unabhängig davon, wo er sich auf dem Bildschirm befindet.
Natürlich gibt es Möglichkeiten, ein Bild direkt in das Ansichtsfenster zu verschieben, das um einen einzelnen Scheitelpunkt zentriert ist, aber ich mag keine Shader.
Hat jemand Beispiele für diesen Ansatz (GLSL, wenn möglich) oder Vorschläge, warum dies normalerweise nicht auf diese Weise erfolgt (im Vergleich zu der oben genannten Quad-Transformationsmethode)?
EDIT: Ich war verwirrt, danke Nathan für das Heads-up. Wenn die Quads in die Kamera schauen, sind sie natürlich nicht parallel zur Ansichtsebene - was ich brauche.
Ich glaube, Sie können die oberste 3x3-Matrix (in Spalten-Hauptsprache) auf die Identität einstellen, um dies zu tun. Ich sehe keinen Grund, warum Sie dies im Shader nicht tun konnten, aber Sie könnten auf diese Weise mehr Arbeit leisten. Auf diese Weise würden Sie die Skalierung (in Ihrer Xformationsmatrix) verlieren.
Bearbeiten: Dieser Artikel war hilfreich für mich beim Plakatieren und Betrügen:
http://www.flipcode.com/archives/Billboarding-Excerpt_From_iReal-Time_Renderingi_2E.shtml
Ich weiß nicht, wie konventionell das ist, aber ich nenne es "Betrug", wenn die Perspektive beibehalten wird, und "Plakatierung", wenn dies nicht der Fall ist.
quelle