2010-09-13 5 views
3

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

В OpenGL, если я использую «гладкую» модель затенения, то, если я создаю многоугольник и даю каждой вершине другое значение, то он автоматически интерполирует (линейно) между значениями в вершинах, чтобы получить значения цвета в точках интерьера. Но это просто дает линейную функцию в каждой ячейке, и я хочу, чтобы это была нелинейная функция, которую я указываю. Есть ли способ сделать это?

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

ответ

7

вы можете либо использовать пиксельные шейдеры, если у вас есть опыт в GLSL (or the time to learn it), или сделать ваши значения скалярных к текстуре и texture-map ваших треугольников с ним.

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

Редактировать

Я нашел документ, касающийся этой конкретной проблемы: http://mgarland.org/files/papers/perpixel.pdf

Смежные вопросы