Окраска краев сетки в сетчатке

Я работаю над алгоритмом, который принимает сетку, делает с ней какие-то причудливые вещи и производит некоторый вывод.

Чтобы визуализировать результат, я решил создать копию сетки, покрасить ее по-умному, так или иначе связанному с производимым выходом, и визуализировать ее с помощью Meshlab. Тем не менее, мне нужно покрасить некоторые края сетки по-разному от других.

После поиска в течение нескольких часов я не смог найти способ сделать это, хотя форматы файлов (.obj,.ply...), похоже, поддерживают это поведение, как это было предложено этот учебник (который я выполнил для создания выходной сетки).

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

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

Любая помощь будет очень желанной. Спасибо заранее.

Ответ 1

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

Здесь идет: Возьмите исходную сетку, и для каждого края сделайте новую точку, которая является только серединой этого края. Подключите обе граничные вершины к этой средней точке, чтобы сформировать вырожденный треугольник нулевой области. Добавьте этот треугольник, и это указывает на файл сетки. Вы догадались, покрасьте эту новую вершину цветом края.

После того, как вы играете с настройками цвета фона meshlab, вы сможете увидеть решетчатую сетку достаточно хорошо.

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

Ответ 2

Поскольку OP упомянул, что MeshLab имеет положение для цветовых ребер с пользовательским выбранным цветом (тот же цвет для всех ребер) или с цветом вершины/лица (кромка, соединяющая вершины с другим цветом, будет иметь цвет градиента). Это можно сделать, включив рендеринг Wireframe и выбрав цвет края из параметров.

введите описание изображения здесь


Однако MeshLab не поддерживает рендеринг ребер с определенным атрибутом цвета края. Возможно, я ошибаюсь, но популярные простые форматы mesh, такие как obj и off, не имеют резерва для сохранения атрибутов края (цвет, толщина и т.д.). Я был под впечатлением ply также не поддерживает это, но ссылка, предоставленная OP, говорит иначе.

Единственное решение, о котором я могу думать, - написать рендеринг OpenGL для рисования линий вместо треугольников. И при написании сетки, пишите вершины для каждого края с назначенным им красным цветом, т.е. Если у вас есть 3 ребра, соединенные с вершиной, эта вершина будет повторяться три раза.