Eu uso a abordagem padrão para billboard no Unity que está OK, mas não é o ideal:
transform.LookAt(camera)
O problema é que isso introduz distorção nas bordas da janela de visualização, especialmente quando o ângulo do campo de visão aumenta. Isso é diferente do outdoor perfeito que você veria, por exemplo. Desgraça ao ver um inimigo de qualquer ângulo e independentemente de onde ele esteja localizado no espaço da tela.
Obviamente, existem maneiras de mesclar uma imagem diretamente na viewport, centrada em torno de um único vértice, mas não gosto de shaders.
Alguém tem alguma amostra dessa abordagem (GLSL, se possível), ou alguma sugestão de por que não é normalmente feita dessa maneira (versus o método de transformação em quadra mencionado acima)?
Edição: Eu estava confuso, obrigado Nathan pela atenção. Obviamente, fazer com que os quads olhem para a câmera não os torna paralelos ao plano de visualização - e é disso que eu preciso.
Eu acredito que você pode definir a matriz 3x3 superior (na coluna principal) para a identidade para fazer isso. Não vejo nenhuma razão para que você não possa fazer isso no shader, mas talvez esteja fazendo mais trabalho dessa maneira. Você perderia escala (em sua matriz de xformações) dessa maneira.
Editar: este artigo foi útil para outdoors e impostores:
http://www.flipcode.com/archives/Billboarding-Excerpt_From_iReal-Time_Renderingi_2E.shtml
Não sei como isso é convencional, mas chamo de "impostor" quando a perspectiva é mantida e de "outdoor" quando não é.
fonte