Відмінності між версіями «MIP-текстурування»

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
м (технічні зміни, replaced: | → |, Зображення: → Зображення: за допомогою AWB)
Рядок 1: Рядок 1:
[[Зображення: MipMap Example STS101.jpg|frame|Головна текстура і її зменшені копії]]
+
[[Зображення:MipMap Example STS101.jpg|frame|Головна текстура і її зменшені копії]]
   
 
'''MIP-текстурування''' ({{lang-en|MIP mapping}}) - метод текстурування, використовує кілька копій однієї текстури з різною деталізацією. Назва походить від {{lang-lat|multum in parvo}} - «багато в одному».
 
'''MIP-текстурування''' ({{lang-en|MIP mapping}}) - метод текстурування, використовує кілька копій однієї текстури з різною деталізацією. Назва походить від {{lang-lat|multum in parvo}} - «багато в одному».
Рядок 17: Рядок 17:
 
== Недоліки, способи вирішення ==
 
== Недоліки, способи вирішення ==
   
Витрата [[відеопам'ять|відеопам'яті]] збільшується на третину. Втім, відеопам'ять зараз досить дешева. До того ж, якщо об'єкт далеко, його детальну текстуру можна і вивантажити в [[оперативна пам'ять| оперативну пам'ять]].
+
Витрата [[відеопам'ять|відеопам'яті]] збільшується на третину. Втім, відеопам'ять зараз досить дешева. До того ж, якщо об'єкт далеко, його детальну текстуру можна і вивантажити в [[оперативна пам'ять|оперативну пам'ять]].
   
 
MIP-текстурування не вирішує проблему текстур, що знаходяться під гострим кутом до глядача (наприклад, дорога в [[автосимулятор]]е). У таких текстур дозвіл по одній осі сильно відрізняється від дозволу за іншою - і, наприклад, по осі X зображення явно розмито, в той час як по осі Y видно мерехтіння, властиві завищеним вирішенню текстури. Є відразу кілька способів вирішення цього (починаючи з найменш якісного):
 
MIP-текстурування не вирішує проблему текстур, що знаходяться під гострим кутом до глядача (наприклад, дорога в [[автосимулятор]]е). У таких текстур дозвіл по одній осі сильно відрізняється від дозволу за іншою - і, наприклад, по осі X зображення явно розмито, в той час як по осі Y видно мерехтіння, властиві завищеним вирішенню текстури. Є відразу кілька способів вирішення цього (починаючи з найменш якісного):
# Встановити в відеодрайвер найбільш комфортне значення ''mip bias'' - числа, яке відповідає за вибір номера текстури в піраміді. Якщо воно негативне, відеоплата бере більш детальні текстури, якщо позитивне - менш детальні.
+
# Встановити в відеодрайвер найбільш комфортне значення ''mip bias'' - числа, яке відповідає за вибір номера текстури в піраміді. Якщо воно негативне, відеоплата бере більш детальні текстури, якщо позитивне - менш детальні.
# Багато ігри самі встановлюють відповідний ''mip bias'' для різних типів об'єктів. Наприклад, в [[Live for Speed]] ''mip bias'' встановлюється користувачем окремо для автомобілів, перешкод і дороги.
+
# Багато ігри самі встановлюють відповідний ''mip bias'' для різних типів об'єктів. Наприклад, в [[Live for Speed]] ''mip bias'' встановлюється користувачем окремо для автомобілів, перешкод і дороги.
# Скористатися [[анізотропна фільтрація|анізотропної фільтрацією]] - методом текстурування, який спрямований саме на вирішення цієї проблеми.
+
# Скористатися [[анізотропна фільтрація|анізотропної фільтрацією]] - методом текстурування, який спрямований саме на вирішення цієї проблеми.
   
 
Нарешті, видно чітка межа між MIP-рівнями. Це вирішується [[трилинейная фільтрація|трилінійної фільтрацією]].
 
Нарешті, видно чітка межа між MIP-рівнями. Це вирішується [[трилинейная фільтрація|трилінійної фільтрацією]].
   
 
== Посилання ==
 
