logo
Навч Посібник з КомпГр _ 3

Візуалізація просторових реалістичних сцен Світло- тіньовий аналіз

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

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

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

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

II. Аналіз сцени стосовно спостерігача. Виконуються два процеси сканування.

Перший - для визначення відрізків, видимих з позиції спостерігача.

Другий - для визначення перетинань відрізків з тіньовими багатокутниками зі списку. Рекурсивний алгоритм другого сканування складається із чотирьох основних кроків.

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

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

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

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

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

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

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

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

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

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

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

Загалом кроки алгоритму можна описати так:

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

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

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

Основні визначення.

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

2. При поворотах системи координат нові координати крапок виходять шляхом множення матриці повороту на протилежний кут на вектор вихідних координат

3. Вейвлет-перетворення полягають в розкладанні сигналу (функції-зображення) по системі функцій, що мають локальний сплеск і швидко убувають на нескінченності

4. Текстура поверхні – це деталізація її будови, що враховує мікрорельєф і особливості фарбування.

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

6. Плоска грань у всіх крапках має однакову інтенсивність висвітлення, тому вона зафарбовується одним кольором. Таке зафарбовування називається плоским.

7. Видалення прихованих ліній у тривимірних зображеннях здійснюється методом Z-Буфера.

8. Якщо центр проекції перебуває в нескінченності (всі промені, що проектують, паралельні), то проекція буде ортографічною.

9. Відбиття може бути двох видів: дифузійне й дзеркальне.

10. Перетворення повороту для тривимірних зображень здійснюються для двох координат