Трассировка лучей (ray tracing), иногда называемая также испусканием лучей (ray casting), представляет собой похожий, но более мощный подход к визуализации сцен. На рис. 14.1 показана его основная идея. Будем рассматривать буфер кадров как простой массив из пикселов, расположенных в пространстве, и пусть глаз смотрит на сцену через этот буфер. Для каждого пиксела из буфера кадров задается вопрос: «Что именно „видит" глаз через этот пиксел?» Можно представить себе также луч света, идущий до глаза из некоторой точки Р на сцене через пиксел.
В действительности данный процесс происходит в обратном порядке. Луч исходит из глаза, проходит через центр пиксела и движется далее на сцену. Его путь прослеживается, чтобы увидеть, с каким объектом он соударяется первым и в какой точке. Отметим, что при таком процессе проблема невидимых поверхностей решается автоматически, поскольку первая поверхность, с которой соударяется луч, и есть ближайшая к глазу; более удаленных поверхностей он никогда не достигнет. Имея описания источников света на сцене, к точке первого соударения можно применить уже известную модель закрашивания, для чего
Введение в трассировку лучей
нужно вычислить все компоненты света - фоновый, диффузный и зеркальный. Результирующий цвет затем отображается в данном пикселе. Поскольку траектория луча прослеживается по всей сцене, нетрудно добавить интересные визуальные эффекты, такие как затенение, отражение и преломление, что приводит к изображениям поразительной реалистичности, которые трудно получить другим способом.
Рис. 14.1. Просмотр точки на сцене через пиксел Еще одна особенность трассировки лучей - возможность работы с более обширным классом геометрических объектов, чем полигональные сетки. Объемные тела конструируются из разнообразных геометрических примитивов, таких как сферы, конусы и цилиндры. Каждая такая форма не аппроксимируется многогранником, а описывается точным математическим выражением. Для упрощения работы со сложными сценами эти формы также могут быть подвергнуты различным преобразованиям. Например, их размер и ориентация до добавления в сцену могут быть изменены.