Я использую стандартный подход к рекламному щиту в Unity, который в порядке, но не идеален:
transform.LookAt(camera)
Проблема состоит в том, что это вносит искажение к краям области просмотра, особенно когда угол поля зрения увеличивается. Это не похоже на идеальный рекламный щит, который вы могли бы увидеть, например. Обречен, когда видишь врага под любым углом и независимо от того, где он находится в пространстве экрана.
Очевидно, что есть способы перетаскивания изображения прямо в область просмотра, центрированного вокруг одной вершины, но я не очень люблю шейдеры.
Есть ли у кого-нибудь примеры этого подхода (если возможно, GLSL), или какие-либо предложения относительно того, почему это обычно не делается таким образом (по сравнению с вышеупомянутым методом четырехкратного преобразования)?
РЕДАКТИРОВАТЬ: Я был в замешательстве, спасибо Натан за голову. Конечно, заставляя квадроциклы смотреть на камеру, они не становятся параллельными плоскости обзора - это то, что мне нужно.
Я полагаю, что для этого можно установить верхнюю матрицу 3х3 (на языке основных колонок) для идентификатора. Я не вижу причин, почему вы не могли бы сделать это в шейдере, но, возможно, вы выполняете больше работы таким образом. Таким образом, вы потеряете масштаб (в вашей матрице xformation).
Изменить: эта статья была полезна для меня для рекламных щитов и рекламы:
http://www.flipcode.com/archives/Billboarding-Excerpt_From_iReal-Time_Renderingi_2E.shtml
Я не знаю, насколько это условно, но я называю это «обманчивым», когда перспектива сохраняется, и «рекламным щитом», когда это не так.
источник