2016-07-26 4 views
0

Я использую OpenMesh для ретрансляции/управления некоторыми сетчатыми объектами. С помощью subdivide/decimate/smooth и других инструментов OpenFlipper я могу изменить топологию сетки.Есть ли способ перепрограммировать/интерполировать цвета вершин с помощью OpenMesh?

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

Есть ли способ сообщить OpenMesh о перепроектировании вершинных цветов обратно в старую сетку для интерполяции цвета вершин? Если нет, то что было бы хорошим способом сделать это вручную? Существует ли какое-либо состояние для вершинной проекции вершин?

ответ

2

В OpenFlipper с помощью requestTriangleBsp() вы можете запросить дерево BSP для вашего исходного меш-объекта. (Вам нужно будет сохранить копию исходной сетки, если вы хотите использовать это дерево BSP.) Всякий раз, когда вы хотите проецировать точку на исходную сетку, вы можете использовать функцию-член nearest() в дереве BSP, чтобы чтобы получить ближайшую грань к поставленной точке. После этого это всего лишь вопрос проецирования вашей точки на это лицо, вычисления барицентрических координат и интерполяции цветов вершин.

+0

Made my day. Работает как шарм. – Lake