Большинство лучей, испускаемых источником, не попадают в камеру, а значит, и не влияют на формируемое ею изображение. Следовательно, отслеживать все лучи не имеет никакого смысла - это значит впустую тратить время. Однако если изменить направление распространения лучей на противоположное, то совершенно очевидно, что в создании изображения "участвуют" только те из них, которые "испускает" центр проецирования с учетом рамки отсечения в картинной плоскости (рис. 6.43). Эти-то лучи и имеет смысл анализировать- их принято называть приведенными лучами (cast rays). При реализации метода трассировки рассматриваются лучи, проходящие через отдельные элементарные участки картинной плоскости, - чаще всего, отдельные пиксели. Каждый приведенный луч либо попадает на поверхность какого-нибудь объекта сцены, в том числе и источника света, либо уходит в бесконечность и теряется там. Пикселям, через которые проходят такие "потерянные" лучи, нужно присвоить цвет заднего плана. Для тех приведенных лучей, которые попали на какую-либо поверхность (будем пока что считать, все поверхности непрозрачны), нужно вычислить цвет точки пересечения с объектом. Если применить для этого модель Фонга, то сформируется точно такое же изображение, как и при использовании локальной модели. Но можно поступить и по-другому.

6.10. Глобальное тонирование

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

При трассировке лучей первым делом нужно проанализировать, освещена ли точка пересечения луча с поверхностью светом от какого-либо источника. Для этого вычисляются закрашивающие (shadow) или зондирующие лучи (feeler rays) (рис. 6.44), "исходящие" из этой точки поверхности в сторону каждого источника света. Если зондирующий луч по дороге "упирается" в какой-либо объект, свет от соответствующего источника не достигает этой точки поверхности и она оказывается в тени по отношению к этому источнику. Поэтому можно считать, что никаких вычислений, связанных с этим источником, для определения освещенности анализируемой точки выполнять не нужно. Если все объекты непрозрачны и в процессе анализа не рассматривается влияние отражения от поверхностей других объектов, то получится изображение, в котором в дополнение к тому, что сформировано по модели Фонга, появились еще и тени. Цена, которую придется заплатить за такое дополнение, - выполнение некой модификации алгоритма анализа невидимых поверхностей для каждой точки пересечения приведенных лучей с какими-либо поверхностями.


⇐ Предыдущая| |Следующая ⇒