Метод трассировки лучей К алгоритмам построения изображений предъявляются два противоречивых требования: высокая производительность и качество построенного изображения. Алгоритмы полигональной графики удовлетворяют первому требованию и позволяют очень быстро получать достаточно реалистичные изображения трехмерных объектов. Но некоторые визуальные эффекты с трудом реализуются методами полигональной графики. К таким эффектам можно отнести: Взаимное затенение объектов Полупрозрачные объекты с эффектом преломления Множественные отражения Неточечные источники освещения и мягкие тени Диффузные отражения На рис. 1 представлены несколько таких эффектов: тени с размытой границей, отражающий объект и взаимное затенение объектов. Рис 1. Фотореалистичные эффекты В данной главе будет рассмотрен метод трассировки лучей, который отдает предпочтение не скорости построения изображения сцены, а физической точности строящегося изображения. Метод трассировки лучей является особенно эффективным при построении отражающих и преломляющих объектов. Объекты с матовой поверхностью, размытые тени и неточечные источники освещения лучше поддаются методам излучательности и фотонных карт, которые будут рассмотрены далее. Метод трассировки лучей, как и следует из его названия, основан на отслеживании распространения лучей света в трехмерной сцене с расчетом преломления и отражения на поверхности объектов. Еще в 1637 году Рене Декарт вручную выполнил трассировку лучей в капле воды согласно физическим законам для обоснования возникновения радуги. Перечислим основные понятия, с которыми будет работать метод трассировки лучей. Камера – задает положение и ориентацию наблюдателя в пространстве, направление взгляда и параметры картинной плоскости. Сцена – совокупность всех видимых объектов и источников освещения. Объекты – сущности, изображения которых мы строим. Каждый объекты является некоторым трехмерным телом или поверхностью в трехмерном пространстве, для которого мы можем находить точку пересечения заданного луча с поверхностью объекта. С каждым объектов связан материал. Материал определяет свойства объекта, а именно: цвет и текстуру поверхности, возможные возмущения поля нормалей на поверхности, степень прозрачности, отражающие и преломляющие свойства объекта. Источник освещения – в методе трассировки лучей мы будем рассматривать только точечные истоники освещения, испускающие световые лучи во всех направлениях. Также в методе трассировки лучей достаточно просто реализовать точечный источник света, испускающий лучи только в определенном направлении (“прожектор”). Прямая трассировка лучей Начнем с метода прямой трассировки лучей [raytrace.ppt\4]. Пусть наблюдатель смотрит на трехмерную сцену, состоящую из нескольких объектов и источников освещения. Источники освещения испускают лучи света, которые распространяются прямолинейно. Такие лучи мы будем называть первичными. Каждый первичный луч может: 1) Попасть в глаз наблюдателя или объектив камеры. Ясно, что этот луч вносит существенный вклад в изображение. Вклад данного луча полностью определяется такими характеристиками источника освещения, как цвет и яркость. 2) Не пересекаясь ни с одним из объектов сцены уйти в пространство. Такие лучи не вносят никакого вклада в строящееся изображение сцены. 3) Пересечься с одним из объектов сцены. Это самый интересный для нас случай. TODO: Показать 3 случая на рис. 2. В этом случае в точке пересечения первичного луча с поверхностью объекта возникают отраженный и преломленные лучи, называемые вторичными. Рис 2. Прямая трассировка лучей. Пусть каждого вторичного луча прослеживается (трассируется) в сцене. Снова оказываются возможны три варианта: 1) Вторичный луч может попасть в глаз наблюдателя или в объектив камеры. В этом случае вклад, вносимый в изображения зависит не только от источника освещения, из которого вышел луч, но и от объекта, пересечение с которым породило вторичный луч. 2) Вторичный луч может покинуть сцены не пересекаясь ни с одним из объектов и не внеся никакого вклада в строящееся изображение. 3) И, наконец, вторичный луч может пересечься с поверхностью какого либо объекта сцены, породив в точке перечения новые отраженные и преломленные лучи. Порожденные в точке пересечения лучи снова трассируются в сцене и для них снова оказываются возможны рассмотренные три случая. Таким образом метод прямой трассировки лучей порождает достаточно простой рекурсивный алгоритм построения изображения. Основным недостатком метода прямой трассировки лучей является его крайне низкая производительность, связанная с тем, что подавляющее большинство лучей не попадают в объектив камеры. Все затраты на отслеживание таких лучей оказываются ненужными. Обратная трассировка лучей Описанного выше недостатка лишен метод обратной трассировки лучей. Как и следует из его названия, он основан на отслеживании пути каждого луча, попавшего в глаз наблюдателя или объектив камеры в направлении, противоположном распространению света. Тем самым, рассматриваются лишь лучи, вносящие существенный вклад в изображение. В методе обратной трассировки лучей из точки расположения наблюдателя через каждый пиксел картинной плоскости в сцену выпускается первичный луч. Далее путь этого луча прослеживается в сцене, и снова оказываются возможными всего три варианта. 1) Луч не попадает ни в один объект или источник освещения. В этом случае цвет пикселя определяется исходя из общих свойств сцены и положения наблюдателя. Самый простой вариант – взять цвет пиксела равным заранее заданному цвету фона. 2) Луч попадает в источник освещения. Тогда цвет пикселя определяется свойствами источника освещения. 3) Луч пересекается с одним из объектов. Тогда в точке пересечения первичного луча с поверхностью объекта возникают два луча – отраженный и преломленный. Эти лучи трассируются в сцене и для них снова оказываются возможными лишь три данных варианта. Цвет пиксела, через который был выпущен первичный луч, определяется исходя из цветов, найденных для вторичных лучей рассмотрением одного их трех случаев, свойств поверхности объекта и расположения источников освещения. Таким образом, метод обратной трассировки порождает рекурсивный алгоритм, который последовательно, пиксель за пикселем, строит изображение сцены. При этом каждый первичный луч порождает несколько вторичных лучей в точке пересечения с поверхностью объекта. Каждый из вторничных лучей может порождать новые лучи и т.д. Можно считать, что первичный луч порождает дерево лучей, цвет узлов которого вычисляется от листьев к корневой вершине.