Уравнения переноса. Алгоритмы трассировки лучей.
Методы закраски (заливки), которые обсуждались в предыдущем параграфе, позволили значительно увеличить реалистичность изображений, генерируемых компьютером, но все же им далеко до достижения фотореализма. Реальные объекты отбрасывают тени, когда освещаются ярким светом, и многие объекты отражают попадающий на них свет. Отраженный луч, в свою очередь, может освещать другие объекты или другие поверхности того же объекта. А некоторые тела целиком или полностью пропускают часть падающего света, который может снова освещать другие объекты. Ученые используют такие термины для описания этих процессов: отбрасывание теней, отражение и прохождение. Программа визуализации должна принимать в расчет эти явления, если надо получить фотореалистичные изображения.
Взаимодействие между этими явлениями очень сложно. Отдельная поверхность сцены может освещаться несколькими различными источниками. К счастью, существуют методы, которые позволяют компьютеру учитывать все эти формы освещения. Лучший из них - метод трассировки лучей, который сначала был придуман как средство для удаления невидимых поверхностей, а позднее расширен так, чтобы учитывались эффекты отбрасывания теней, отражения и пропускания света. Метод трассировки лучей - не последнее достижение в представлении фотореалистичных изображений (он тоже имеет свои недостатки и часто комбинируется с другими методами, чтобы получить еще более совершенные трехмерные изображения), но он достаточно близок к тому, чтобы создавать великолепные картинки, которые по качеству близки к фотографии. Самая большая проблема с этим методом то, что он очень медленный. Даже суперкомпьютеру могут потребоваться часы работы для экранизации сложной сцены с начала до конца. Та же операция может потребовать дней работы обычного персонального компьютера.
Метод трассировки лучей математически сложен, но прост концептуально. Что реально делает компьютер, так это отслеживает лучи света, идущие от источника в глаз. Когда выпускаются лучи как бы из глаза к источнику вместо того, чтобы идти от источников к глазу, то это называется обратной трассировкой (в отличие от первой - прямой). Обратная трассировка более эффективна, так как гарантирует, что число лучей, достигших глаза, будет точно таким же, как число пикселей изображения. Для того, чтобы представить этот процесс, считайте, что ваш экран монитора - это окно, через которое вы можете видеть трехмерную модель, нарисованную вашим компьютером. Мнимые линии, называемые лучами, проводятся из вашего глаза через каждый пиксель экрана и проецируются на модель. Каждый раз, когда луч пересекает некоторую поверхность в некоторой точке, из этой точки испускаются дополнительные лучи. Если поверхность отражающая, то генерируется отраженный луч. Если поверхность пропускает свет, то генерируется пропущенный луч, причем учитывается тот факт, что луч меняет направление, когда проходит из одной среды в другую. Это явление называется преломлением света. Некоторые поверхности одновременно и отражают, и пропускают лучи, и тогда испускаются оба вида лучей. Пути этих лучей отслеживаются по всей модели, и если лучи пересекают другие поверхности, то снова испускаются лучи. В каждой точке, где луч пересекает поверхность, рисуется луч тени из точки пересечения к каждому источнику света. Если этот луч пересекает другую поверхность перед тем, как достигнуть источника света, то на ту поверхность, с которой был послан луч, падает тень с поверхности, блокирующей свет. Математически, все эти лучи вместе с данными о физических характеристиках объектов модели (цвет, прозрачность, зеркальность и т.д.) позволяют компьютеру определить цвет и его интенсивность для каждой точки изображения.
Реализация механизма рендеринга всегда основывается на физической модели, основные идеи которой сравнительно просты для понимания, но сложны для применения. Как правило, конечное элегантное решение или алгоритм более сложны и содержат в себе комбинацию разных техник. Ключом к теоретическому обоснованию моделей рендеринга служит уравнение рендеринга. Все модели представляют собой какое-то приближённое решение этого уравнения.
Lo – количество светового излучения, исходящего из определённой точки в определённом направлении есть собственное излучение и отражённое излучение. Отражённое излучение есть сумма по всем направлениям приходящего излучения (Li), умноженного на коэффициент отражения из данного угла. Объединяя в одном уравнении приходящий свет с исходящим светом в одной точке, это уравнение составляет описание всего светового потока в заданной системе.
Один из недостатков обычного метода трассировки лучей в том, что рассматриваемые поверхности не имеют текстуры как реальные объекты. Они гладкие - иногда слишком гладкие. Для того, чтобы это скомпенсировать, программы трассировки лучей используют текстурные отображения или bump-mapping для того, чтобы придать шероховатость поверхностям модели. С помощью текстурного отображения получают изображение, где поверхность приобретает текстуру – дерева или мрамора, например. Эти методы извлекают пользу из того факта, что трассировка, как и другие методы закраски, использует в своих вычислениях нормаль. Bump-отображение возмущает поверхность объекта по определенному образцу, преобразуя гладкую поверхность так, что она выглядит шероховатой и неоднородной.
Алгоритм трассировки лучей может быть записан в виде следующей последовательности шагов.
1. При обратной трассировке всех лучей света, которые влияют на данный пиксель на экране, компьютер испускает воображаемый луч из глаза наблюдателя через этот пиксель и отслеживает его, пока он не пересечет объект
2. Из первой точки пересечения луча со сферой испускается отраженный луч. Поверхность непрозрачна, поэтому преломленные лучи не рисуем. Луч тени обозначает путь от точки пересечения к источнику света. Так как этот луч не пересекает другую непрозрачную поверхность, то источник света непосредственно влияет на интенсивность освещения в данной точке
3. Отраженный луч пересекает другой объект, на этот раз полупрозрачную сферу, которая отражает и пропускает свет. Испускаются отраженный и преломленный лучи вместе с теневым лучом, идущим к источнику света. Заметьте, как пропущенный луч меняет свое направление до и после вхождения в сферу, в соответствии с эффектом преломления
4. В этот раз точка, в которой луч пересекает сферу, не будет прямо освещена источником, потому что путь теневого луча преграждает непрозрачная поверхность. Если бы сцена содержала несколько источников света, то теневые лучи должны были бы быть пущены в каждый из них
5. Влияние всех лучей, сгенерированных явно или неявно с помощью начального луча, суммируется и результат определяет RGB-значение данной точки
6. Получается изображение в перспективной проекции и с удаленными невидимыми поверхностями. Это естественные результаты процесса трассировки и эти проблемы не требуют специального рассмотрения
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.