== Посилання ==
* {{Cite web|url = http://www.gamedev.ru/articles/?id=10101|title = Створення детальних текстур c допомогою mip-map рівнів у Direct3D8|author = Михайло Хабре|publisher = [[GameDev. ru]] | datepublished = 29 травня 2002|accessdate = 12 липня 2009}}
+
* {{Cite web|url = http://www.gamedev.ru/articles/?id=10101|title = Створення детальних текстур c допомогою mip-map рівнів у Direct3D8|author = Михайло Хабре|publisher = [[GameDev. ru]]|datepublished = 29 травня 2002|accessdate = 12 липня 2009}}
   
[[Категорія: Методи текстурування]]
+
[[Категорія:Методи текстурування]]
   
[[Ca: Mipmap]]
+
[[ca:Mipmap]]
[[De: Mip Mapping]]
+
[[de:Mip Mapping]]
[[En: Mipmap]]
+
[[en:Mipmap]]
[[Es: Mipmap]]
+
[[es:Mipmap]]
[[Fr: MIP mapping]]
+
[[fr:MIP mapping]]
[[It: MIP map]]
+
[[it:MIP map]]
[[Ja: ミップマップ]]
+
[[ja:ミップマップ]]
[[Ko: 밉 맵]]
+
[[ko:밉 맵]]
[[Pl: Mipmapping]]
+
[[pl:Mipmapping]]
[[Ru: MIP-текстурирование]]
+
[[ru:MIP-текстурирование]]

Версія за 09:14, 22 лютого 2011

Головна текстура і її зменшені копії

MIP-текстурування (англ. MIP mapping) - метод текстурування, використовує кілька копій однієї текстури з різною деталізацією. Назва походить від лат. multum in parvo - «багато в одному».

Призначення

Зображення найкраще виглядає, коли деталізація текстури близька до вирішення екрана. Якщо дозвіл екрану високе (текстура занадто маленька/об'єкт дуже близько), виходить розмите зображення. Якщо ж дозвіл текстури дуже високий (текстура занадто велика/об'єкт дуже далеко), отримуємо випадкові пікселі - а значить, втрату дрібних деталей, мерехтіння і великий відсоток промахів в кеш. Виходить, що краще мати декілька текстур різної деталізації і накладати на об'єкт ту, яка найбільш підходить в даній ситуації.

Принцип дії

Створюється так звана MIP-піраміда - послідовність текстур з дозволом від максимального до 1 × 1. Наприклад: 1 × 1, 2 × 2, 4 × 4, 8 × 8, 16 × 16, 32 × 32, 64 × 64, 128 × 128, 256 × 256, 512 × 512 і 1024 × 1024. Кожна з цих текстур називається MIP-рівнем (англ. MIP level) або рівнем деталізації (англ. level of detail).

На всіх цих структурах знаходиться одне і те ж зображення. Таким чином, MIP-текстурування збільшує витрату відеопам'яті на третину: Неможливо розібрати вираз (синтаксична помилка): {\displaystyle \sum_ {i = 0} ^\infty\left (\frac 1 Квітень\right) ^ i = 1\frac 3 січня } .

При накладенні текстур обчислюється відстань до об'єкта, відповідно знаходиться номер текстури як Неможливо розібрати вираз (MathML з переходом на SVG чи PNG (рекомендовано для сучасних браузерів та інструментів покращення доступу): Недійсна відповідь («Math extension cannot connect to Restbase.») від сервера «/mathoid/local/v1/»:): {\displaystyle {miplevel} = \log_2\left (\frac {{dist}} {{texelsize}}\cdot {resolution}}\right) + {mipbias} } , де resolution - дозвіл віртуальної камери (кількість пікселів, яке буде в об'єкті розміром в 1 од., розташованому в 1 од. від камери), texelsize - розмір тексель в одиницях тривимірного світу, dist - відстань до об'єкта в тих же одиницях, mip bias - число, що дозволяє вибирати більш-менш детальну текстуру, ніж дає формула. Ця цифра округляється до цілого, і текстура з відповідним номером (нульова - найдетальніша, перша - вдвічі менша і т. д.) накладається на об'єкт.

Недоліки, способи вирішення

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

MIP-текстурування не вирішує проблему текстур, що знаходяться під гострим кутом до глядача (наприклад, дорога в автосимуляторе). У таких текстур дозвіл по одній осі сильно відрізняється від дозволу за іншою - і, наприклад, по осі X зображення явно розмито, в той час як по осі Y видно мерехтіння, властиві завищеним вирішенню текстури. Є відразу кілька способів вирішення цього (починаючи з найменш якісного):

  1. Встановити в відеодрайвер найбільш комфортне значення mip bias - числа, яке відповідає за вибір номера текстури в піраміді. Якщо воно негативне, відеоплата бере більш детальні текстури, якщо позитивне - менш детальні.
  2. Багато ігри самі встановлюють відповідний mip bias для різних типів об'єктів. Наприклад, в Live for Speed mip bias встановлюється користувачем окремо для автомобілів, перешкод і дороги.
  3. Скористатися анізотропної фільтрацією - методом текстурування, який спрямований саме на вирішення цієї проблеми.

Нарешті, видно чітка межа між MIP-рівнями. Це вирішується трилінійної фільтрацією.

Посилання