Я использую libIGL для генерации тет-сетки, и хотел бы визуализировать эту сетку с помощью цветов. Каждая вершина имеет свое значение (результат использования графа лапласиана для минимизации квадратичной энергии), и эти значения были преобразованы в цвета с использованием igl::jet
, Я хотел бы «нарезать» мою тет-сетку при разных значениях z, и следовал Пример 605 сделать это.
Когда это визуализируется, цвета все в порядке, но затенение все неправильно (как видно на рисунке ниже). Есть ли (простой) способ исправить затенение? Я пытался использовать оба bfs_orient а также Эмбри :: reorient_faces_raycast но безрезультатно.
Чтобы воспроизвести проблему, просто строки 52-54 примера 605 должны быть:
Eigen::VectorXd C = V_temp.col(2);
Eigen::MatrixXd Col;
igl::jet(C, true, Col);
viewer.data.clear();
viewer.data.set_mesh(V_temp,F_temp);
viewer.data.set_colors(Col);
viewer.data.set_face_based(false);
Изменить: я могу выключить освещение, добавив
viewer.core.lighting_factor = 0;
Полученное изображение:
Тем не менее, это не имеет никакого освещения, и я не могу не чувствовать, что есть лучший способ сохранить освещение. Возможно что-то, что выставляет OpenGL_Shader?
Задача ещё не решена.
Других решений пока нет …