Быстрый переход к готовым работам
|
Моделирование световых и теневых эффектовМоделирование световых и теневых эффектов Дальнейшее развитие трехмерной графики направлено на освоение методов реалистичной визуализации пространственных сцен. К таким методам относятся модели формирования световых и теневых эффектов. Свет - это очень сложная система, чтобы смоделировать ее в совершенстве. Именно поэтому мы редко можем видеть созданные компьютером трехмерные изображения, которые были бы по настоящему фотореалистичны. Во всех слу-чаях, чем сложнее и реалистичнее создаваемая вами виртуальная сцена, тем больше вычислений вы должны произвести, и тем медленнее она будет воспро-изводиться на экран. Из существующих в настоящее время алгоритмов формирования световых эффектов выделяются методы Radiosity [52-54] и Photon mapping [55-57]. Обе технологии позволяют выполнить точное фотометрическое моделирование освещения в сцене. Использование такого подхода позволяет синтезировать высокореалистичные изображения. Однако оба метода имеют следующие недо-статки: для повышения реализма изображения сцену необходимо разбивать на более мелкие участки, что влечет за собой резкое увеличение объема данных, необходимых для визуализации; в случае перемещения источников света или объектов относительно источника света необходимо инициализировать новые исходные данные для синтеза изображения, что невозможно выполнить в ре-альном времени и делает невозможным использование Radiosity и Photon mapping в СВ тренажеров транспортных средств. В настоящее время существует довольно много методов синтеза изображе-ния теней [1,2,58-67], а так же синтеза изображения теней в реальном времени [58-67], каждый имеет свои преимущества и недостатки. Выбор алгоритма за-висит от требований и специфики графического приложения. Рассмотрим ос-новные подходы: - карты освещения (Lightmaps); - метод проекции вершин (Projected geometry); - теневые объемы (Shadow volumes); - теневые буферы (Shadow buffers); - теневые карты (Depth incorrect Shadow maps); - буферы ObjectID / приоритетов. Карты освещения. В том или ином виде карты освещения (Lightmaps) [58] используются практически во всех современных 3D-приложениях. Этот метод применяется для создания не только теней, но и всего освещения сцены. Осве-щение генерируется для статической геометрии до начала операции синтеза изображения, и во время синтеза в основном не изменяется. Современные вы-числительные средства не позволяют реализовать динамическое освещение с использованием карт освещения по причине большой ресурсоемкости процесса создания непосредственно самих карт. Этот подход является базовым для большинства других алгоритмов синтеза теней в реальном времени. Однако он имеет недостатки: алгоритм работает только со статической геометрией, карты освещения занимают довольно большой объем памяти, но во время синтеза ал-горитм чрезвычайно эффективен. Метод проекции вершин. В настоящее время для создания теней в реаль-ном времени чаще всего используется метод проекции вершин (Projected geom-etry) [59]. Алгоритм относится к аналитическим. Предполагается, что множество небольших объектов отбрасывают тени на малое количество больших плоских объектов. Конечно, это выполняется далеко не во всех случаях: с помощью этого алгоритма нельзя рисовать все тени сцены, лишь самые важные. Основная идея алгоритма - проектирование объекта из точки положения источника света на приемник теней. Метод хорош тем, что не имеет проблем со ступенчатостью тени и использует вычислительные ресурсы меньше, чем остальные алгоритмы. Однако, как сказано ранее, предполагается, что в сцене существует не так много больших затеняемых объектов. С ростом количества или сложности затеняемых объектов алгоритм быстро становится неприемлемым из-за интенсивного ис-пользования вычислительных ресурсов. Теневые объемы. Метод теневых объемов (Shadow volumes) также отно-сится к аналитическим, и основан на представлении затененного пространства полигональным многогранником. Многогранник генерируется на этапе препро-цессинга путем проектирования каждого ребра минимального силуэта объекта вдаль от источника света [60-64]. К преимуществам этого алгоритма следует отнести намного большую по сравнению с методом проектирования вершин - производительность больше не зависит от сложности и количества приемников тени, тень может падать на сколь угодно сложную поверхность. Как и у всех аналитических алгоритмов, у теневых объемов нет проблем с алиайсингом. Од-нако, данный алгоритм для генерации всех теней сложной сцены в реальном времени слишком требователен к ресурсам, и, коме того, размеры структур данных для любой достаточно сложной сцены могут достигать сотен мегабайт. Алгоритм может существенно замедляться при приближении к теневому объему. Невыпуклые объекты не будут отбрасывать тени сами на себя. Теневые буферы. Алгоритм, использующий теневые буферы (Shadow buffers) [65], основан на том, что затененная область не видна с позиции источ-ника света. Для начала сцена просчитывается из положения источника света во внеэкранный буфер. Сохраненные во внеэкранный буфер данные позволят про-верить точка на факт затенения. В буфере хранятся расстояния всех ближайших к источнику света точек. Любая точка, находящаяся дальше соответствующей точки в теневом буфере, будет в тени. Преимущества: алгоритм не зависит от сложности геометрии сцены, поддерживает самозатенение. Качество генериру-емых теней можно просто регулировать: для более мощного аппаратного обес-печения можно использовать теневые буферы большего разрешения и глубины. Недостатки: алгоритм подвержен алиайсингу, для каждого источника света требуется отдельный проход по сцене, плохо работает для точечных источников. Теневые карты. Алгоритм, основанный на использовании карт теней (Depth incorrect Shadow maps) [66]. Для каждой пары "источник света - объект" создается текстура. Сначала текстура очищается белым цветом, потом на нее из точки положения источника света рисуется затеняющий объект (черным цве-том). В результате получается теневая карта, которую необходимо спроектиро-вать на все приемники теней. Преимущества: очень простой алгоритм, сравни-тельно быстрая генерация теней для небольшого количества объектов, необхо-дима только одна дополнительная прорисовка для каждого затеняющего объек-та. Этот алгоритм имеет проблемы с алиайсингом, но допускает простое и де-шевое их решение путем билинейной фильтрации теневой карты. Недостатки: затеняющие объекты не отбрасывают тени сами на себя - если рассматривать объекты как приемники теней, то они будут полностью затеняться своей же те-невой картой. Поэтому на объекты нельзя проектировать их тени. Эта проблема существенна только для сложных, невыпуклых объектов. Другой недостаток заключается в том, что для каждой пары "объект - источник света" необходима своя текстура, что ограничивает возможное количество таких пар. При измене-нии ориентации затеняющего объекта относительно источника света необходим пересчет теневой карты. Метод годится для генерации теней лишь для не-скольких объектов сцены. Буферы идентификаторов. Этот алгоритм [67] похож на алгоритм теневых буферов, описанный ранее. Перед рендерингом сцены из источника света каждому объекту присваивается уникальный номер (идентификатор), который зависит от расстояния от объекта до источника света. Под объектом здесь по-нимается геометрия, которая отбрасывает тени на другие объекты, но не на себя. То есть объектом может быть единичный полигон, выпуклый объект или его часть. Недостатки алгоритма: невыпуклые объекты не самозатеняются; как и у метода теневых буферов, существуют проблемы с алиайcингом. В результате получаются четкие, ступенчатые тени. Ни один алгоритм не решает проблему теней для достаточно сложных сцен полностью. Главным ограничением на этом пути является недостаточная производительность современных компьютеров. При текущем уровне развития аппаратного обеспечения возможно рисование только небольшой части всех теней сцены динамически. |
|