Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

kniga

.pdf
Скачиваний:
224
Добавлен:
17.05.2015
Размер:
29.65 Mб
Скачать

z

z

P

P

Q

 

Q

x

x

а

б

Рис. 14.22. Тести перекриття многокутників

У випадку, коли жоден із тестів не виконався, міняємо місцями грані P, Q і знову провіряємо тести, аналогічні 3), 4), тобто

3) чи знаходиться грань Q і спостерігач по різні боки від площини, що проходить через грань P;

4) чи знаходиться грань P і спостерігач по один бік від площини, що проходить через грань Q .

Якщо на одне з цих питань отримана позитивна відповідь, то Q передує Р і грань Q буде виводитись раніше.

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

 

 

Зауваження 6. Методу сор-

 

 

тування за

глибиною

властивий

 

 

той самий недолік, що й методу

 

 

Z-буфера, а саме вимагається

 

 

виводити всі лицьові грані. Щоб

 

 

уникнути

цього,

розроблені

 

 

модифікації

методу,

де грані

 

 

Рис. 14.23. Циклічне перекриття

виводяться в зворотному порядку

многокутників

– від найближчих до найдальших,

 

 

але при цьому для чергової грані

необхідно зображати тільки ті пікселі, які ще не були виведені. Зауваження 7. Останнім часом з’явилися і більш прийнятні методи

розв’язування задач загороджування: метод ВSP-дерев, метод октодерев, метод порталів та ін.

281

Контрольні питання та завдання

1.Які ви знаєте алгоритми усунення невидимих ліній та граней? Як їх можна класифікувати?

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

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

4.Яку структуру даних вимагає алгоритм Робертса?

5.Як в алгоритмі Робертса визначаються нелицьові грані?

6.Як ще можна відсікти нелицьові грані?

7.В чому суть методу Z-буфера?

8.Назвіть недоліки та переваги алгоритму Z-буфера.

9.Як визначити зовнішні нормалі до граней многогранника?

10.Назвіть способи розміщення многокутника відносно вікна.

11.Які тести перевіряє алгоритм Варнока?

12.Як можна легко впорядкувати многокутники в 3D-просторі?

13.Які тести необхідно виконати в алгоритмі Ньюела-Санча?

14.Як перевірити, що грань Р і спостерігач знаходяться по різні боки від площини, що проходить через грань Q?

Вправи і задачі для самостійного виконання

1.Графік поверхні z = f(x, y) можна будувати у вигляді сітки з прямо-

кутних комірок, що формуються множиною значень {f(xi, yj), i = 1, 2, …, n; j = 1, 2, …, m }, елементи якої розраховуються з постійним приростом по х та у. В результаті одержується зображення, в якому необхідно усунути невидимі грані. Розробити алгоритм відображення такої сітки з усуненням невидимих граней.

2.Узагальнити алгоритм Z-буфера для знаходження перетину сцени площиною.

3.Розробити алгоритм Варнока для усунення невидимих ліній.

4.Для реалізації алгоритму Варнока необхідно мати методи визначення місцерозміщення многокутника відносно прямокутного вікна.

Розробити такі алгоритми. Вказівка. Узагальнити габаритний, променевий та кутовий тести на випадок прямокутного вікна.

5.Розробити тест визначення нормалі грані многогранника.

6.Розробити алгоритм перевірки тестів 3) та 4) в алгоритмі сортування за глибиною.

7.Написати програму виведення зображення тора на основі методу сортування за глибиною. Модифікувати алгоритм художника для усунення невидимих ліній.

282

Тема 15. Зафарбовування видимих поверхонь

Послідовність операцій для побудови високоякісних реалістичних 3D-зображень називається 3D-конвеєром.

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

На наступному етапі, виходячи з математичної моделі об’єкту, створюється зовнішній вигляд об’єктів у виді геометричних примітивів, тобто генерується його каркасна модель, що складається найчастіше з трикутників (більшість сучасних програм та прискорювачів працюють саме з ними).

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

Кінцевий зовнішній вигляд об’єкту формується на етапі, який називається рендерінгом. Рендерінг (від англ. ”rendering” – візуалізація) – це процес створення високореалістичних зображень 3D-об’єктів. Головною задачею цього етапу є оформлення каркасної моделі об’єктів у вигляді реалістичних поверхонь. Рендерінг умовно можна поділити на такі підетапи: растеризація, усунення невидимих граней та поверхонь, зафарбовування примітивів і фінальна обробка зображення як єдиного цілого.

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

Після виділення невидимих граней для створення реалістичних зображень наступною проблемою є зафарбовування видимих поверхонь, що обмежують побудовані об’єкти. Існує три простіших методи зафарбовування полігональних моделей: метод постійного зафарбовування, метод Гуро та метод Фонга.

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

