Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Реалистичная графика. Обратная трассировка луча



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

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

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

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

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

Итак, идея обратной трассировки лучей. Для определения цвета пиксела экрана через него из камеры проводится луч, ищется его ближайшее пересечение со сценой и определяется освещенность точки пересечения. Эта освещенность складывается из отраженной и преломленной энергий, непосредственно полученных от источников света, а также отраженной и преломленной энергий, идущих от других объектов сцены. После определения освещенности этой точки учитывается ослабление света при прохождении через прозрачный материал и в результате получается цвет точки экрана.Для определения освещенности, привносимой непосредственным освещением, из точки пересечения выпускаются лучи ко всем источникам света и определяется вклад всех источников, которые не заслонены другими объектами сцены. Для определения отраженной и преломленной освещенности из точки выпускаются отраженный и преломленный лучи и определяется привносимая ими освещенность. Алгоритм работы функции трассировки луча с началом o = (ox,oy,oz) инаправлением d = (dx,dy,dz), возвращающей, кстати, освещенность по всем трем цветовым компонентам, будет, таким образом, выглядеть примерно так:1. ищем ближайшее пересечение луча со сценой (определяем точку p, где произошло пересечение, выясняем, с каким конкретно объектом оно произошло)2. если не нашли, возвращаем 03. если пересечение есть, текущую освещенность полагаем равной фоновой освещенности (ambient)4. определяем вектор n, нормаль к объекту в точке пересечения для каждого (точечного) источника света5. считаем вектор l, соединяющий источник и точку p (начало в p)6. ищем пересечение луча с началом в точке p и направлением d со сценой7. если нашли, прекращаем обработку этого источника, так как его не видно8. считаем симметричный l относительно n вектор r9. считаем по уравнению Фонга (оно использует n, l, r, d) освещенность в точке за счет этого источника света, добавляем ее к текущей10. считаем симметричный d относительно n вектор refl, то есть отраженный вектор11. трассируем отраженный луч (с началом p и направлением refl), добавляем полученную освещенность к текущей12. считаем направление преломленного луча (вектор refr) по d, n и коэффициентам преломления13. трассируем преломленный луч (с началом p и направлением refr), добавляем полученную освещенность к текущей14. покомпонентно умножаем текущую освещенность на цвет объекта15. если для материала, заполняющего пройденную лучом от o до p трассу beta!= 0, умножаем текущую освещенность на коэффициент ослабления16. возвращаем текущую освещенность

Простейшей моделью освещенности является модель Уиттеда, согласно которой световая энергия, покидающая точку в направлении вектора г, определяется формулой где ka, kd,ks- веса фонового, диффузного и зеркального освещения;

kr, kt - веса отраженного и преломленного лучей;

С(l) - цвет объекта в точке Р;

n- вектор нормали в точке Р;

l j- направление на j-e источник света;

Ij(l) - цвет j-ro источника света;

b r , b t - коэффициенты ослабления для сред, содержащих отраженный и

преломленный лучи;

dr, dt - расстояния от точки Р до ближайших точек пересечения отраженного и

преломленного лучей с объектами сцены;

hj - вектор, задаваемый формулой

p - коэффициент Фонга.





Дата публикования: 2015-02-18; Прочитано: 426 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...