Как заставить спрайты правильно смотреть в камеру в OpenGLES - PullRequest
6 голосов
/ 04 февраля 2009

У меня есть игра, которая более или менее 2D, но отображается в 3D. Камера зависает над двумерным игровым полем, наклоненным примерно на 20 градусов от идеально перпендикулярного, чтобы дать ему небольшую трехмерную перспективу.

У меня есть несколько спрайтов, которые нужно сделать идеально квадратными, потому что они представляют сферические объекты. Мой первый подход визуализировал четырехугольники на двухмерном поле, которые правильно их позиционировали, но спрайт подвергался искажению перспективы и не всегда оглядывался.

Мой текущий подход заключается в том, что при рендеринге спрайтов я перемещаю камеру перпендикулярно игровому полю (и спрайтам), что гарантирует, что квады никогда не будут искажены в перспективе. Недостатком является то, что положение спрайтов немного отличается от того, где они были бы, если бы камера была наклонена.

Итак, как я могу отобразить спрайты, которые:

  1. Совершенно квадратно и обращено к камере, но для этого не требуется, чтобы я перемещал камеру.
  2. иметь размер, на который влияет расстояние от камеры (в отличие от точечных спрайтов)

Ответы [ 3 ]

10 голосов
/ 04 февраля 2009

Вы можете достичь желаемого, используя многоугольник, который всегда обращен к камере. Это называется «рекламный щит». Вот хороший учебник, который, кажется, объясняет математику и как ее реализовать с помощью OpenGL

0 голосов
/ 04 октября 2009

вы все еще можете использовать точечные спрайты ... используя glPointParameter (), вы можете уменьшить глубину. В настоящее время я использую 0,00025 для моего ослабления глубины для моей системы частиц, которая находится в разработке. недостатком является то, что на машинах 1-го поколения (я полагаю, вы делаете это для iphone или ipod touch), вы застрянете с максимальным размером спрайта 64x64 пикселей

0 голосов
/ 04 февраля 2009

Нарисуйте квадраты перпендикулярно камере, как вы предлагаете, но расположите их немного над полем. Расстояние выше, вероятно, должно быть радиусом сферы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...