Спочатку розглянемо деякі фізичні властивості та моделі освітлення.

283

15.1. Моделі відбиття світла

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

Енергія світла, що падає на поверхню від джерела світла, може бути частково поглинута, відбита або пропущена через поверхню. Кількість енергії, що поглинається, відбивається і пропускається залежить від довжини λ світлової хвилі. Якщо об’єкт поглинає повністю все падаюче світло, то він буде виглядати невидимим. У цьому випадку його називають абсолютно чорним тілом. Якщо поглинається майже все світло, то об’єкт виглядає чорним, а якщо поглинається тільки невелика частина світла, то сірим або білим. Об’єкт можна побачити тільки тоді, коли він відбиває або пропускає світло. Властивості відбитого світла, які визначають колір поверхні, залежать від форми і напрямку джерела світла, від орієнтації поверхні, на яку падає світло та від властивостей самої поверхні. Цей факт враховується в різних моделях освітлення. Світло, відбите від поверхні об’єкта, може бути дифузним (diffuse) та дзеркальним (specular). Дифузно відбите світло розсіюється рівномірно у всіх напрямках, дзеркальне відбиття відбувається вздовж одного променя.

Дійсна теорія світла є досить складною з теоретичної та обчислювальної точок зору, тому будуються спрощені моделі освітлення.

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

15.1.1. Дзеркальне відбиття світла

До дзеркальних відносяться скляні поверхні, оброблені металеві поверхні, деякі кам’яні поверхні, чистий лід тощо. Світлова енергія променя світла, що падає на дзеркальну поверхню, відбивається по лінії відбитого променя (будь-яке розсіювання вбік від цього променя відсутнє). Кут відбиття від ідеально дзеркальної поверхні дорівнює куту падіння. В будь-якому іншому положенні спостерігач не бачить дзеркально відбите світло, тобто вектор спостереження S збігається з вектором відбиття R і кут α = 0 (рис 15.1).

Поверхня вважається ідеально дзеркальною, якщо на ній немає шорсткості. В природі немає ідеально дзеркальних поверхонь, тому вважають, що глибина шорсткості істотно менша за довжину хвилі випромінювання. Для видимого спектра можна вважати, що глибина шорсткості для ідеального дзеркала має не перевищувати 0,5 мкм.

284

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

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

До простіших моделей дзеркального освітлення відносять емпіричну модель Буі-Туонга Фонга, згідно з якою інтенсивність дзеркально відбитого світла Is знаходиться за формулою

Is = I ω(θ, λ) cospα,

де I – інтенсивність джерела випромінювання світла, ω(θ, λ) – крива відбиття світла, α – кут між відбитим від точки поверхні променем і вектором спостерігача, тобто вектором, направленим із точки поверхні в точку, де знаходиться спостерігач (рис. 15.1), p – показник, що знаходиться в діапазоні від 1 до 200, залежить від ідеальності поверхні і характеризує просторовий розподіл дзеркально відбитого світла, тобто p – це степінь дзеркального відображення матеріалу. Степінь p впливає на розмір відблиску на поверхні (при дзеркальному відбитті на блискучих предметах виникають світлові бліки). Великі значення р задають сфокусовані розподіли для металів, малі р – для неметалевих поверхонь. Варто зазначити, що відбитий дзеркальний промінь від металу зберігає властивості падаючого променя. Наприклад, при освітленні блискучої синьої поверхні білим світлом виникають білі, а не сині бліки.

Функція ω(θ, λ) досить складна, тому її часто заміняють константою ks, яка називається коефіцієнтом дзеркального відбиття і визначається експериментально. Тобто на практиці модель Фонга використовується у формі

 

Is = I ks cosp α,

0 < ks < 1.

(15.1)

 

 

 

 

Нормаль

 

 

Відбитий промінь

 

 

N

L

Джерело світла

 

R

 

 

n

 

Спостерігач

r

 

 

 

 

 

 

 

 

 

θ θ

l

 

 

 

 

 

S

s

 

α

 

 

 

 

 

 

Рис. 15. 1. Дзеркальне відбиття світла: r, s, n, l – одиничні вектори

285

15.1.2. Дифузне відбиття

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

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

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

Дифузне відбиття світла описується законом Ламберта (законом косинусів), згідно з яким інтенсивність відбитого світла Id пропорційна косинусу кута θ між напрямком L від точки поверхні на джерело світла та нормаллю N до поверхні в цій точці (рис.15.2), тобто

Id = I kd cosθ, 0 < θ <

π

,

(15.2)

 

2

 

 

