- •1 Введення в комп'ютерну графіку
- •Загальні положення
- •Напрямки застосування комп'ютерної графіки
- •1.2.1 Відображення інформації
- •1.2.2 Проектування та моделювання
- •1.2.3 Інтерфейс користувача
- •1.2.4 Комп'ютерна графіки в індустрії розваг
- •1.3 Історія розвитку комп'ютерної графіки
- •Питання для самоперевірки
- •2 Технічні засоби комп'ютерної графіки
- •2.1 Роздільна здатність графічних пристроїв
- •2.2 Пристрої введення
- •2.2.1 Сканери
- •2.2.2 Графічні планшети
- •2.2.3 Цифрові камери
- •2.3 Пристрої виведення
- •2.3.1 Основні типи моніторів ( дисплеїв)
- •2.3.2 Принтери
- •2.3.3 3D принтери
- •2.3.4 Фотонабірні автомати
- •2.3.5 Плотери
- •2.4 Мова опису сторінок
- •2.4.1 Мова PostScript
- •2.4.2 Portable Document Format (pdf)
- •2.4.3 Hewlett Packard Printer Communication Language (pcl)
- •2.5 Питання для самоперевірки
- •3 Колір в комп'ютерній графіці
- •3.1 Природа кольору. Системи опису кольору
- •3.1.1 Колірні моделі
- •3.2 Порівняння колірних моделей
- •3.3 Піксельні дані і палітри
- •3.4 Освітлення і світло
- •3.4.1 Проста модель освітлення
- •3.4.2 Дифузне відбиття
- •3.4.3 Дзеркальне відображення
- •3.4.4 Загальна модель освітлення
- •3.5 Зафарбовування граней
- •3.5.1 Плоске зафарбовування
- •3.5.2 Зафарбовування методом Гуро
- •3.5.3 Зафарбування Фонга
- •3.5.4 Більш складні моделі висвітлення
- •3.6 Питання для самоперевірки
- •Список використаних джерел
- •Навчальне видання Новожилова Марина Володимирівна
3.5 Зафарбовування граней
3.5.1 Плоске зафарбовування
Для розрахунку інтенсивності освітлення поверхні в заданій точці згідно розглянутої моделі освітлення, необхідно визначити чотири вектори:
– напрям на джерело,
– напрям на спостерігача,
– вектор відбитого світла,
– нормаль до поверхні .
Визначення перших трьох векторів досить очевидно, а обчислення нормалей викликає певні труднощі. Якщо поверхня, що фарбується, задана явним рівнянням, то визначення нормалей можна провести класичними математичними методами. Це вимагає величезного обсягу обчислень. Тому застосовують наближені методи обчислень.
Поверхні при візуалізації найчастіше апроксимуються певною множиною малих плоских багатокутників (трикутників або чотирикутників).
Нормалі для всіх точок площини збігаються і можуть бути розраховані,
виходячи з координат будь-яких трьох точок площини р0, р1, р2, які не лежать на одній прямій.
.
Якщо вважати, що джерело освітлення спрямоване і розташоване в нескінченності, то проміні світла паралельні між собою, і якщо спостерігач також розташований у нескінченності, то ефект ослаблення світла в залежності від відстані від джерела можна не враховувати. Крім того, це означає і те, що вектори, які направлені від різних точок поверхні, по відношенню до спостерігача також будуть паралельні.
Плоска грань у всіх точках має однакову інтенсивність освітлення і, тому, забарвлюється одним кольором. Таке зафарбовування називається плоским. Цей підхід дає максимальну ефективність, але поверхні, що фарбуються, візуально виглядають неприродно (Рис. 3.18).
При апроксимації поверхні багатокутником явно видно ребра, так як сусідні грані з різними напрямками нормалей мають різний колір. Ситуацію посилює поява смуг Маха.
Через особливості зорової системи людини, дуже чутливої до малих змін відтінків сусідніх ділянок зображення при різкому переході від світлої ділянки до більш темної, ми бачимо додаткові смуги вздовж лінії переходу. Тобто вздовж лінії переходу світлий багатокутник здається більш світлим, ніж він є насправді, а темний ще темніше.
Для того щоб усунути даний ефект, необхідно згладити перехід між відтінками сусідніх ділянок. Для цього існують спеціальні алгоритми.
а) б)
Рисунок 3.18 – Зафарбування: а) – плоске; б) по Гуру
3.5.2 Зафарбовування методом Гуро
Усунення дискретних інтенсивностей зафарбовування було запропоновано Анрі Гуро. Його метод полягає в тому, що використовуються не нормалі до плоских граней, а нормалі до апроксимуючої поверхні, побудованої в вершинах багатокутника.
Метод передбачає усереднення нормалей і білінійну інтерполяцію інтенсивностей, розрахованих для кожної вершини багатокутника. Білінійна інтерполяція в обчислювальній математиці – розширення лінійної інтерполяції для функцій двох змінних. Ключова ідея полягає в тому, щоб провести стандартну лінійну інтерполяцію спочатку в одному напрямку , а потім у перпендикулярному напрямку.
Вектора нормалей визначаються для всіх вершин багатокутників. Для усереднення нормалі до деякої вершині підсумовуються нормалі до всіх багатокутників, що перетинаються в цій вершині. Отриманий результат нормалізується. Наприклад, для вершини, в якій перетинаються чотири багатокутники М1, М2,М3, М4 нормаль може бути порахована наступним чином:
,
де
1,
…
4
– нормалі
поверхонь багатокутників М1,
… М4
.
Зафарбування Гуро дає більш реалістичне уявлення поверхні, однак не усуває повністю смуг Маха, так як забезпечує тільки безперервність значень інтенсивностей вздовж меж багатокутників, не забезпечуючи безперервності зміни інтенсивності.
Друга проблема методу пов'язана з тим, що усереднення нормалей може давати однаковий результат для по-різному орієнтованих багатокутників, що призводить до спотворення зображення. Така побудова сильно залежить від методу розбивки.
Недоліком методу Гуро є і те, що він добре працює тільки з дифузною моделлю відображення.
