Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
науков 5.2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
6.51 Mб
Скачать

1.2 Зображення текстури.

Зображення текстури являє собою масив елементів - текселів, дуже схожих на звичайні пікселі і мають аналогічний зміст. Оскільки сама по собі текстура є зображенням, роздільність текстури і її формат відіграють велику роль, яка згодом позначається на загальному враженні від якості графіки у 3D-додатку. Цей масив може бути одно, дво або, в деяких системах, тривимірним. Тут, для визначеності, ми будемо говорити про двовимірному масиві текселів. Окремі елементи масиву адресуються текстурними координатами (s, t), які мають фіксований діапазон зміни [0., 1.]. Масив текселів оголошується зображенням текстури шляхом звернення до функції glTexImage. В якості параметрів, крім масиву текселів, задаються розміри масиву - його ширина і висота, а також формат текселів. Оскільки діапазон текстурних координат фіксований, розміри масиву визначають реальні розміри текселів в просторі вікна - подробиця текстури. Власне тексель являють собою упаковану сукупність компонентів RGBA або один компонент - які саме компоненти використовуються в даному масиві задається у форматі текселів. При накладенні текстури колір текселя змішується з кольором елементів поверхні.

Створення параметрів матеріалу здійснюється за допомогою використання карт (зображення) розташованих у відповідних каналах, або за допомогою процедурних карт, а також змішаного методу[8].

Карта текстури застосовується для утворення певного параметру візуального відображення на поверхні заданої форми. Цей процес нагадує застосування візерунчастого паперу на звичайній білій коробці. Кожній вершині в 3D моделі присвоюється координати текстури (яка у разі 2D відома, як UV координата). Місця відбору проб зображення згодом інтерполюється по поверхні моделі з отриманням візуального результату.

Найчастіше це файл растрового (рідше векторного) зображення з розширенням JPEG, PNG або PAT.

1.3 Параметри текстури.

З кожним зображенням текстури повинні бути пов'язані параметри текстури, що визначаються у функції TexParameter і задають спосіб відображення текселів на пікселі.

Перша група параметрів TEXTURE_WRAP визначає, що робити, якщо якась із координат текстури (s, t) виходить за діапазон [0., 1.]. Для кожної з координат можна задати свій спосіб дії. Можливі два варіанти - CLAMP або REPEAT.

  • У режимі CLAMP, якщо відповідна координата текстури виходить за одиничний діапазон, текстура не накладає. Цей режим застосовується, коли потрібно накласти зображення на об'єкт в єдиному екземплярі.

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

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

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

Рис.1. Стиснення текстури.

В іншому випадку, коли область менше текселя, текстура розширюється і використовується фільтр розширення (Рис.2.).

Рис.2. Розширення текстури.

Можна визначити один з наступних фільтрів стиснення і розширення:

  • NEAREST - при стисненні / розширенні використовуватиметься значення елемента текстури, який є найближчим до центру пікселя, на який накладається текстура.

  • LINEAR - буде використовуватися зважене середнє 4 найближчих до пікселя елементів текстури.

Близькість визначається за координатами текстури, розрахованим для пікселя.

Крім того, для фільтрів стиснення можна використовувати MIPMAP, - сукупність масивів, які представляють одне зображення з послідовно зменшеним дозволом. Якщо розмір текстури 2n х 2m, то мається max (n, m) +1 MIPMAP. Перша карта - це вихідне зображення. Кожна наступна карта має розміри 2k-1 х 2l-1, де 2k * 2l - розміри попередньої карти[8].

Фільтри стиснення на основі MIPMAP різняться кількістю використовуваних в них MIPMAP і способом отримання значення текстури.

  • NEAREST_MIPMAP_NEAREST - вибирається MIPMAP, найближча до розміру пікселя текстурування, і у відповідність з режимом NEAREST вибирається значення текстури.

  • NEAREST_MIPMAP_LINEAR - обираються дві MIPMAP, які найбільш близькі за розмірами до пікселю текстурування. Використовується режим NEAREST для отримання значення текстури з кожної карти MIP. Остаточне значення текстури виходить, як зважене середнє цих двох значень.

У позначеннях двох інших фільтрів на першому місці стоїть LINEAR - це фільтри LINEAR_MIPMAP_NEAREST і LINEAR_MIPMAP_LINEAR. Від попередніх фільтрів вони відрізняються тим, що для вибірки значення текстури з MIPMAP використовується режим LINEAR.

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