Маскировка области поверхности ландшафта в OpenGL - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю над трехмерным географическим рендером с построением моделей на поверхности местности. Эти модели зданий фиксируются с помощью фотограмметрии, и проблема, с которой мы сталкиваемся, заключается в том, что поверхность ландшафта иногда проталкивается через модель здания, поскольку данные поверхности и модель здания не совпадают точно.

Мы хотим замаскировать ландшафтповерхность в области, которая покрыта следом модели здания. Я думал об использовании буфера трафарета, возможно, выдавливая некоторый теневой объем из модели и заполняя z-буфер высокими значениями в области, покрытой следом модели здания, перед рендерингом модели. Это потребует довольно большой обработки, и я надеюсь, что есть более умный и эффективный способ сделать что-то. Другая идея заключается в создании орфографической 2d-текстуры модели, отрисованной сверху, и использовании ее для творческого заполнения z-буфера с использованием шейдеров.

Так что, если кто-то делал что-то подобное раньше или у меня есть идеи,был бы очень рад их услышать: -)

Я ограничен OpenGL ES 3.0, поэтому я не могу использовать геометрические шейдеры или другие необычные функции.

Приветствия, Томас

1 Ответ

1 голос
/ 05 ноября 2019

Вы должны знать как сетку ландшафта, так и где здания на самом деле находятся на местности. Наиболее очевидным решением будет предварительная обработка сетки ландшафта, чтобы «сгладить» область вокруг фундамента каждого здания. Это нужно сделать только один раз, так что это единовременная стоимость, а не цена за кадр.

Не могу придумать ни одного сразу очевидного более аккуратного метода - необходимость глубинного тестирования, кроме случаев, когда вы нене хочу этого, на самом деле не очень красиво превращается в алгоритм;)

...