Конспект лекций по компьютерной графике. Конспект лекций по дисциплине Компьютерная графика
Скачать 16.3 Mb.
|
8.5 Трассировка лучейМетоды трассировки лучей (RayTracing) на сегодняшний день считаются наиболее мощными и универсальными методами создания реалистичных изображений. Известно много примеров реализации алгоритмов трассировки для качественного отображения самых сложных трехмерных сцен. Можно отметить, что универсальность методов трассировки в значительной мере обусловлена тем, что в их основе лежат простые и ясные понятия, которые отражают наш опыт восприятия окружающего мира. Рис. 8.12. Модели отражения: а – идеальное зеркало, б - неидеальное зеркало, в – диффузное, г – сумма диффузного и зеркального, д – обратное, е - сумма диффузного, зеркального и лбратного Как мы видим окружающую реальность? Во-первых, нужно определиться с тем, что мы вообще способны видеть. Это изучается в специальных дисциплинах, а до некоторой степени, это вопрос философский. Но здесь мы будем считать, что окружающие объекты обладают такими свойствами относительно света:
Рис. 8.13. Излучение – а – раномерно во все тороны, б - направленно Каждое из этих свойств можно описать некоторым набором характеристик. Например, излучение можно охарактеризовать интенсивностью, направленностью, спектром. Излучение может исходить от условно точечного источника (далекая звезда) или от источника рассеянного света (скажем, от расплавленной лавы, извергающейся из кратера вулкана). Распространение излучения может осуществляться вдоль довольно узкого луча (сфокусированный луч лазера) или конусом (прожектор), или равномерно во все стороны (Солнце), или еще как-то. Свойство отражения (поглощение) можно описать характеристиками диффузного рассеивания и зеркального отражения. Прозрачность можно описать ослаблением интенсивности и преломлением. Распределение световой энергии по возможным направлениям световых лучей можно отобразить с помощью векторных диаграмм, в которых длина векторов соответствует интенсивности (рис. 8.12 – 8.14). В предшествующих параграфах мы с вами уже ознакомились с видами отражения, которые упоминаются наиболее часто — зеркальным и диффузным. Реже в литературе поминается обратное зеркальное или антизеркальное отражение, в котором максимум интенсивности отражения соответствует направлению на источник. Обратное зеркальное отражение имеют некоторые виды растительности на поверхности Земли, наблюдаемые с высоты рисовые поля. Два крайних, идеализированных случая преломления изображены на рис. 8.13. Некоторые реальные объекты преломляют лучи намного более сложным образом, например, обледеневшее стекло. Один и тот же объект реальной действительности может восприниматься как источник света, а может, при ином рассмотрении, считаться предметом, только отражающим и пропускающим свет. Например, купол облачного неба в некоторой трехмерной сцене может моделироваться в виде протяженного (распределенного) источника света, а в других моделях это же небо выступает как полупрозрачная среда, освещенная со стороны Солнца. Рис. 8.14. Преломление а – идеальное, б - дифузное В общем случае каждый объект описывается некоторым сочетанием вышеперечисленных трех свойств. В качестве упражнения попробуйте привести пример объекта, который обладает одновременно тремя указанными свойствами — сам излучает свет и, в то же время, отражает, а также пропускает свет от других источников. Вероятно, ваше воображение подскажет и другие примеры, нежели, скажем, раскаленное докрасна стекло. Теперь рассмотрим то, как формируется изображение некоторой сцены, которая содержит несколько пространственных объектов. Будем считать, что из точек поверхности (объема) излучаемых объектов выходят лучи света. Можно назвать такие лучи первичными — они освещают все другое. Важным моментом является предположение, что световой луч в свободном пространстве распространяется вдоль прямой линии (хотя в специальных разделах физики изучаются также и причины возможного искривления). Но в геометрической оптике принято, что луч света распространяется прямолинейно до тех пор, пока не встретится отражающая поверхность или граница среды преломления. Так будем полагать и мы. От источников излучения исходит по разным направлениям бесчисленное множество первичных лучей (даже луч лазера невозможно идеально сфокусировать — все равно свет будет распространяться не одной идеально тонкой линией, а конусом, пучком лучей). Некоторые лучи уходят в свободное пространство, а некоторые (их также бесчисленное множество) попадают на другие объекты. Если луч попадет в прозрачный объект, то, преломляясь, он идет дальше, при этом некоторая часть световой энергии поглощается. Подобно этому, если на пути луча встречается зеркально отражающая поверхность, то он также изменяет направление, а часть световой энергии поглощается. Если объект зеркальный и одновременно прозрачный (например, обычное стекло), то будут уже два луча — в этом случае говорят, что луч расщепляется. Можно сказать, что в результате воздействия на объекты первичных лучей возникают вторичные лучи. Бесчисленное множество вторичных лучей уходит в свободное пространство, но некоторые из них попадают на другие объекты. Так, многократно отражаясь и преломляясь, отдельные световые лучи приходят в точку наблюдения — глаз человека или оптическую систему камеры. Очевидно, что в точку наблюдения может попасть и часть первичных лучей непосредственно от источников излучения. Таким образом, изображение сцены формируется некоторым множеством световых лучей. Цвет отдельных точек изображения определяется спектром и интенсивностью первичных лучей источников излучения, а также поглощением световой энергии в объектах, встретившихся на пути соответствующих лучей. Рис. 8.15. Схема обратной трассировки лучей Непосредственная реализация данной лучевой модели формирования изображения представляется затруднительной. Можно попробовать разработать алгоритм построения изображения указанным способом. В таком алгоритме необходимо предусмотреть перебор всех первичных лучей и определить, какие из них попадают в объекты и в камеру. Потом выполнить перебор всех вторичных лучей, и также учесть только те, которые попадают в объекты и в камеру. И так далее. Можно назвать такой метод прямой трассировкой лучей. Практическая ценность такого метода вызовет сомнение. В самом деле, как учитывать бесконечное множество лучей, идущих во все стороны? Очевидно, что полный перебор бесконечного числа лучей в принципе невозможен. Даже если каким-то образом свести это к конечному числу операций (например, разделить всю сферу направлений на угловые секторы и оперировать уже не бесконечно тонкими линиями, а секторами), все равно остается главный недостаток метода — много лишних операций, связанных с расчетом лучей, которые потом не используются. Так, во всяком случае, это представляется в настоящее время. Метод обратной трассировки лучей позволяет значительно сократить перебор световых лучей. Метод разработан в 80-х годах, основополагающими считаются работы Уитте-да и Кэя. Согласно этому методу отслеживание лучей осуществляется не от источников света, а в обратном'направлении — от точки наблюдения. Так учитываются только те лучи, которые вносят вклад в формирование изображения. Рассмотрим, как можно получить растровое изображение некоторой трехмерной сцены методом обратной трассировки. Предположим, что плоскость проецирования разбита на множество квадратиков — пикселов. Выберем центральную проекцию с центром схода на некотором расстоянии от плоскости проецирования. Проведем прямую линию из центра схода через середину квадратика (пиксела) плоскости проецирования (рис. 8.15). Это будет первичный луч обратной трассировки. Если прямая линия этого луча попадает в один или несколько объектов сцены, то выбираем ближайшую точку пересечения. Для определения цвета пиксела изображения нужно учитывать свойства объекта, а также то, какое световое излучение приходится на соответствующую точку объекта. Рис. 8.16. Обратная трассировка для объектов, имеющих свойства зеркального отражения и преломления Если объект зеркальный (хотя бы частично), то строим вторичный луч — луч падения, считая лучом отражения предыдущий, первичный, трассируемый луч. Выше мы рассматривали зеркальное отражение и получили формулы для вектора отраженного луча по заданным векторам нормали и луча падения. Но здесь нам известен вектор отраженного луча, а как найти вектор падающего луча? Для этого можно использовать ту же формулу зеркального отражения, но определяя необходимый вектор луча падения как отраженный луч. То есть отражение наоборот. Для идеального зеркала достаточно потом проследить лишь очередную точку пересечения вторичного луча с некоторым объектом. Что означает термин "идеальное зеркало"? Будем считать, что такое зеркало имеет идеально равную отполированную поверхность, поэтому одному отраженному лучу соответствует только один падающий луч. Зеркало может быть затемненным, то есть поглощать часть световой энергии, но все равно выполняется правило: один луч падает — один отражается. Можно рассматривать также "неидеальное зеркало". Это будет означать, что поверхность неровная. Направлению отраженного луча будут соответствовать несколько падающих лучей (или наоборот, один падающий луч порождает несколько отраженных лучей), которые образуют некоторый конус, возможно, несимметричный, с осью вдоль линии падающего луча идеального зеркала. Конус соответствует некоторому закону распределения интенсивностей, простейший из которых описывается моделью Фонга — косинус угла, возведенный в некоторую степень. Неидеальное зеркало резко усложняет трассировку — нужно проследить не один, а множество падающих лучей, учитывать взнос излучения от других видимых из данной точки объектов. Если объект прозрачный, то необходимо построить новый луч, такой, который при преломлении давал бы предшествующий трассируемый луч. Здесь также можно воспользоваться обратимостью, которая справедлива и для преломления. Для расчета вектора искомого луча можно применить рассмотренные выше формулы для вектора луча преломления, считая, что преломление происходит в обратном направлении (рис. 8.16). Если объект обладает свойствами диффузного отражения и преломления, то, в общем случае, как и для неидеального зеркала, необходимо трассировать лучи, которые приходят от всех имеющихся объектов. Для диффузного отражения интенсивность отраженного света, как известно, пропорциональна косинусу угла между вектором луча от источника света и нормалью. Здесь источником света может выступать любой видимый из данной точки объект, способный передавать световую энергию. Если выясняется, что текущий луч обратной трассировки не пересекает любой объект, а направляется в свободное пространство, то на этом трассировка для этого луча заканчивается. Обратная трассировка лучей в том виде, в котором мы ее здесь рассмотрели, хотя и сокращает перебор, но не позволяет избавиться от бесконечного числа анализируемых лучей. В самом деле, данный метод позволяет сразу получить для каждой точки изображения один первичный луч обратной трассировки. Однако вторичных лучей отражения уже может быть бесконечное число. Так, например, если объект может отражать свет от любого другого объекта, и если эти другие объекты имеют довольно большие размеры, то какие именно точки излучающих объектов нужно учитывать для построения соответствующих лучей, например, при диффузном отражении? Очевидно, все точки. При практической реализации метода обратной трассировки вводят ограничения. Некоторые из них необходимы, чтобы можно было в принципе решить задачу синтеза изображения, а некоторые ограничения позволяют значительно повысить быстродействие трассировки. Примеры таких ограничений. 1. Среди всех типов объектов выделяются некоторые, которые назовем источниками света. Источники света могут только излучать свет, но не могут его отражать или преломлять (будем рассматривать только точечные источники света). 2. Свойства отражающих поверхностей описываются суммой двух компонентов — диффузного и зеркального. 3. В свою очередь, зеркальность также описывается двумя составляющими. Первая (reflection) учитывает отражение от других объектов, которые не являются источниками света. Строится только один зеркально отраженный луч rдля дальнейшей трассировки. Вторая составляющая (Specular) означает световые блики от источников света. Для этого направляются лучи на все источники света и определяются углы, образованные этими лучами с зеркально отраженным лучом обратной трассировки (r). При зеркальном отражении цвет точки поверхности определяется цветом того, что отражается. В простейшем случае зеркало не имеет собственного цвета поверхности. 4. При диффузном отражении учитываются только лучи от источников света . Лучи от зеркально отражающих поверхностей игнорируются. Если луч, направленный на данный источник света, закрывается другим объектом, значит, данная точка объекта находится в тени. При диффузном отражении цвет освещенной точки поверхности определяется собственным цветом поверхности и цветом источников света. 5. Для прозрачных (1гап5рагеп() объектов обычно не учитывается зависимость коэффициента преломления от длины волны. Иногда прозрачность вообще моделируют без преломления, то есть направление преломленного луча Iсовпадает с направлением падающего луча.
7. Для завершения трассировки вводят некоторое предельное значение освещенности, которое уже не должно вносить взнос в результирующий цвет, или ограничивают количество итераций. Согласно модели Уиттеда цвет некоторой точки объекта определяется суммарной интенсивностью I() = KaIa()C() + KdId()C() + KsIs() + KrIr() + KtIt() где λ - длина волны, С (λ) - заданный исходный цвет точки объекта, Ка, Kd, Ks, Kr и Кt — коэффициенты, учитывающие свойства конкретного объекта через параметры фонового подсвечивания, диффузного рассеивания, зеркальности, отражения и прозрачности, Ia - интенсивность фонового подсвечивания, Id - интенсивность, учитываемая для диффузного рассеивания, Is - интенсивность, учитываемая для зеркальности, Ir - интенсивность излучения, приходящего по отраженному лучу, It - интенсивность излучения, приходящего по преломленному лучу. Интенсивность фонового подсвечивания (1а) для некоторого объекта обычно константа. Запишем формулы для других интенсивностей. Для диффузного отражения Id = где Ii(λ) — интенсивность излучения i-roисточника света, θi — угол между нормалью к поверхности объекта и направлением на i-viисточник света. Для зеркальности: Id = где р - показатель степени от единицы до нескольких сотен (согласно модели Фонга), αi - угол между отраженным лучом (обратной трассировки) и направлением на г'-й источник света. Интенсивности излучений проходящих по отраженному лучу (Ir), а так же по преломленному лучу (It), умножают на коэффициент, учитывающий ослабление интенсивности в зависимости от расстояния, пройденного лучом. Такой коэффициент записывается в виде е-d где d - пройденное расстояние, – параметр ослабления, учитывающий свойства среды, в которой распространяется луч. Для первичного луча необходимо задать направление, которое соответствует избранной проекции. Если проекция центральная, то первичные лучи расходятся из общей точки, для параллельной проекции первичные лучи — параллельные. Луч можно задать, например, координатами начальной и конечной точек отрезка, координатой начальной точки и направлением, или еще как-нибудь. Задание первичного луча однозначно определяет проекцию изображаемой сцены. При обратной трассировке лучей любые преобразования координат вообще не обязательны. Проекция получается автоматически — в том числе, не только плоская, но и, например, цилиндрическая или сферическая. Это одно из проявлений универсальности метода трассировки. В ходе трассировки лучей необходимо определять точки пересечения прямой линии луча с объектами. Способ определения точки пересечения зависит от того, кокой это объект, и каким образом он представлен в определенной графической системе. Так, например, для объектов, представленных в виде многогранников и полигональных сеток, можно использовать известные методы определения точки пересечения прямой и плоскости, рассмотренные в аналитической геометрии. Однако, если ставится задача определения пересечения луча с гранью, то необходимо еще, чтобы найденная точка пересечения лежала внутри контура грани. Известно несколько способов проверки произвольной точки на принадлежность полигону. Рассмотрим две разновидности, в сущности, одного и того же метода (рис. 8.17). Первый способ. Находятся все точки пересечения контура горизонталью, которая соответствует координате Y заданной точки. Точки пересечения сортируются по возрастанию значений координат Х. Пары точек пересечения образуют отрезки. Если точка, которая проверяется, принадлежит одному из отрезков (для этого сравниваются координаты Х заданной точки и концов отрезков), то она – внутренняя. Рис. 8.17. Точка – внутренняя, если: а - точка принадлежит секущему отрезку, б – число пересечений нечетное Второй способ. Определяется точка, лежащая на одной горизонтали с испытуемой точкой, причем требуется, чтобы она лежала вне контура полигона. Найденная внешняя точка и испытуемая являются концами горизонтального отрезка. Определяются точки пересечения данного отрезка с контуром полигона. Если количество пересечений нечетное, это значит, что испытуемая точка – внутренняя. Если луч пересекает несколько объектов, то выбирается ближайшая точка по направлению текущего луча. Сделаем общие выводы о относительно метода обратной трассировки лучей. Положительные черты 1. Универсальность метода, его применимость для синтеза изображения довольно сложных пространственных схем. Воплощает много законов геометрической оптики. Просто реализуются разнообразные проекции. 2. Даже усеченные варианты данного метода позволяют получить довольно реалистичные изображения. Например если ограничится только первичными лучами( из точки проецирования), то это дает удаление невидимых точек. Трассировка уже одного – двух вторичных лучей дает тени, зеркальность, прозрачность. 3. Все преобразования координат (если таковые имеются) линейные, поэтому довольно просто работать с текстурами. 4. Для одного пиксела растрового изображения можно трассировать несколько близко расположенных лучей, а потом усреднять их цвет для устранения лестничного (ступенчатого) эффекта (антиалиасинг). 5. Поскольку расчет отдельной точки изображения выполняется независимо от других точек, то это может быть эффективно использовано при реализации данного метода в параллельных вычислительных системах, в которых лучи могут трассироваться одновременно. Недостатки 1. Проблемы с моделированием диффузного отражения и преломления 2. Для каждой точки изображения необходимо выполнять много вычислительных операций. Трассировка лучей принадлежит к числу самых медленных алгоритмов синтеза изображений. |