Карта зміщення

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Карта зміщення (displacement mapping) — техніка рельєфного текстурування у тривимірній комп'ютерній графіці, що відрізняється від альтернативних бампмаппінг (англ. bump mapping), нормалмаппінг[en] (англ. normal mapping) та parallax mapping тим, що використовує процедурні, текстурні карти або карти висот для створення ефекту, при якому виконується зміщення (англ. displacement) реальних геометричних позицій точок (зазвичай, разом з нормалями) від текстурованої поверхні у відповідності до значення текстурної функції, що обчислюється для кожної точки поверхні. Ще додає поверхні глибину та деталі, що дозволяє правильно візуалізувати самоперекриття, самозатінення та отримати правильний силует об'єкту. З іншого боку, ця техніка є найбільш ресурсовитратною зі свого класу, так як потребує використання великої кількості додаткових геометричних даних та обчислень.

Протягом багатьох років, карта зміщення була особливістю висококласних рендерних систем, як-от PhotoRealistic RenderMan, коли на той момент такі API-інтерфейси, як OpenGL та DirectX, тільки починали використовувати цю особливість.

Однією із причин цього є те, що оригінальне виконання карт зміщення вимагає адаптивної тесселяції поверхні для того, щоб отримати достатню кількість мікрополігонів[en], розмір яких відповідає розміру пікселя на екрані.

Значення терміну в різних контекстах[ред. | ред. код]

Карта зміщення містить в собі термін відображення (mapping), яке відноситься до текстури (texture map), яка використовується для модуляції сили зміщення. Напрямок зміщення, як правило, це локальна нормаль поверхні. Сьогодні багато рендерів (візуалізований об'єкт) дозволяють програмовані шейдери, які можуть створювати високоякісні (багатовимірні) процедурні текстури та моделі в довільно високих частотах. Використання терміну відображення (mapping) стає спірним, так як більше не включає в себе текстури (texture map). Таким чином, на сьогоднішній день більш широкий термін зміщення (displacement) часто використовується для позначення концепції, яка також включає в себе зміщення на основі текстури. Рендери використовують алгоритми REYES[en], або схожі підходи на основі мікрополігонів, які дозволили карти зміщення при будь-яких високих частотах, тому вони стали доступні майже 20 років тому назад.

Перший комерційно доступний рендер для реалізації мікрополігонів підходом карт зміщення, завдяки REYES був Pixar's PhotoRealistic RenderMan. Рендерні мікрополігони, зазвичай, при зернистості мають форму геометричної мозаїки, що підходить для зображення, яке візуалізується. Тобто, додаток моделювання забезпечує примітиви високого рівня для рендора. Приклади включають в себе справжні NURBS- або поверхні розбиття.

Інші рендери, які вимагають застосування моделювання для доставки об'єктів, попередньо-мозаїчних, в довільні багатокутники, або навіть трикутники, визначили термін карта зміщення, як переміщення вершин цих багатокутників. Часто зміщення напрямку також обмежена нормаллю до поверхні в вершині. Хоча концептуально схожі, ці багатокутники, як правило, набагато більше, ніж мікрополігони. Якість, яка досягається при такому підході, обмежується щільністю геометричної мозаїки задовго до того, як рендерер отримує доступ до нього.

Ця різниця між картами зміщення в рендерних мікрополігонів та картами зміщення в не-мозаїчних рендерних (макро) полігонів, часто може призвести до плутанини в розмовах між людьми, у яких вплив на кожну технологію, або реалізацію, обмежений. Тим більше, що, як і в останні роки, багато не-мікрополігоні рендери додали можливість робити карти зміщення якості, аналогічной якій мікрополігоний рендер здатний доставити природно. Для того, щоб розрізняти необроблену попередню тесселяцію на основі зміщення, що рендери робили раніше, термін зміщення субпікселя (sub-pixel displacement ) було введено для опису цієї функції.

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

Справжні мікрополігоні рендери завжди могли зробити те, що зміщення субпікселя тільки останнім часом, але з більш високою якістю і в напрямках довільних переміщень.

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

У Microsoft, патентований високого рівня Shader Language, карти зміщення можна інтерпретувати, як свого роду «відображення вершин-текстури», де значення текстури не змінюють кольору пікселів (як це набагато частіше), але замість того, змінюють становище вершин. На відміну від бамп, нормального і параллакс відображення, всі з яких можна сказати «підроблена» поведінка карт зміщення, таким чином, по-справжньому груба поверхня може бути отримана з текстури. Це повинно використовуватися в поєднанні з адаптивними методами тесселяції (що збільшує кількість полігонів, що надаються відповідно до поточних параметрів перегляду) для отримання високого ступеня деталізації сітки.

Див. також[ред. | ред. код]