Опубликован: 20.10.2007 | Уровень: специалист | Доступ: свободно
Лекция 10:

Визуализация пространственных реалистических сцен

< Лекция 9 || Лекция 10: 1234

Глобальная модель освещения с трассировкой лучей

Мы уже касались ранее понятия трассировки лучей при описании алгоритмов удаления невидимых граней. Теперь рассмотрим аналогичную процедуру в применении к моделям освещения. В предыдущей главе были описаны модели освещенности от некоторого источника света без учета того, что сами объекты сцены освещают друг друга посредством отраженных лучей. Метод излучательности, разработанный для диффузной модели освещенности, уже учитывает этот фактор.

Глобальная модель освещенности способна воспроизводить эффекты зеркального отражения и преломления лучей (прозрачность и полупрозрачность), а также затенение. Она является составной частью алгоритма удаления невидимых поверхностей методом трассировки.

Если рассмотреть сцену, содержащую в числе прочих зеркальные и полупрозрачные поверхности (рис. 10.3), то изображение будет включать, во-первых, проекции самих объектов, освещенных одним или несколькими источниками света. В некоторых своих частях эти объекты будут искажены за счет преломления лучей в прозрачных и полупрозрачных телах. Во- вторых, часть объектов будет отражаться зеркальными поверхностями, и эти отражения появятся на проекциях зеркальных объектов. В изображенной на рис. 10.3 сцене точки на поверхности призмы C, \: D видны на картинной плоскости дважды: один раз - сквозь полупрозрачный параллелепипед в виде точек \widetilde{C},\:\widetilde{D}, а второй раз - как дважды отраженные невидимой поверхностью параллелепипеда и зеркалом C'',\: D''. Параллелепипед в данном случае частично обладает зеркальными свойствами.

Сцена, содержащая зеркальные и полупрозрачные поверхности

увеличить изображение
Рис. 10.3. Сцена, содержащая зеркальные и полупрозрачные поверхности

Глобальная модель освещения для каждого пикселя изображения определяет его интенсивность. Будем для простоты считать, что все источники света - точечные. Сначала определяется непосредственная освещенность источниками без учета отражений от других поверхностей (вторичная освещенность): отслеживаются лучи, направленные ко всем источникам. Тогда наблюдаемая интенсивность (или отраженная точкой энергия) выражается следующим соотношением:

I=k_0 I_0+k_d\sum_j I_j(\overrightarrow{n}\cdot\overrightarrow{l}_j)+k_r\sum_j I_j(\overrightarrow{s}\cdot\overrightarrow{r}_j)^\beta+k_r I_r+k_t I_t,
где

k_0 - коэффициент фонового (рассеянного) освещения;

k_d - коэффициент диффузного отражения;

k_r - коэффициент зеркального отражения;

k_t - коэффициент пропускания;

\overrightarrow{n} - единичный вектор нормали к поверхности в точке;

\overrightarrow{l}_j - единичный вектор, направленный к j -му источнику света;

\overrightarrow{s} - единичный локальный вектор, направленный в точку наблюдения;

\overrightarrow{r}_j - отраженный вектор \overrightarrow{l}_j ;

I_0 - интенсивность фонового освещения;

I_j - интенсивность j -го источника света;

I_r - интенсивность, приходящая по зеркально отраженному лучу;

I_t - интенсивность, приходящая по преломленному лучу.

В алгоритме удаления невидимых линий трассировка луча продолжалась до первого пересечения с поверхностью. В глобальной модели освещения этим дело не ограничивается: осуществляется дальнейшая трассировка отраженного и преломленного лучей. Таким образом, происходит разветвление алгоритма в виде двоичного дерева. Процесс продолжается до тех пор, пока очередные лучи не останутся без пересечений. Отражение и преломление рассчитываются по законам геометрической оптики, которые уже рассматривались в предыдущей главе.

Зеркальное отражение и преломление

Рис. 10.4. Зеркальное отражение и преломление

Пусть \overrightarrow{v},\overrightarrow{r},\overrightarrow{t} - направления падающего, отраженного и преломленного лучей (рис. 10.4), \overrightarrow{v}_1=\overrightarrow{v}/\cos(\theta_1), \overrightarrow{n} - единичная внешняя нормаль, \eta_1,\eta_2 - коэффициенты преломления сред, разделенных поверхностью. Тогда можно показать, что

\overrightarrow{r}_1=\overrightarrow{v}_1+2\cdot\overrightarrow{n}, \quad
\overrightarrow{t}_1=\kappa(\overrightarrow{n}+v_1)-\overrightarrow{n}, \quad\\
\kappa=(k_{\eta}^2\cdot|\overrightarrow{v}_1|^2-|\overrightarrow{v}|_1+\overrightarrow{n}^2)^{-1/2}, \quad
k_{\eta}=\frac{\eta_2}{\eta_1}.
Соответствующие единичные векторы получить нетрудно.

Двоичное дерево лучей можно строить по принципу "левое поддерево соответствует отраженному лучу, а правое - преломленному". После того как оно построено, можно вычислить интенсивность в точке. Для этого осуществляется обратный проход от вершин к корню, и при прохождении узлов интенсивность убывает.

Теоретически дерево может оказаться бесконечным, поэтому при его построении желательно задать максимальную глубину, чтобы избежать переполнения памяти компьютера.

Поскольку значительная часть лучей, исходящая от источников света и других поверхностей, не попадает в поле зрения наблюдателя, то отслеживать их все не имеет смысла. Поэтому для формирования изображения используется обратная трассировка, т. е. лучи отслеживаются в обратном порядке: от положения наблюдателя через все точки картинной плоскости к объектам и далее - по отраженным и преломленным лучам.

< Лекция 9 || Лекция 10: 1234
Сабина Бахриддинова
Сабина Бахриддинова
Дмитрий Трефилов
Дмитрий Трефилов