Мне дан контур / граница вогнутого многоугольника, который не может иметь отверстий, и мне нужно применить к нему карту высот. Для этого мне нужно выполнить почти равномерную тесселяцию многоугольника следующим образом:
.
Как я могу выполнить эту тесселяцию? В идеале решение может параметризовать «разрешение» внутренних вершин для настройки детализации тесселяции.
Я использую OpenSceneGraph, так что, если это каким-то образом возможно, используя его встроенную библиотеку тесселяции, это было бы идеально, но я открыт для введения дополнительной (надеюсь, легкой) зависимости, если это необходимо.
Очень хорошо ! Вы когда-нибудь задумывались об использовании геометрического шейдера для этого? 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:
Этот вопрос не вызвал большого интереса, но я добился довольно хороших результатов, используя трудный для Google Треугольник библиотека.
Если бы я решил, что хочу, чтобы триангуляция была строго равномерной внутри многоугольника, я, вероятно, мог бы предоставить треугольнику набор вершин для дальнейшего ограничения тесселяции.