Подтвердить что ты не робот

OpenGL, Как создать "ухабистый полигон"?

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

OpenGL question

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

4b9b3361

Ответ 1

Я думаю, что ваш поиск на самом деле Parallax mapping (или сопоставление окклюзии Parallax).

Демонстрации:
http://www.youtube.com/watch?v=01owTezYC-w
http://www.youtube.com/watch?v=gcAsJdo7dME&NR=1
http://www.youtube.com/watch?v=njKdLvmBl88

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

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

Отображение Bump работает с использованием текстуры для normal's, что делает затенение света 3D, однако оно не изменяет трехмерные данные в зависимости от положения зрителя только затенения. Отображение Bump также было бы бесполезно для образцового изображения OP, так как поверхность имеет одинаковый угол только на разных высотах, картирование рельефа зависит от изменений углов поверхности. Вам нужно будет наклонить края, например .

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

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

EDIT: существует также Рельефное сопоставление, которое похоже на параллакс. См. демо. Там сравнительное видео тоже (это немного низкокачественный, но рельеф выглядит так, как будто он дает лучшую глубину).

Ответ 2

Я думаю, что вы находитесь за bump mapping. Ссылка идет на простой учебник.

Ответ 4

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

  • Отображение Bump является самым простым для достижения, но не делает никакой окклюзии.
  • Отображение Parallax, вероятно, является самым сложным для достижения, и не работает хорошо во всех случаях.
  • Для сопоставления смещений требуются аппаратные средства и драйверы высокого класса и создает дополнительную геометрию.
  • На самом деле моделирование полигонов всегда является опцией.

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

Ответ 5

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