де I – інтенсивність точкового джерела світла, kd – коефіцієнт дифузного відбиття, що залежить від властивостей матеріалу поверхні (0 ≤ kd ≤ 1) [21,25], θ – кут між напрямком від точки, в якій визначається колір на джерело світла, і зовнішньою нормаллю до площини в цій точці. З формули Ламберта видно, що інтенсивність відбитого світла максимальна для кутів θ, близьких до 00. Поверхня предметів, що зображається за допомогою моделі освітлення Ламберта (з дифузним відбиттям), виглядає бляклою і матовою.

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

N L

n

θ l

Рис. 15.2. Дифузне відбиття

У цьому випадку модель відбиття світла записують у вигляді суми дифузної і дзеркальної компоненти

I* = I(kd cosθ + kscosp α).

(15.3)

286

Згідно з формулою (15.3), інтенсивність відбитого світла дорівнює нулю для деяких кутів θ і α, однак у реальних сценах немає абсолютно темних місць. Це означає, що необхідно враховувати розсіяне (ambient) світло, багатократно відбите від інших об’єктів. Розсіяне світло йде з усіх напрямків і складає фонове освітлення сцени. При такому освітленні об’єкти однаково освітлені з усіх боків і ці об’єкти не утворюють тіні. Наприклад, освітлення вдень у похмуру погоду (коли небо в хмарах і не видно сонця). В комп’ютерній графіці вважається, що джерело фонового підсвічування завжди одне і освітлення в будь-якій точці сцени в довільному напрямку має однакову інтенсивність. У цьому випадку інтенсивність відбитого світла знаходиться з такої моделі освітлення

I* = Ia ka + I(kd cosθ + kscosp α), (15.4)

де Ia – інтенсивність фонового розсіяного світла (постійна для всіх об’єктів), 0 ka 1– коефіцієнт відбиття поверхнею розсіяного світла, kd, ks, як і раніше, коефіцієнти дифузного і дзеркального відбиття, відповідно.

Приклади параметрів моделі освітлення (15.4) для деяких матеріалів наведені в табл.15.1.

Таблиця 15.1.

Матеріал

Фонові коеф. ka

Дифузійні коеф. kd

Дзеркальні коеф. ks

Степі

R

G

B

R

G

B

R

G

B

нь р

латунь

0.3294

0.2235

0.0275

0.7804

0.5687

0.1137

0.9922

0.9412

0.8078

28

бронза

0.2125

0.1275

0.0540

0.7140

0.4284

0.1814

0.3935

0.2719

0.1667

26

хром

0.2500

0.2500

0.2500

0.4000

0.4000

0.4000

0.7746

0.7746

0.7746

77

мідь

0.1913

0.0735

0.0225

0.7038

0.2705

0.0828

0.2568

0.1376

0.0860

13

поліроване

0.2313

0.2313

0.2313

0.2775

0.2775

0.2775

0.7739

0.7739

0.7739

90

срібло

 

 

 

 

 

 

 

 

 

 

чорна

0.0

0.0

0.0

0.0100

0.0100

0.0100

0.5000

0.5000

0.5000

32

пласмаса

 

 

 

 

 

 

 

 

 

 

Інтенсивність світла, природно, залежить від віддалі d точки поверхні до джерела світла (об’єкт, що знаходиться дальше від джерела світла має бути темнішим). Тому в комп’ютерній графіці для більшої реалістичності використовують модель освітлення з лінійним затуханням

I* = Ia ka +

I

(kd cosθ + ks cosp α),

(15.5)

d + k

 

 

 

де d – віддаль від об’єкта до джерела світла, k – деяка константа.

Зауваження 1. Інколи у формулі (15.5) замість коефіцієнта змен-

шення інтенсивності

1

використовують

 

1

 

, де пара-

k + d

k + c d + c

d 2

 

 

 

 

 

 

1

2

 

 

287

метри k, c1, c2 називають коефіцієнтами постійного, лінійного та квадратичного ослаблення світла в залежності від віддалі d.

Функція (15.5) і є функцією зафарбовування. Вона використовується для розрахунку тону зафарбовування точок поверхні, тобто пікселів графічного зображення.

Найпростіше виконувати розрахунки в градаціях сірого кольору (наприклад, для білого джерела світла та сірих об’єктів). У цьому випадку інтенсивність відбитого світла відповідає яскравості. Складніше з кольоровими джерелами світла, які освітлюють кольорові поверхні. В цьому випадку розрахунок інтенсивності за формулою (15.5) ведеться для кожної компоненти кольору окремо (наприклад, для R, G, B) і колір кожного пікселя зображення визначають значення складових інтенсивностей світла для відповідних компонент кольору.

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

m

I j

(kdcosθj + ks cos p j αj).

 

I* = Ia ka +

(15.6)

 

