Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: isidroalex от Июнь 22, 2010, 15:49



Название: Отрисовка и закраска методом Фонга
Отправлено: isidroalex от Июнь 22, 2010, 15:49
Ребята, интересует функция - которая будет выводить объект на экран, например куб. Но так, чтобы закраска поверхности - была моей функцией (мне нужно закрасить его по методу Фонга - если есть такая уже). С 3Д графикой не работал вообще...


Название: Re: Отрисовка и закраска методом Фонга
Отправлено: Igors от Июнь 22, 2010, 16:46
Ребята, интересует функция - которая будет выводить объект на экран, например куб. Но так, чтобы закраска поверхности - была моей функцией (мне нужно закрасить его по методу Фонга - если есть такая уже). С 3Д графикой не работал вообще...
Вероятно имеется ввиду phong shading. Закраска выполняется  для каждой точки:

Код:
float dot = L.x * N.x + L.y * N.y + L.z * N.z;      // dot product (diffuse cosine)
final_color,red = diffuse_color.red * dot * light.red;
final_color,green = diffuse_color.green * dot * light.green;
final_color,blue = diffuse_color.blue * dot * light.blue;

где:

L (x, y, z) - вектор из точки в источник света (длина = 1)
N (x, y, z) - вектор нормали (перпендикудяр) к поверхности (длина = 1)
light (r, g, b) - цвет источника света
diffuse_color (r, g, b) - изначальный цвет объекта (напр куба)  без учета освнщенности
final_color (r, g, b) - цвет объекта c учетом освнщенности

P.S. Конечнно, в обращении "ребята" нет ничего плохого. Но если собеседник на 20-30 лет старше - это может быть неуместно  :)