Модель Ашихмина

advertisement
BRDF demo help
v1.1
Общее описание приложения
Назначение
Приложение BRDF demo предназначено для демонстрации основных современных техник
представления материалов на основе физических моделей с использованием двулучевой
функции отражательной способности (англ. Bidirectional reflectance distribution function — BRDF).
Рассматривается реализация этих техник в приложении к компьютерной графике реального
времени.
В приложении реализованы следующие техники (эффекты):
1. Модель Ламберта рассеянного света (Lambert diffuse only)
2. Модель бликов Фонга (Phong specular only)
3. Полная модель Фонга (Phong lighting ambient+diffuse+specular)
4. Модель Торренса-Спэрроу (Torrance-Sparrow)
5. Модель Блинна (Blinn)
6. Модель Кука-Торренса (Cook-Torrance gaussian distributionm, beckman distribution)
7. Модель Орена-Наяра (Oren-Nayar)
8. Модель Миннеарта (Minnaert)
9. HTSG (He,Torrance,Sillion,Greenberg)
10. Heidrich-Seidel
11. Модель Варда (Ward) (изотропный, анизотропный)
12. Модель Ашихмина-Ширли (Ashikhmin-Shirley)
Приложение имеет дружественный пользовательский интерфейс, использующий традиционные
элементы управления.
Требования к системе
Для корректной работы приложения компьютер должен удовлетворять следующим
минимальным требованиям:
Операционная система: Windows XP SP3
Процессор: Intel Pentium 4 или аналогичный
Оперативная память: 1 Gb
Видеокарта: с поддержкой Shader Model 3.0
Монитор: с поддержкой разрешения 1024*768 и выше
Описание интерфейса
Главное окно
Для начала работы с приложением запустите BRDFDemo.exe из основной папки.
Рисунок 1: главное окно программы
На рисунке 1 приведён вид главного окна приложения BRDF demo.
В левом верхнем углу располагаются основные элементы управления. С помощью ниспадающих
меню можно выбрать требуемую технику и трехмерную модель, на которой она будет
демонстрироваться.
Переключение эффектов
Для переключения используемых эффектов выберите необходимый в первом ниспадающем
меню. Эффект может иметь свои дополнительные настройки, интерфейс их настройки будет
доступен справа.
Рисунок 2: переключение эффектов
Переключение объектов
Для переключения между различными объектами, доступными для демонстрации, используйте
второе ниспадающее меню.
Доступные объекты: «Гном», «Полусфера», «Тор».
Рисунок 3: переключение объектов
Режим полусферы
Рисунок 4: Режим полусферы
В режиме полусферы визуализируется количество отражаемой энергии от данной точки О с
нормалью, перпендикулярной обозначенной красной сеткой плоскости (см рисунок 18), во всех
направлениях из этой точки. Визуализация производится по следующему принципу: для каждой
вершины полусферы с центром в точке О ее позиция сдвигается радиально пропорционально
значению выбранной BRDF: pos *= f(Light, View), где в качестве Light берется направление
источника света, а в качестве View – вектор от текущей вершины до точки О.
Управление сценой
Приложение позволяет поворачивать, удалять/приближать модель, а так же изменять
направление источника света.
Управление моделью
Для поворота зажмите левую кнопку и двигайте мышь до достижения требуемого положения
модели. После этого левую кнопку мыши можно отпустить.
Рисунок 5: поворот модели
Для приближения/удаления модели прокрутите колёсико мыши на требуемое количество
оборотов от себя/к себе.
Рисунок 6: приближение/удаление модели
Управление источником света
Текущее направление источника света показывает жёлтая стрелка.
Для изменения направления источника света зажмите правую кнопку мыши и двигайте мышь до
достижения требуемого положения модели. После этого левую кнопку мыши можно отпустить.
Рисунок 7: изменение направления источника света
Описание эффектов
Обозначения
𝑛⃗ − единичный вектор нормали в точке
𝑙 − единичный вектор направления на источник света
𝑟 − единичный вектор отражения луча от поверхности в точке
𝑣 − единичный вектор направления на камеру
⃗ =
ℎ
⃗
𝑙 +𝑣
⃗|
|𝑙 +𝑣
− биссектор векторов на источник света и камеру
cos 𝜃𝑙 = (𝑛⃗, 𝑙 ) − косинус угла между нормалью к поверхности в точке и направлением на
источник света.
cos 𝜃𝑣 = (𝑛⃗, 𝑣) − косинус угла между нормалью к поверхности в точке и направлением на
камеру
Модель Ламберта рассеянного света
Свет, падающий в точку, одинаково рассеивается по всем направлениям полупространства. Таким
образом, освещенность в точке определяется только плотностью света в точке поверхности, а она
линейно зависит от косинуса угла падения.
𝐼 = max(0, (𝑛⃗, 𝑙 ))
Рисунок 8: Ламберт
Модель бликов Фонга
Вектор отражения луча в точке вычисляется как: 𝑟 = 2(𝑛⃗, 𝑣 )𝑛⃗ − 𝑣
𝐼 = max(0, (𝑙 , 𝑟)𝑝 )
𝑝 −коэффициент блеска. Чем более гладкая поверхность, тем больше коэффициент. В программе
этому параметру соответствует слайдер SpecExp. Так же можно задать цвет бликов.
Рисунок 9: Фонг (только блики)
Полная модель Фонга
Global Illumination = Ambient Light + Diffuse Light + Specular Light
Ambient Lighting = Ca*[Ga + sum(Atti*Spoti*Lai)]
Ca
Material ambient color
Ga
Global ambient color
Atti
Light attenuation of the ith light
Spoti Spotlight factor of the ith light
Lai
Light ambient color of the i-th light
Diffuse Lighting = Cd*sum[Ld*(N.L)*Att*Spot]
Cd
Diffuse color
Ld
Light diffuse color
N
Vertex normal
L
Direction vector from object vertex to the light
Att
Light attenuation
Spot Spotlight factor
Рис. 4.4
Cosp(f) = (V,R)p
Рис. 4.5
H=L+N
( R,V ) p  ( N , H ) 4 p
Specular Lighting = Cs * sum[Ls * (N • H)P * Att * Spot]
Cs
Specular color
N
Vertex normal
H
Half way vector. See the section on the halfway vector
P
Specular reflection power. Range is 0 to +infinity
Ls
Light specular color
Att
Light attenuation value
Spot Spotlight factor
Рисунок 10: Фонг
Здесь тоже можно менять показатель степени бликовой компоненты и цвет бликов.
Модель Торренса-Спэрроу
𝐼=
DGF
π(𝑛⃗, 𝑣 )
В данной модели считается что угол между нормалью к микрограни и нормалью ко всей
поверхности является случайной величиной, подчиняющейся закону распределения Гаусса:
2
⃗)
𝐷𝐺𝑎𝑢𝑠𝑠 = 𝑐 × e−(cα) , 𝛼 = 𝑐𝑜𝑠 −1 (𝑛⃗, ℎ
За затенение отдельных микрограней отвечает функция
𝐺(𝑛, 𝑙, 𝑣, ℎ) = min(1,
⃗ )(𝑛⃗, 𝑣 ) 2(𝑛⃗, ℎ
⃗ )(𝑛⃗, 𝑙 )
2(𝑛⃗, ℎ
,
)
⃗)
⃗)
(𝑣 , ℎ
(𝑣 , ℎ
Коэффициент Френеля
𝐹=
1 (𝑔 − 𝑐)2
(𝑐(𝑔 + 𝑐) − 1)2
(1
+
)
2 (𝑔 + 𝑐)2
(𝑐(𝑔 + 𝑐) + 1)2
⃗)
𝑐 = (𝑣 , ℎ
𝑛𝑖
𝑔 = √( )2 + 𝑐 2 − 1
𝑛𝑓
Данная формула коэффициента Френеля не используется для моделирования. Аппроксимацию
данной формулы см. Cook-Torrance
Рисунок 11: Торренс-Спэрроу
Параметр Roughness характеризует распределение углов микрограней. Чем он больше, тем более
шероховатой кажется поверхность.
Модель Блинна
Еще одна модель, дающая бликовое освещение:
⃗ )𝑝 )
𝐼 = max(0, (𝑛⃗, ℎ
Рисунок 12: Блинн
𝑝 −коэффициент блеска. Чем более гладкая поверхность, тем больше коэффициент. В программе
этому параметру соответствует слайдер SpecExp. Так же можно задать цвет бликов.
Модель Кука-Торренса
Одной из наиболее продвинутых и согласованных с физикой является модель освещение КукаТорранса. Она также основана на модели поверхности состоящей из микрограней, каждая из
которых является идеальным зеркалом. Модель учитывает коэффициент Френеля и
взаимозатенение микрограней.
𝐼=
FGD
π(𝑛⃗, 𝑙 )(𝑛⃗, 𝑣 )
В данной модели (как и в модели Орен-Найара) считается что угол между нормалью к
микрограни и нормалью ко всей поверхности является случайно величиной, подчиняющейся
закону распределения Бэкмена(или Гаусса):
𝐷𝐵𝑒𝑐𝑘𝑚𝑎𝑛 =
e
−
tg2 θ
m2
𝑚2 cos4 (𝜃)
𝐷𝐺𝑎𝑢𝑠𝑠 = 𝑐 × e
θ
− 2
m
За затенение отдельных микрограней отвечает функция
𝐺(𝑛, 𝑙, 𝑣, ℎ) = min(1,
⃗ )(𝑛⃗, 𝑣 ) 2(𝑛⃗, ℎ
⃗ )(𝑛⃗, 𝑙 )
2(𝑛⃗, ℎ
,
)
⃗)
⃗)
(𝑣 , ℎ
(𝑣 , ℎ
Аппроксимация функция Френеля, которая отражает изменение интенсивности отраженного
specular компоненты света
𝐹 = 𝐹0 + (1 − (ℎ⃗, 𝑣 ))5 × (1 − 𝐹0 )
𝐹0 -коэффициент Френеля при нормальном падении
Рисунок 13: Кук-Торренс
Параметр Roughness характеризует распределение углов микрограней. Чем он больше, тем более
шероховатой кажется поверхность.
Модель Орен-Найара
Модель Орен-Найара основана на предположении, что поверхность состоит из множества
микрограней, освещение каждой из которых описывается моделью Ламберта. Модель учитывает
взаимное закрывание и затенение микрограней и также учитывает взаимное отражение света
между микрогранями.
𝐼 = cos(𝜃𝐿 ) (𝐴 + 𝐵𝑚𝑎𝑥(0, cos(𝜙𝑉 − 𝜙𝐿 )) sin(𝛼) 𝑡𝑔(𝛽))
Параметры модели определяются по следующим формулам:
𝐴 = 1 − 0.5
𝐵 = 0.45
𝜎2
𝜎 2 + 0.33
𝜎2
𝜎 2 + 0.09
Параметр отвечает за неровность поверхности, чем он больше, тем более неровной является
поверхность.
𝛼 = 𝑚𝑎𝑥 (𝑎𝑟𝑐𝑐𝑜𝑠(𝑣 , 𝑛⃗) , 𝑎𝑟𝑐𝑐𝑜𝑠(𝑙 , 𝑛⃗))
𝛼 = 𝑚𝑖𝑛(𝑎𝑟𝑐𝑐𝑜𝑠(𝑣 , 𝑛⃗) , 𝑎𝑟𝑐𝑐𝑜𝑠(𝑙 , 𝑛⃗)
𝛾 = cos(𝜙𝑉 − 𝜙𝐿 ) = ‖𝑣 − 𝑛⃗ × (𝑣 ∙ 𝑛⃗)‖‖𝑙 − 𝑛⃗ × (𝑙 ∙ 𝑛⃗)‖
Рисунок 14: Модель Орен-Найара
Roughtness соответствует параметру
.
Модель Миннеарта
Эта модель была предложена для моделирования освещения планет, также довольно хорошо она
подходит для моделирования некоторых видов ткани, например вельвета.
𝐼 = (𝑛⃗, 𝑙 )(1 − (𝑛⃗, 𝑣 ))1−𝑘
Рисунок 15: Минеарт
С помощью Exp можно менять параметр k. Так же можно меня базовую интенсивность света.
Heidriche-Seidel
Модель основана на модели Фонга. Используется для реалистичного моделирования волос,
хромированного металла и т.д.
𝑛
𝐼 = (sin(𝑙 , 𝑡) sin(𝑣 , 𝑡) − cos(𝑙 , 𝑡) cos(𝑣 , 𝑡))
𝑡 − тангент
Рисунок 16: Heidrich-Seidel
С помощью Exp можно менять параметр n. Так же можно меня цвет бликов.
Модель Варда
Изотропная
Еще одной достаточно простой моделью, поддерживающей блики, является изотропная модель
Ward. Бликовое освещение определяется по следующей формуле:
𝐼=𝑒
−𝑘
⃗ ,𝑛
⃗ )2
1−(ℎ
⃗ ,𝑛
⃗ )2
(ℎ
В этой формуле параметр k отвечает за неровность поверхности.
Рисунок 17: Вард изотропный
С помощью Roughness можно менять параметр k.
Анизотропная
Также существует анизотропный вариант модели освещения Варда, параметр k как и ранее
отвечает за неровность поверхности.
𝐼=𝑒
𝑡 − тангент
−(𝑘
⃗ ,𝑡) 2
(ℎ
)
⃗ ,𝑛
⃗)
(ℎ
Рисунок 18: Вард анизотропный
С помощью Roughness можно менять параметр k.
Модель Ашихмина-Ширли
Рисунок 19: Ашихмин-Ширли
Одной из наиболее сложных анизотропных моделей освещения является модель АшихминаШирли. Ниже приводятся формулы для расчета диффузной и бликовой компонент.
Слайдеры X coefficient и Y coefficient соответствуют nx и ny.
Download