j =1 d j + k

 

 

Використовуючи одиничні вектори зовнішньої нормалі n, а також одиничні вектори, що визначають напрями на джерело світла (вектор l), відбитого променя (вектор r), на спостерігача (вектор s) (рис. 15.1), функцію зафарбовування (15.5) можна записати у вигляді

I* = Ia ka +

I

(kd (n l) + ks(r s)p ),

(15.7)

d + k

 

 

 

тобто косинуси кутів можна замінити скалярними добутками одиничних векторів.

Ще однією характеристикою точкового джерела світла є його сфокусованість, тобто розподіл інтенсивності світла по поверхні об’єкта. Найбільша інтенсивність освітлення сфокусованим джерелом знаходиться в точці перетину напряму джерела світла з поверхнею. В околі цієї точки інтенсивність буде зменшуватися, при цьому інтенсивність світла обчислюється за законом Ip = I costϕ, де ϕ – кут між вектором, що задає напрям джерела світла та вектором m, напрямленим від джерела світла до точки поверхні (рис. 15.3), t – величина, що описує cфокусованість джерела світла. Параметр t може набувати цілих значень від 0 до 128. Чим більше t, тим більше сфокусоване світло; при t = 0 маємо розсіяне світло. В цьому випадку замість формули (15.7) використовуємо наступну формулу

288

I* = (Ia ka + d +I k (kd (n l) + ks (r s)p ))cos tϕ.

Зауважимо, що існують більш складні моделі освітлення, наприклад моделі Варна та Торренса-Сперроу.

Напрям у точку поверхніm ϕ

Напрям джерела

Рис. 15.3. Сфокусоване джерело світла

15.2. Обчислення нормалей до поверхні відбиття світла

Вектори l та s задаються, а вектори n та r потрібно знаходити. Якщо освітлювана поверхня гладка, то вектор зовнішньої нормалі обчислюється безпосередньо, наприклад, якщо рівняння поверхні має вигляд F(x, y, z) = 0, то вектор зовнішньої нормалі задають частинні похідні

Fx , Fy , Fz .

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

aix + biy + ciz + di = 0, i = 1, 2, …, m,

то нормальні вектори цих площин (ai, bi, ci) є векторами зовнішніх нормалей для многогранної поверхні. Для знаходження коефіцієнтів ai, bi, ci досить мати три вершини грані, якщо полігональна поверхня має не трикутні грані, а, наприклад, чотирикутні, то розрахунок нормалі можна здійснювати за довільними трьома вершинами грані. Що ж до напрямків векторів зовнішніх нормалей на ребрах або в вершинах многогранника, то їхні значення можна знайти лише наближено.

Нехай грані зі спільною вершиною мають нормальні вектори з координатами (ai, bi, ci), i = 1, 2, …, m, тоді за нормальний вектор у вершині

m

многогранника можна взяти суму векторів, тобто (a, b, c) = (ai , bi , ci )

i =1

(рис. 15.4). Інколи для знаходження вектора нормалі в вершині використовують нормовану зважену суму векторів нормалі граней, яким належить ця вершина.

289

(a2, b2, c2) (a, b, c)

(a1, b1, c1)

(a3, b3, c3)

Рис. 15.4. Нормаль у вершині при m = 3

Для визначення напрямку нормалі в точці, що належить ребру многогранної поверхні, достатньо додати вектори нормалей тих граней, які прилягають до даного ребра. А можна зробити по-іншому, тобто апроксимувати змінний вектор нормалі вздовж ребра многогранної поверхні можна за допомогою вже знайдених векторів зовнішніх нормалей у вершинах, що утворюють дане ребро. Якщо многогранна поверхня задана своїми вершинами V1,V2,V3,V4, то вектор зовнішньої нормалі в її вершинах можна знайти, використовуючи векторні добутки, які побудовані на векторах, що йдуть вздовж ребер і виходять із цих вершин. Наприклад, для того, щоб знайти зовнішню нормаль у вершині V1, необхідно додати векторні добутки V1V2 × V1V3, V1V3 × V1V4, V1V4 × V1V2 (рис. 15.5).

V2

V

 

Рис. 15.5. Визначення

1

V3

вектора зовнішньої нормалі

 

V4

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

Якщо розміщення джерела світла описується вектором l, направле-

ним на джерело світла, то косинус кута θ

з вектором нормалі n знахо-

дять із формули скалярного добутку

 

cosθ =

(n l)

.

(15.8)

 

n

 

 

 

l

 

 

 

 

 

 

 

 

 

 

 

У випадку, коли джерело світла розміщується в скінченній точці простору (xc, yc, zc), для визначення cosθ потрібно спочатку знайти вектор, який направлений на джерело світла.

290

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]