OpenGL, как создать «ухабистый многоугольник»? - PullRequest
30 голосов
/ 20 сентября 2011

Я не уверен, как описать то, что мне нужно, поэтому я нарисовал картинку, чтобы помочь:

OpenGL question

Мой вопрос, возможно ли в OpenGL создать иллюзию этих выпуклых пикселей на одном полигоне, не прибегая к использованию множества полигонов? И если это так, какой метод?

Ответы [ 5 ]

21 голосов
/ 21 сентября 2011

Я думаю, что вы на самом деле ищете Отображение параллакса (Или отображение окклюзии параллакса).

Demos:
http://www.youtube.com/watch?v=01owTezYC-w
http://www.youtube.com/watch?v=gcAsJdo7dME&NR=1
http://www.youtube.com/watch?v=njKdLvmBl88

Отображение Парралакса в основном работает с использованием карты высот, чтобы изменить используемую UV-координату текстуры.

Основным недостатком параллакса является то, что все, что кажется «за пределами» многоугольника, будет обрезано (подумайте о том, чтобы посмотреть на изображение на 3D-телевизоре), так что это лучше всего для объектов с налетом на поверхности, а не торчащих из это (хотя вы можете уменьшить это, сделав полигон более светлым, чем видимая область текстуры). Это также довольно сложный процесс, и для хорошего эффекта его нужно будет сочетать с другими техниками шейдеров.

Bump Mapping работает с использованием текстуры для нормалей, это делает затенение света трехмерным, однако оно не меняет 3D-данные, в зависимости от положения зрителя только затенение. Ударное отображение также было бы довольно бесполезным для образца изображения ОП, поскольку поверхность имеет один и тот же угол только на разных высотах, выпуклое отображение основано на изменениях углов поверхностей. Вам придется наклонить края как this .

Отображение смещения / тесселяция использует текстуру для генерации большего количества многоугольников, а не просто как один многоугольник.

Здесь есть видео, сравнивающее все 3 здесь

РЕДАКТИРОВАТЬ: Существует также Рельефное отображение , которое похоже на параллакс. Смотрите демо . Также есть видео для сравнения (немного низкое качество, но рельеф выглядит так, что дает большую глубину).

14 голосов
/ 20 сентября 2011

Я думаю, что вы ищете рельефное отображение. Ссылка ведет к простому учебнику.

13 голосов
/ 20 сентября 2011

Вы также можете думать о отображении смещения .

6 голосов
/ 21 сентября 2011

Из техник, упомянутых в ответах других людей:

  • Ударное картирование является самым легким для достижения, но не делает никакой окклюзии.
  • Картографирование параллакса, вероятно, является наиболее сложным для достижения и работает не во всех случаях.
  • Для отображения смещения требуется высококлассное оборудование и драйверы, а также создается дополнительная геометрия.
  • На самом деле моделирование полигонов - это всегда вариант.

Это действительно зависит от того, какблизко вы ожидаете, что зритель будет и насколько заметны неровности.Если вы летите по траншеи Звезды Смерти, вам нужно смоделировать неровности или использовать карту смещения.Если вы поднялись на несколько сотен метров, бампмэппинга должно хватить.

3 голосов
/ 20 сентября 2011

Если у вас есть оборудование класса DX11, вы можете создать тесселяцию многоугольника и затем применить отображение смещения. См. http://developer.nvidia.com/node/24. Но потом становится немного сложно запустить его и разработать что-то на его основе.

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