Свето- Тіньовий аналіз

Тіні виникають як результат екранування джерела світла предметами, що становлять сцену. При цьому існують повні тіні й півтіні, що пов'язане з фізичною природою світла: повна тінь утвориться в центральній частині затінення, а півтінь - поблизу її границь. У нашім курсі ми будемо стосуватися тільки повної тіні, хоча й існують технології зображення напівтіней, що супроводжуються більшим обсягом обчислень.

Якщо вважати, що спостерігач перебуває в одній крапці із джерелом світла, то тіні в спостережуваній сцені не виникають: затінюється область, що, є невидимою. У всіх інших випадках тіні видні. Джерело світла може перебувати на нескінченності або на кінцевій відстані, причому в другому випадку він може виявитися в поле зору спостерігача.

 

Рис. 12.1. Утворення тіней при кінцевій відстані до джерела світла

Для нескінченно вилученого джерела світла тіні на картинній площині виходять у результаті паралельної проекції об'єктів, а для близького джерела - центральної проекції. Об'єкти і їхні частини стають невидимими, якщо вони попадають в область тіні, тому при побудові зображення завдання про видалення невидимих областей вирішується двічі: щодо спостерігача в процесі проектування й щодо джерела світла. При визначенні розташування тіней будуються проекції невидимих з позиції джерела світла граней (неосвітлених) на картинну площину, у результаті чого виходять тіньові багатокутники. Ці багатокутники будуються для всіх об'єктів сцени й заносяться в список. Відзначимо, що тіньові багатокутники не залежать від положення спостерігача, тому при огляді сцен з різних точок зору вони будуються тільки один раз. Неосвітлені області визначаються тими ж методами, які були описані раніше в лекції 7, а для побудови проекцій використовуються методи, деякі з яких описані в лекції 8. Зокрема, можна застосовувати матриці проекцій в однорідній системі координат.

Уперше ідея сполученого аналізу видимості й затененности була запропонована в 1968 р. Аппелем. Як приклад розглянемо один алгоритм на основі порядкового сканування, що складає із двох основних етапів.

I. Аналіз сцени стосовно джерела світла. Для всіх багатокутників, отриманих у результаті проектування сцени, визначаються неосвітлені (затінені) ділянки й тіньові багатокутники (проекційні тіні), причому багатокутники утворять пронумерований список. Для цих багатокутників формується матриця , що дозволяє визначити, чи відкидає багатокутник тінь і які з багатокутників він може закривати. Якщо для деяких значень , то це означає, що багатокутник з номером може відкидати тінь на багатокутник з номером .

Таким чином, на цьому етапі основним є питання про ефективний алгоритм побудови такої матриці. Якщо проекція включає багатокутників, то необхідно розглянути "взаємини" пар багатокутників. Скоротити перебір можна за рахунок занурення об'єктів у прямокутні або сферичні оболонки або шляхом використання сортування по глибині.

II. Аналіз сцени стосовно спостерігача. Виконуються два процеси сканування. Перший - для визначення відрізків, видимих з позиції спостерігача (про нього розповідалося раніше в лекції 7). Другий - для визначення перетинань відрізків з тіньовими багатокутниками зі списку. Рекурсивний алгоритм другого сканування складається із чотирьох основних кроків.

Для кожного видимого відрізка

1. Якщо немає жодного тіньового багатокутника, то відрізок зображується з основною інтенсивністю.

2. Якщо багатокутник, що містить видимий відрізок, не перетинається з тіньовими багатокутниками, то відрізок зображується з основною інтенсивністю.

3. Якщо відрізок повністю закривається деякими тіньовими багатокутниками, то інтенсивність його зображення визначається з урахуванням затінення всіма цими багатокутниками.

4. Якщо кілька тіньових багатокутників частково закривають відрізок, то він розбивається на ряд відрізків крапками перетинання з тіньовими багатокутниками.

Цей алгоритм припускає, що затінення не абсолютне, тобто затінені ділянки все-таки є видимими, тільки їхня освітленість падає залежно від кількості й освітленості багатокутників, що затінюють. При повнім затіненні в третьому пункті алгоритму відрізок стає повністю невидимим, а в четвертому подальшому аналізу піддаються тільки незатінені відрізки.

Способи розрахунку інтенсивності при неповнім затіненні можуть бути різні. У цьому випадку всі затінені багатокутники мають свою інтенсивність залежно від обраної моделі освітленості. При цьому можна враховувати відстань затіненої ділянки від поверхні, що відкидає тінь.

Ще один алгоритм, часто застосовуваний при побудові тіней, зветься методу тіньового буфера. Він будується на основі методу Z-Буфера, описаного в лекції 7. Тіньовий буфер - це той же Z-Буфер, тільки з погляду джерела світла. Таким чином, використовуються два буфери: один - для відстані від картинної площини до крапок зображуваної сцени, а іншої - для відстаней від цих же крапок до джерела світла. Алгоритм дозволяє зображувати сцени з повним затіненням і зводиться до двох основних етапів:

1. Cцена розглядається із крапки розташування джерела світла у відповідній системі координат. Підсумком побудови є повністю заповнений тіньовий буфер.

2. Сцена розглядається з погляду спостерігача, застосовується звичайний метод Z-Буфера з невеликим доповненням. Якщо крапка є видимою в цій системі координат, то обчислюються її координати в системі, пов'язаної із джерелом світла - , потім перевіряється, чи є крапка видимої із цієї позиції. Для цього значення рівняється зі значенням, що втримується в тіньовому буфері для цієї крапки, і у випадку видимості значення інтенсивності заноситься в буфер кадру в крапці .

Обоє наведених алгоритму працюють у просторі зображення, тобто мають справа із проекціями на площину й деяку додаткову інформацію про крапки сцени, що відповідають цим проекціям. Існують алгоритми, що працюють у тривимірному об'єктному просторі. Зокрема, для побудови тіней використовуються модифікації алгоритму Вейлера-Азертона, описаного в лекції 7. Модифікація полягає в тім, що, як і у випадку тіньового буфера, завдання видалення невидимих граней вирішується спочатку з позиції джерела світла, а потім отримана інформація про об'єкти використовуються при побудові зображення з позиції спостерігача. Загалом кроки алгоритму можна описати так:

1. Визначаються грані, видимі із крапки розташування джерела світла. З метою підвищення ефективності запам'ятовується інформація тільки про видимі грані. Оскільки аналіз виконується в системі координат, пов'язаної із джерелом світла, те отримані видимі багатокутники потім заново приводяться до вихідної системи координат. Багатокутники зв'язуються із гранями, яким вони належать (у результаті затінення одна грань може містити кілька багатокутників).

2. Сцена обробляється з положення спостерігача. При зображенні видимої грані враховуються тільки ті багатокутники, які входять у список, отриманий на першому етапі, тобто грань розглядається як сукупність таких багатокутників.

При наявності декількох джерел світла кількість освітлених ділянок природно збільшується.








Дата добавления: 2015-04-03; просмотров: 1107;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.