2012-03-27 2 views
3

ОБНОВЛЕНИЕ: Я ответил на свой вопрос о том, какую модель освещения использовать, но теперь мне нужно знать, как рассчитать коэффициенты Френеля для отраженных и передаваемых лучей.Как я могу комбинировать фонетическое освещение с диэлектрическим отражением/передачей Френеля реалистично?

У меня есть частично реализованный трассировщик лучей C++. Прямо сейчас освещение Фонга с лучами теней отлично работает. Я решил не иметь объектов с одним цветом плюс скалярные коэффициенты окружающего/диффузного/скалярного; каждый из трех коэффициентов имеет компоненты RGB, поэтому я могу реализовать такие материалы, как these. С другой стороны, у Lights есть один цвет RGB плюс скалярная диффузная и зеркальная интенсивность. Также есть один окружающий свет RGB.

В этот момент я мог бы также реализовать полностью диэлектрические объекты, которые отражают или передают весь свет, с долей отраженного до преломленного света, определяемого уравнениями Френеля. Однако, как я реалистично сочетаю отраженные и преломленные цвета с цветом Phong? Я хочу иметь слегка отражающий цветной пластик, полированное золото, идеальные зеркальные или стеклянные сферы, витражи, стеклянные стекла, прозрачные, но зеленые по краям и т. Д. Я планировал добавить коэффициенты отражения RGB и коэффициенты пропускания для каждого объекта и позволить дизайнеру сущности убедиться в том, что окружающая + диффузная + зеркальная + коэффициент отражения + коэффициент пропускания лежит в разумном диапазоне, но это кажется произвольным. Есть ли физический подход?

ответ

3

я нашел подходящую модель Illumination себя в documentation for .mtl files:

color = KaIa 
+ Kd { SUM j=1..ls, (N*Lj)Ij } 
+ Ks ({ SUM j=1..ls, ((H*Hj)^Ns)Ij Fr(Lj*Hj,Ks,Ns)Ij} + 
Fr(N*V,Ks,Ns)Ir}) 
+ (1.0 - Kx)Ft (N*V,(1.0-Ks),Ns)TfIt 

Это плотная и на самом деле имеет некоторые опечатки (как Kx и Ft), так что я исправил:

I = Ka * Ia 
+ Kd * [sum for each light: (N . L) * Il] 
+ Ks * [sum for each light: ((R . V)^Ps) * Fl * Il] 
+ Ks * Fr * Ir 
+ Kt * (1 - Ks) * Ft * It 

I := surface point's color 
V := ray direction 
P := surface point 
N := surface normal 
L := light's position - P 
R := L - 2 * (N . L) * P 
Ka := surface material's ambient coefficient 
Kd := surface material's diffuse coefficient 
Ks := surface material's specular coefficient 
Ps := surface material's shininess 
Kt := surface material's transmission coefficient 
Ia := ambient light color 
Il := light's color 
Ir := reflected ray's color 
It := transmitted ray's color 
Fl := light's Fresnel coefficient 
Fr := reflected Fresnel coefficient 
Ft := transmitted Fresnel coefficient 

Этот модель имеет смысл для меня, особенно после прочтения Lighting 101 - Отражательное отражение Фонга - это продуманный взлом для отражения источников света, поэтому естественно использовать тот же коэффициент для зеркальных бликов и отраженных лучей.

Есть еще одна вещь, которую я не понимаю. Если я не хочу беспокоиться о терминах Френеля, я могу установить Fl, Fr и Ft на 1. Если мне нужна эта дополнительная точность, как бы я вычислил их с точки зрения моих уже определенных переменных?

+0

За последний вопрос: Вам нужен показатель преломления материала для расчета значений Френеля для коэффициента отражения и коэффициента пропускания, насколько я знаю. Кроме того, ссылка на Lighting 101 больше не доступна. Изменить: документация для ссылки .mtl файлов также недоступна. – kleinfreund

+0

Обе ссылки ушли: (но хорошие исследования – muni764

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

  • Нет связанных вопросов^_^