Теперь предположим, что некоторые поверхности обладают свойствами зеркального отражения (рис. 6.45). Тогда можно проследить дальнейший путь зондирующего луча после отражения от промежуточной поверхности и продолжать эту процедуру до тех пор, пока не выяснится, что луч
Рис. 6.44. Лучи от затененных поверхно стей
Закрашивание
ушел в бесконечность или попал в источник. Такую процедуру, очевидно, можно реализовать в виде рекурсивной и принимать во внимание поглощение света при каждом очередном отражении.
Особенно хорошие результаты дает метод трассировки лучей при формировании изображения сцен, насыщенных отражающими и преломляющими поверхностями. Используя базовую парадигму этого метода, будем отслеживать дальнейшую траекторию луча, который после "столкновения" с поверхностью частично поглощается, частично диффузно рассеивается, а оставшаяся часть энергии луча делится на две составляющие, из которых одна зеркально отражается, а вторая - преломляется. Если источник света видим из точки пересечения, то сначала нужно вычислить "вклад" от этого источника в освещенность анализируемой точки, используя для этого стандартную модель отражения. Далее нужно разделить трассируемый луч на два"images/tmpB6CA-282.png">
6.10. Глобальное тонирование Сама собой напрашивается идея организовать трассировку в виде рекурсивной процедуры, которая будет сама вызывать себя, как только выяснит, что анализируемый луч отражается или преломляется (см. упр. 6.16 и 6.17). Значительная часть вычислений при реализации трассировки лучей приходится на определение пересечения лучей с объектами сцены. По этой причине такой метод очень сложно реализовать при отображении сцен, насыщенных множеством криволинейных объектов. Поэтому большинство систем, в которых используется эта технология, работает исключительно с плоскими или квадратичными поверхностями. В главе 10 будет рассмотрена только часть сложностей, возникающих при решении задачи пересечения лучей с криволинейными поверхностями.