WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Аналіз методів Bump Mapping - Реферат

Аналіз методів Bump Mapping - Реферат


Реферат на тему:
Аналіз методів Bump Mapping
Bump mapping[1,2] - це технологія, яка дозволяє на плоскій поверхні, обмеженої полігоном, моделювати мікрорельєф. Даний підхід використовується для імітації нерівностей і шероховатих поверхонь.
Розрізняють декілька типів bump mapping-а:
1. Рельєфність, що імітується шляхом модифікації відбиття або заломлення світлових променів на поверхні полігону. Даним способом формують, наприклад, хвилі на поверхні води, рельєф на скляній поверхні. (Environment map bump mapping). При такому підході використовуються дві текстури: карта змін висот, яка формується на основі карт висот шляхом урахування сусідніх текстелей, та карта середовища, яка безпосередньо накладається на полігон.
2. Рельєфність, яка досягається за рахунок різного освітлення елементів поверхні. Деталі на поверхні (ефект шероховатості) формуються шляхом освітлення або затемнення у місцях нерівностей. Відчуття рельєфності досягається дифузним bump mapping-ом (використовується дифузна складова при визначенні яскравості в заданій точці полігону) та спекулярним bump mapping-ом (використовується спекулярна складова кольору).
3. Рельєфність, що імітується паралаксом, тобто зсувом різновіддалених частин поверхні при русі спостерігача. Даний підхід досягається зсувом текстурних координат для кожного пікселя при відтворенні поверхні.
Існує декілька різновидів bump mapping-а, загальною задачею яких є обчислення освітленості пікселів полігона за допомогою інформації про структуру поверхні, враховуючи її положення в просторі та орієнтацію полігона відносно джерела освітлення.
1. Emboss bump-mapping - метод накладання нерівностей за допомогою видавлювання. Даний метод основано на використанні мультитекстурування, де в якості основної текстури використовується карта видавлювання, текстурні координати якої змінюються відповідно до положення полігона і його орієнтації відносно джерела світла. Метод характеризується мінімальним обсягом додаткових даних, оскільки основна карта зберігається в альфа-компоненті зображення текстури. Недоліком підходу є низька якість отриманого зображення.
2. Попіксельне формування нерівностей із використаням карт нормалей.
Даний різновид bump mapping-а базується на використанні карт нормалей, які формуються для кожної текстури. Карта нормалей відповідає набору нормалей поверхні. За їх допомогою обчислюється освітленість кожного пікселя полігону відповідно до положення джерела світла. Даний підхід дозволяє гнучко змінювати освітленість, оскільки карти нормалей є більш універсальною структурою даних, порівняно з картою видавлювання.
3. Попіксельне формування нерівностей із використаням карт висот.
Карта висот, як правило, є масивом значень висот внутрішніх точок полігона, що взяті з визначеним інтервалом. Для кожної текстури використовується одна карта висот, яка розміщується в альфа-каналі зображення. По якості зображення даний метод поступається методу формування нерівностей із використанням карт нормалей, але являється оптимальнішим, ніж метод видавлювання.
4. Накладання паралаксу (parallax mapping).
Даний метод поєднує в собі накладання нерівностей і модуляцію текстурних координат для кожного пікселя полігона відповідно до карти висот. Даний метод значно підвищує реалістичність рельєфності об'єкта при незначному зростанні обчислювальних затрат. Об'єм необхідних даних є незначним, оскільки кожній текстурі кольору відповідає текстура з картою нормалей і картою висот в альфа-каналі зображення.
Bump mapping може створювати ілюзію наявності у об'єкта додаткових геометричних деталей у вигляді нерівностей. Даний метод потребує накладання декількох текстур, які формуються із карти висот і нормалей. Суть полягає в наступному: в кожній точці поверхні задається нормаль, яка враховується при обчислені освітленості[1,3]. Для цього необхідно нормалізувати вектор від джерела світла. Координати вектора, як і колір в кожній точці полігону задається трьома числами: X, Y та Z. Співставленням координат кольору R, G, B з координатами вектора X, Y та Z, отримують нормаль, яку можна представити як кольорову точку. З таких точок формується текстура, де для кожної точки розраховують нормаль. При зміні напрямку нормалі в заданій точці полігона змінюється освітленість точки, тобто освітленість в загальному випадку залежить від орієнтації полігона відносно джерела світла. Оскільки нормаль визначається в кожній точці полігона, то для зміни освітленості поверхні достатньо змінити положення вектора джерела світла. Для того, щоб повернути вектор джерела, достатньо перевести його в нову систему координат, пов'язану з полігоном. Для цього достатньо помножити даний вектор на матрицю перетворення, яка має такий вигляд:
[Tx Ty Tz],
[Bx By Bz],
[Nx Ny Nz],
де вектор N(x,y,z) - вектор нормалі до полігона, B(x,y,z) - бінормаль, T(x,y,z) - Tangent. Бінормаль і Тangent - це два вектора, які взаємно перпендикулярні між собою, та перпендикулярні нормалі. Таким чином, три вектора утворюють базис нової системи координат. Вектори В і Т отримують наступним чином: обирається будь-який вектор, не колінеарний нормалі, та знаходиться їх векторний добуток, який і дасть вектор Т. Векторний добуток Т і N дає вектор В. Із трьох базисних векторів формується матриця трансформації, при множенні якої на вектор джерела світла дає корегуючий вектор. Для зміни нормалей скалярно множиться кожен вектор із карти нормалей на отриманий корегуючий вектор. Отриманий результат корегується шляхом його множення на дифузну складову даної точки.
Реалізація bump mapping-а базується на зміні направленості вектора нормалі, відповідно до інформації, яку містить карта висот[1]. Зміна положення потокового вектора в конкретній точці полігону визначає зміну яскравості пікселя. Спочатку потрібно перетворити висоти з карти в вектори по одному на кожен піксель. Для кожного пікселя розраховують вектор, який вказуватиме нахил поверхні в кожній точці. Для визначення даних векторів знаходять градієнт для кожного пікселя:
x_gradient (T) = pixel(x-1, y) - pixel(x+1, y),
y_gradient(B) = pixel(x, y-1) - pixel(x, y+1),
де x, y - координати відповідного пікселя.
Новий вектор нормалі можна обчислити таким чином:
New_Normal = Normal + (U * x_gradient) + (V * y_gradient).
По новому значенню вектора нормалі можна обрахувати яскравість даного пікселя використовуючи технологію затемнення по Фонгу[3,4], в основі якого покладено те, що кількість світла, відбитого від поверхні прямо пропорійна косинусу кута між нормаллю до поверхні і напрямком світла.
Bump mapping має ряд недоліків, які обмежують область його застосування:
1. Неможливість точної імітації рельєфу з різкими перепадами висот при малих кутах між вектором зору і площиною полігону.
2. Ступінчаті артефакти при побудові тіней, які формуються елементами рельєфу з лінійними градаціями між освітленими інеосвітленими областями.
Література:
1. Херн Д., Павлин Бейкер М. Компьютерная графика и стандарт OpenGL.
-М. : Издательский дом "Вильямс".2005.-1168 с.
2. Роджерс Д. Алгоритмические основы машинной графики: Пер. с англ. - М.:
Мир, 1989. - 512 с.
3. Lyon R.F. Phong Shading Reformulation for Hardware Renderer Simplification // Apple Technical Report №43. - 1993.
4. Романюк О.Н, Чорний А.В. Новий підхід до визначення спекулярної
складової кольору // Оптико - електронні інформаційно - енергетичні
технології. - 2004. - С. 85-92.
Loading...

 
 

Цікаве