Почти равномерная тесселяция вогнутого многоугольника для карт высот

Мне дан контур / граница вогнутого многоугольника, который не может иметь отверстий, и мне нужно применить к нему карту высот. Для этого мне нужно выполнить почти равномерную тесселяцию многоугольника следующим образом:

.

Как я могу выполнить эту тесселяцию? В идеале решение может параметризовать «разрешение» внутренних вершин для настройки детализации тесселяции.

Я использую OpenSceneGraph, так что, если это каким-то образом возможно, используя его встроенную библиотеку тесселяции, это было бы идеально, но я открыт для введения дополнительной (надеюсь, легкой) зависимости, если это необходимо.

3

Решение

Очень хорошо ! Вы когда-нибудь задумывались об использовании геометрического шейдера для этого? DirectX 11 и OpenGL позволяют тесселяцию «на лету» с использованием графического процессора. Это в 20-40 раз быстрее, в зависимости от вашего оборудования.

Моя любимая отправная точка для тесселяции анимации VS2015 / C # —

https://github.com/RobyDX/SharpDX_Demo/tree/master/SharpDXTutorial/Tutorial11

Если вы предпочитаете C / C ++ и OpenGL, есть много примеров.

http://prideout.net/blog/?p=48

Некоторые из моих, я пробую текстуру растрового изображения для высоты. Справа вы видите некоторые артефакты, вызванные моими маленькими нормальными ошибками в моих маленьких треугольниках … надо поработать над этим 🙂

некоторые из моих

Выше сетка имеет размер 32×32 квадрата и имеет глубину тесселяции 7. Здесь вы видите сплющенную сетку, показывающую тесселяцию глубины 1:

сплющенная сетка, показывающая тесселяцию

1

Другие решения

Этот вопрос не вызвал большого интереса, но я добился довольно хороших результатов, используя трудный для Google Треугольник библиотека.

Быстрый предварительный просмотр некоторых результатов.

Если бы я решил, что хочу, чтобы триангуляция была строго равномерной внутри многоугольника, я, вероятно, мог бы предоставить треугольнику набор вершин для дальнейшего ограничения тесселяции.

0

По вопросам рекламы [email protected]