31
Для копіювання невеликих растрових зображень виконують наступні дії: координати пікселу заповнення (х,у) перетворюємо в растрові координати зразка кисті (хТ,уТ); по координатам (хТ,уТ) визначаємо колір С пікселів в зразку кисті; виводемо пікселі заповнення кольору С з координатами(х,у).
Перетворення координат піксела заповнення (х,у), в координати усередині зразка кисті можна виконати так:
хт = х mod m, ут = у mod n,
де m,n – розміри растру кисті по горизонталі і вертикалі. хт,ут- лежать в діапазоні для хТ = 0… (m-1), уТ = 0…( n -1).
Текстура (3D) – стиль заповнення, який ілюструє складну рел’єфну об'ємну поверхню, виконану з будь-якого матеріалу.
Тексел – це піксел текстури.
При відображенні 3D об'єктів у вигляді полігональних площин, кожна грань відображається шляхом накладення текстури, причому використовуються проективні текстури.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
головний вид |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
аксонометрична |
|
перспективна |
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
проекція |
|
|
|
проекція |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
Рисунок 2.10 – Накладання текстур |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
В цьому випадку растровий зразок представляє всю грань, а перетворення координат з (х,у) в (хТ,уТ) є афінним:
хт = Ах + Ву + С,
ут = Dx +Ey +F,
де А,В,С,D,E,F - константи, при перерахунку координат всіх пікселів для окремої текстурованої грані.
Проблеми:
а) необхідний значний об'єм пам'яті комп'ютера;
31
32
б) повороти, масштабування, і інші перетворення растрових зразків приводять до погіршення якості растру; в) складність накладання текстур в перспективній проекції,
оскільки перетворення координат з видових в координати площини нелінійне.
Методи усунення:
а) апаратна підтримка операцій з текстурами; б) використання методів фільтрації (інтерполяції)растрів текстур;
в) застосуваня декількох зразків текстур для різних ракурсів показу(mipmaps).
32
33
3 ВИДАЛЕННЯ НЕВИДИМИХ ЛІНІЙ ТА ПОВЕРХОНЬ
Полягає в блокуванні відображення відрізків або поверхонь, прихованих від спостерігача, з метою підвищення наочності проекцій та полегшення сприйняття об'єкта.
3.1 Алгоритм видалення невидимих граней
Принцип заснований на тому, що грань об'єкта може бути видимою тоді, коли вектор зовнішньої нормалі цієї грані спрямований до спостерігача, інакше грань невидима.
Етап 1. Класифікація граней на видимі або невидимі. Верхня грань на рис.3.1 вважається видимою, оскільки вектор зовнішньої нормалі N має позитивну складову в напрямку вектора M, який проведено з точки зору на грані до спостерігача.
Рисунок 3.1 – Вектори, що визначають видимість граней
В загальному випадку можливі такі ситуації: N•M > 0 – видима поверхня;
N•M = 0 – поверхня проецюється у відрізок; N•M < 0 – невидима поверхня.
Етап 2. Після того, як всі грані класифіковані як видимі або невидимі, на екран виводяться ребра видимих граней і таким чином, отримуємо рисунок без невидимих ліній. Якщо треба одержати рисунок без невидимих поверхонь, то видимі поверхні заливаються вибраними кольорами.
Область застосування: для об'єктів, обмежених плоскими поверхнями; лише до одного випуклого об'єкту.
Обмеження алгоритму:
33
34
увігнуті об'єкти, тому що грань, спрямована до спостерігача, може бути закрита іншою гранню цього об'єкту;
декілька випуклих об'єктів, які можуть закривати грані один
одного;
об'єкти, для яких вектор зовнішньої нормалі визначається неоднозначно;
криволінійні поверхні (в цьому випадку грань треба розділити силуетною лінією, на якій виконується рівність N M = 0).
Переваги:
простота реалізації.
3.2 Алгоритм художника (сортування по глибині)
Принцип: полягає у тому, що поверхні об'єктів сортуються по віддаленості від спостерігача і заповнюються відповідними кольорами, розпочинаючи з найдальшої. Принцип полягає у тому, що необхідно порівняти Zv–координати всіх поверхонь, та відобразити їх, розпочинаючи з поверхні з мінімальним Zv.
Обмеження алгоритму:
у більшості випадків діапазон значень Zv точок однієї поверхні перекривається з діапазоном значень Zv інших поверхонь.
Вирішення:
всі поверхні перетворюються в набори трикутників
(триангуляція або фасетування) таким чином, щоб діапазони Zv різних трикутників не перекривалися один з одним, потім трикутники зафарбовуються у відповідні кольори в потрібній послідовності.
3.3 Алгоритм видалення невидимих ліній
Принцип: полягає у тому, що для кожного ребра кожного об'єкту проводиться перевірка, чи не закрите воно гранями будь–яких об'єктів. Закриті частини ребер послідовно виключаються доти, доки не залишиться поверхонь, що не перевірені. Частини ребер, що залишилися, виводяться на екран.
Етап 1. За допомогою алгоритму невидимих граней виділяються плоскі поверхні, направлені до спостерігача і зберігаються в масив FACETABLE (поверхні, направлені від спостерігача, враховувати не треба, оскільки вони є невидимими і не можуть закривати ребра інших граней). Для кожної грані зберігається
34
35
Zv максимальне і Zv мінімальне. Криволінійні поверхні розділяються по силуетних лініях, а їх видимі частини зберігаються в той же масив.
Етап 2. Ребра граней з масиву FACETABLE виділяються зі всієї решти ребер і збираються в окремий список.
Етап 3. Для кожного ребра із списку проводиться перевірка: чи не закривається це ребро гранню з FACETABLE. Можливі такі випадки розташування ребра:
(Всі Zv ребра < min Zv грані)
(Zv ребра > max Zv грані)
(діапазон Zv перекривається)
Рисунок 3.2 –Варіанти розташування ребер та граней
Якщо ребро перед гранню, що перевіряється, то з масиву FACETABLE вибирається наступна грань і виконується перевірка по ній. Якщо ребро за гранню або проходить її наскрізь – виконуються додаткові дії.
Етап 4. Ребро і грань проецюються на екран, після чого виконується перевірка перекриття. Якщо перекриття немає, то ребро не закривається гранню, що перевіряється. Далі обирається наступна грань і перевіряється згідно етапу 3.
Якщо проекції перекриваються – ребро ділиться на частини, при цьому невидима частина відкидається, видима додається в список ребер. Етап 3 повторюється для нових елементів списку.
35