Redshift Bump Map node supports both height maps для bump mapping і об'єкта space або tangent space normal mapping. Bump / Normal mapping is texture-based technique used to give the impression of sub-polygon lighting detail, without having to model it.
Resolution of these textures є важливим – ви збираєтеся зробити один pixel за texel maximum resolution to get the best visual results. Magnifying the texture will blur the results and minifying will lessen the effect with distance.
Redshift Normal Map Format
Redshift expects normal maps в OpenGL формат.
Якщо ви використовуєте DirectX, форматована звичайна map в Y axis of texture will be inverted. Для fix this you can use Flip Normal Y option built in Bump Map node instead of needing to re-export a normal map.
Mixing Multiple Bump Maps
Для mix multiple bump maps і normal maps разомзроблені з Bump Blender shader node which has been optimized до efficiently blend resultant bump-map displacement vectors together.
Bump Mapping
Bump maps controlled by height map texture which is used to perturb the surface normal. Since тільки normals є perturbed, не geometry, it does not affect shadows. Bump maps do not contain directional information.
Normal Mapping
Normal maps controlled by a 'normal' texture which is used to perturb the surface normal. Since тільки normals є perturbed, не geometry, it does not affect shadows. Normal maps contain directional information.
Це дуже важливо, що ваші звичайні maps мають правильний колірний простір і gamma settings. Gamma повинна бути 1 і кольоровий простір повинна бути вирівняна / linear. Якщо набір неправильно, звичайна mapping буде не працювати належним чином.
General
Це дає змогу bump map effect. Коли це не відповідає, normal that is generated is just the surface normal.
Input Map Type
- Height-Field: Цей пункт Bump Map вказує на використання greyscale height based texture maps for bump mapping.
- Object-Space Normal: Цей пункт Bump Map вказує на використання object-space normal maps для normal mapping.
- Tangent-Space Normal: Цей пункт Bump Map вказує на використання tangent-space normal maps для normal mapping.
Object-Space vs Tangent-Space Normals
Object-Space Normal maps contain normal information specific to object it should be applied to. У Object-Space the up axis is directly tied to the up axis of the object self and therefore using Object-Space Normal map on any object other than one it is intended for will not look right.
Tangent-Space Normal maps містить необхідну інформацію, що може бути застосована до будь-якого об'єкта і повинна бути власне. У Tangent-Space up axis є відносно objects surface normal і theforfor using Tangent-Space Normal map on any object will behave correctly.
Це означає, що comparison object-space normal map і tangent-space normal map. Перші object-space і tangent-space maps є демонстрованими на їх утвореному source geometry, both look perfect. У другій версії того ж shader applied to flat plane which is where you can see how the object-space normal map perturbs plane's normals in such a way that it does not look good. Компанентно в tangent-space normal map looks дуже необхідний він є відносною частиною територій з плану.
Карти нормалей – це тип карти рельєфу. Це особливий тип текстури, який дозволяє додавати деталі поверхні, такі як нерівності, канавки та подряпини до моделі, яка відображає світло, начебто вони представлені реальною геометрією.
Наприклад, ви можете захотіти показати поверхню з канавками та гвинтами або заклепками на поверхні, наприклад, корпус літака. Один із способів зробити це – змоделювати ці деталі як геометрію, як показано нижче.
Аркуш авіаційного металу з деталями, змодельованими як реальна геометрія.
Залежно від ситуації, зазвичай, не рекомендується моделювати такі дрібні деталі як «справжню» геометрію. Праворуч ви бачите багатокутники, які необхідні для створення деталі однієї головки гвинта. Для великої моделі з великою кількістю дрібних деталей поверхні потрібно було б малювати дуже велику кількість полігонів. Щоб уникнути цього, ми маємо використовувати карту нормалей для представлення дрібних деталей поверхні та полігональну поверхню з нижчою роздільною здатністю для більшої форми моделі.
Якщо натомість ми представимо цю деталь за допомогою карти рельєфу, геометрія поверхні може стати набагато простіше, а деталь буде представлена у вигляді текстури, яка модулює віддзеркалення світла від поверхні. Це те, що сучасне графічне обладнання може робити дуже швидко. Ваша металева поверхня тепер може бути плоскою низькополігональною площиною, а гвинти, заклепки, канавки та подряпини відображатимуть світло і здаватимуться об'ємними через текстуру.
Гвинти, канавки та подряпини визначені у карті нормалей, яка змінює те, як світло відбивається від поверхні цієї низькополігональної площини, створюючи враження тривимірних деталей.Крім заклепок і гвинтів, текстура дозволяє нам включати набагато більше деталей, таких як тонкі нерівності та подряпини.
У сучасних конвеєрах розробки ігор митці будуть використовувати свої програми для 3D-моделювання для створення карт нормалей на основі вихідних моделей з дуже високою роздільною здатністю. Потім карти нормалей зіставляються з готовою до гри версією моделі з нижчою роздільною здатністю, так що вихідні деталі з високою роздільною здатністю візуалізуються з використанням картки нормалей.
Рефленое накладення — це щодо старий графічний метод, але він як і одна із основних методів, необхідні створення деталізованої реалістичної графіки у часі. Карти рельєфу також часто називають картами нормалей або картами висотОднак ці терміни мають трохи різні значення, які будуть пояснені нижче.
Що таке нормалі поверхні?
Щоб дійсно пояснити, як працює карта нормалей, ми спочатку опишемо, що такенормальі як вона використовується у освітленні в реальному часі. Можливо, найпростішим прикладом буде модель, у якій кожен багатокутник поверхні висвітлюється просто відповідно до кутів поверхні щодо джерела світла. Кут поверхні можна представити у вигляді лінії, що виступає в перпендикулярному напрямку від поверхні, і цей напрям (який вектор) щодо поверхні називається «нормаллю до поверхні» або просто нормально.
Два 12-гранні циліндри, зліва з плоскою штрихуванням і праворуч зі згладженим штрихуванням.
На зображенні вище лівий циліндр має базове плоске затінення, і кожен багатокутник затінений відповідно до його відносного кута до джерела світла.Освітлення на кожному полігоні постійно по всій площі полігону, тому що поверхня пласка. Ось ті ж два циліндри з їхньою каркасною сіткою основним графічним примітивом Unity. Міші складають більшу частину ваших 3D-світів. Unity підтримує триангульовані або чотирикутні полігональні сітки. Поверхні Nurbs, Nurms, Subdiv мають бути перетворені на полігони. More info
See in Словник visible:
Два 12-гранні циліндри, зліва з плоскою штрихуванням і праворуч зі згладженим штрихуванням.
Модель праворуч має ту саму кількість полігонів, що й модель зліва, проте затінення здається гладким – освітлення, що перетинає полігони, створює враження зігнутої поверхні. Чому це? Причина в тому, що нормаль до поверхні у кожній точці, що використовується для відображення світла, поступово змінюється по ширині багатокутника, так що для будь-якої заданої точки на поверхні світло відбивається якби ця поверхня була вигнута, а не плоским постійним багатокутником, яким він є насправді.
У вигляді 2D-діаграми три полігони поверхні навколо зовнішньої сторони заштрихованого циліндра виглядатимуть так:
Плоске затінення трьох полігонів, що розглядається як 2D-діаграма
Нормалі поверхні представлені оранжевими стрілками. Це значення, що використовуються для розрахунку того, як світло відбивається від поверхні, тому ви можете бачити, що світло реагуватиме однаково по довжині кожного полігону, тому що нормалі поверхні вказують в одному напрямку. Це дає "плоське затінення" і є причиною того, що полігони лівого циліндра мають чіткі краї.
Однак для гладкого циліндра заштрихованого нормалі поверхні плоских багатокутників розрізняються, як показано тут:
Плавне затінення трьох полігонів у вигляді 2D-діаграми
Напрямки нормалей на плоскій поверхні багатокутника поступово змінюються, так що затінення поверхні створює враження плавною кривою (як показано зеленою лінією). Це не впливає на реальну природу полігональну сітки, а тільки на те, як розраховується освітлення на плоских поверхнях. Ця вигнута поверхня, що здається, насправді відсутня, і перегляд граней під кутами погляду покаже справжню природу плоских багатокутників, проте з більшості кутів огляду циліндр виглядає як гладка вигнута поверхня.
При використанні цього базового плавного затінення дані, що визначають напрямок нормалі, фактично зберігаються тільки для кожної вершини, Тому значення, що змінюються по всій поверхні інтерполуються від однієї вершини до іншої. На діаграмі вище червоні стрілки вказують збережений напрямок нормалі в кожній вершині, а помаранчеві стрілки вказують приклади інтерполованих напрямків нормалі площі багатокутника.
Що таке зіставлення нормалей?
Планування нормалей просуває цю модифікацію нормалей поверхні однією крок уперед, використовуючи текстуру для зберігання інформації у тому, як змінювати нормалі поверхні у всій моделі. Карта нормалей – це текстура зображення, накладена на поверхню моделі, схожа на звичайні кольорові текстури, однак кожен піксель найменша одиниця у комп'ютерному зображенні. Розмір пікселя залежить від роздільної здатності екрана. Піксельне освітлення розраховується кожного пікселя екрана. Докладніше
Див. Словник у текстурі карти нормалей (званої texel) являє собою відхилення напрямку нормалі до поверхні від «справжньої» нормалі до поверхні плоского (або згладженого інтерполірованого) багатокутника.
Відображення нормалей за трьома полігонами, представлене у вигляді 2D-діаграми
На цій діаграмі, яка знову є 2D-представленням трьох полігонів на поверхні 3D-моделі, кожна помаранчева стрілка відповідає пікселю в текстурі карти нормалей. Нижче показано однопіксельний фрагмент текстури карти нормалей. У центрі ви можете бачити, що нормалі були змінені, надаючи зовнішній вигляд пара опуклостей на поверхні полігону. Ці опуклості будуть видні лише через те, як освітлення з'являється на поверхні, тому що ці модифіковані нормалі використовуються для освітлення.
Кольори, видимі в необробленому файлі карти нормалей, зазвичай мають блакитний відтінок і не містять реальних світлих або темних відтінків, тому що самі кольори не призначені для відображення такими, якими вони є. Замість цього значення RGB кожного текселу являють собою значення X, Y і Z вектора напряму та застосовуються як модифікація базових інтерпольованих гладких нормалей полігональних поверхонь.
Приклад текстури карти нормалей
Це проста карта нормалей, що містить інформацію про виступи для деяких піднятих прямокутників та текст. Цю карту нормалей можна імпортувати в Unity та помістити в слот карти нормалей стандартної Shader програми, що працює на графічному процесорі Докладніше
в Словник . При об'єднанні матеріалу з колірною картою (карта альбедо) та застосуванні до поверхні міша циліндра вище результат виглядає наступним чином:
Приклад карти нормалей, застосованої до поверхні сітки циліндра, використаної вище
Знову ж таки, це не впливає на реальну полігональну природу сітки, а тільки на те, як розраховується освітлення на поверхнях. Ці уявні опуклими літери і форми на поверхні насправді не присутні, і перегляд граней під кутами погляду покаже справжню природу плоскої поверхні, проте з більшості кутів огляду тепер здається, що циліндр має рельєфні деталі, що виступають над поверхнею.
Як отримати чи зробити карти нормалей?
Зазвичай карти нормалей створюються 3D-художниками або художниками за текстурами у поєднанні з моделлю або текстурами, які вони створюють, і часто відображають макет і вміст карти альбедо. Іноді вони створюються вручну, інколи ж візуалізуються в 3D-додатку.
Як візуалізувати карти нормалей з 3D-додатка виходить за рамки цієї документації, проте основна концепція полягає в тому, що 3D-художник створює дві версії моделі: модель з дуже високою роздільною здатністю, що містить усі деталі у вигляді полігонів, та «Готова до гри» модель з нижчою роздільною здатністю. Модель з високою роздільною здатністю була б надто деталізована для оптимальної роботи в грі (занадто багато трикутників у сітці), але вона використовується в додатку 3D-моделювання для створення карт нормалей. Версія моделі з нижчою роздільною здатністю може опустити дуже тонкий рівень деталізації геометрії, який тепер зберігається в картах нормалей, щоб натомість її можна було візуалізувати з використанням зіставлення нормалей. Типовим варіантом використання для цього було б показати опуклі деталі складок, гудзиків, пряжок та швів на одязі персонажа.
Є кілька програмних пакетів, які можуть аналізувати освітлення у звичайній фотографічній текстурі та витягувати з неї карту нормалей. Це працює, припускаючи, що вихідна текстура освітлена з постійного напрямку, а світлі та темні області аналізуються та передбачаються відповідними похилим поверхням. Однак при використанні карти рельєфу необхідно переконатися, що текстура альбедо не має освітлення з будь-якого певного напрямку на зображенні — в ідеалі вона повинна представляти кольори поверхні без освітлення в усі — тому що інформація про освітлення розраховуватиметься Unity відповідно до напряму світла, куту поверхні та інформації про карту рельєфу.
Ось два приклади: проста текстура кам'яної стіни, що повторюється, з відповідною картою нормалей і атлас текстур персонажа з відповідною картою нормалей:
Текстура кам'яної стіни та відповідна їй текстура карти нормалей Атлас текстури персонажа та відповідний йому атлас текстури карти нормалей.
У чому різниця між картами рельєфу, картами нормалей та картами висот?
Карти нормалей і карти висот є типами рельєфних карток. Обидва містять дані для представлення видимих деталей на поверхні більш простих полігональних сіток, але зберігають ці дані по-різному.
Зліва карти висот для бамп-меппінгу кам'яної стіни. Праворуч карта нормалей для бамп-меппінгу кам'яної стіни
Зліва нагорі показана карта висот, що використовується для накладання рельєфу на кам'яну стіну. Карта висот – це проста чорно-біла текстура, де кожен піксель є величиною, на яку точка на поверхні повинна здаватися піднятою. Чим біліший колір пікселя, тим вище здається піднята область.
Карта нормалей є текстурою RGB, де кожен піксель є різницю у напрямку, в якому має виглядати поверхня, щодо її немодифікованої нормалі до поверхні. Ці текстури зазвичай мають блакитно-фіолетовий відтінок через те, як вектор зберігається у значеннях RGB.
Сучасне обладнання для тривимірної графіки в реальному часі використовує карти нормалей, оскільки вони містять вектори, необхідні зміни того, як світло повинен відбиватися від поверхні. Unity також може приймати карти висот для бамп-меппінгу, але для їх використання їх необхідно перетворити на карти нормалей при імпорті.
Чому синьо-фіолетові кольори?
Розуміння цього не є обов'язковим для використання карт нормалей! Цей абзац можна пропустити. Однак, якщо ви дійсно хочете знати: значення кольору RGB використовуються для зберігання напрямків X, Y, Z вектора, де Z означає "вгору" (всупереч звичайній угоді Unity про використання Y як "вгору"). Крім того, значення текстури вважаються зменшеними вдвічі з додаванням 0,5. Це дозволяє зберігати вектори всіх напрямків. Отже, щоб перетворити колір RGB у напрям вектора, ви повинні помножити його на два, а потім відняти 1. Наприклад, значення RGB (0,5, 0,5, 1) або #8080FF у шістнадцятковому форматі дає вектор (0,0, 1), який знаходиться «вгорі» для цілей зіставлення нормалей і не є зміною поверхні моделі. Це колір, який ви бачите в плоских областях "зразкової" карти нормалей раніше на цій сторінці.
Карта нормалей, що використовує лише #8080FF, що відповідає вектору нормалі 0,0,1 або прямо нагору. Це не змінює нормаль поверхні багатокутника і, отже, не впливає на освітлення.Будь-які пікселі, які відрізняються від цього кольору, призводять до векторів, які вказують в іншому напрямку, що, отже, змінює кут, який використовується для розрахунку відображення світла у цій точці.
Значення (0,43, 0,91, 0,80) дає вектор (-0,14, 0,82, 0,6), що є досить крутою модифікацією поверхні. Подібні кольори можна побачити в яскраво-блакитних областях карти нормалей кам'яної стіни у верхній частині деяких країв каменю. В результаті ці грані вловлюють світло під зовсім іншим кутом, ніж плоскі поверхні каменів.
Яскраво-блакитні області на карті нормалей для цього каміння показують круту модифікацію нормалей поверхні полігону на верхньому краю кожного каменю, внаслідок чого вони ловлять світло під правильним кутом.
Кам'яна стіна без ефекту рельєфу. Краї та грані скелі не вловлюють спрямоване сонячне світло у сцені. Та ж кам'яна стіна з нанесеним рельєфним зображенням. Краї каміння, звернені до сонця, відображають спрямоване сонячне світло зовсім інакше, ніж грані каміння та краю, звернені убік. Та сама рельєфна кам'яна стіна в іншому сценарії освітлення. Точковий ліхтарик висвітлює каміння. Кожен піксель кам'яної стіни висвітлюється відповідно до того, як світло падає на кут базової моделі (полігону), скоригований векторами в нормальних картах. Тому пікселі, звернені до світла, є яскравими, а пікселі, звернені від світла, темніші або перебувають у тіні.
Як імпортувати та використовувати карти нормалей та карт висот
Карту нормалей можна імпортувати, як завжди, помістивши файл текстури до папки ресурсів. Однак, вам потрібно повідомити Unity, що ця текстура є картою нормалей. Це можна зробити, змінивши параметр «Тип текстури» на «Карта нормалей» інспекторі вікна Unity, в якому відображається інформація про поточний вибраний ігровий об'єкт, актив або налаштування проекту, що дозволяє вам перевіряти та редагувати значення. More info
See in Словник settings.
Щоб імпортувати чорно-білу карту висот текстуру у відтінках сірого, в якій зберігаються дані про висоту об'єкта. Кожен піксель зберігає різницю висот перпендикулярно до обличчя, яке представляє піксель.
Подивіться в Словник як на карту нормалей, процес майже ідентичний, за винятком того, що необхідно встановити прапорець «Створити з відтінків сірого».
Якщо вибрано параметр «Створити із відтінків сірого», в інспекторі з'явиться повзунок Bumpiness. Ви можете використовувати це, щоб контролювати, наскільки крутими є кути в карті нормалей під час перетворення з висот у вашій карті висот. Низьке значення шорсткості означатиме, що навіть різкий контраст на карті висот буде перетворений на плавні кути та нерівності. Високе значення створить перебільшені опуклості та дуже контрастні реакції освітлення на нерівності.
Налаштування Low та High Bumpiness при імпорті карти висот як карти нормалей та результуючий ефект на модель.
Після того, як у вас є карта нормалей у ваших ресурсах, ви можете помістити її в слот карти нормалей вашого матеріалу в інспекторі. У стандартному шейдері є слот карти нормалей, і багато старих застарілих шейдерів також підтримують карти нормалей.
Розміщення текстури карти нормалей у правильному слоті матеріалу з використанням стандартного шейдера
Якщо ви імпортували картку нормалей або карту висот і не позначили її як картку нормалей (вибравши Тип текстури: Карта нормалей, як описано вище), інспектор матеріалів попередить вас про це та запропонує виправити це так:
Попередження «Виправити зараз» з'являється під час спроби використати карту нормалей, яка не позначена як така в інспекторі.
Натискання кнопки «Виправити зараз» має той самий ефект, що й вибір Тип текстури: карта нормалей в установках інспектора текстури. Це буде працювати, якщо ваша текстура справді є картою нормалей. Однак, якщо це карта висот у відтінках сірого, вона не виявить це автоматично, тому для карт висот ви повинні вибирати параметр «Створити з відтінків сірого» у вікні інспектора текстури.
Вторинні карти нормалей
Ви також можете помітити, що внизу в інспекторі матеріалів стандартного шейдера є другий слот карти нормалей. Це дозволяє використовувати додаткову карту нормалей для створення додаткових деталей. Ви можете додати карту нормалей у цей слот так само, як і у звичайний слот карти нормалей, але мета тут полягає в тому, щоб ви використовували інший масштаб або частоту тайлінгу, щоб дві карти нормалей разом давали високий рівень деталізації Техніка Рівень деталізації (LOD) – це оптимізація, яка зменшує кількість трикутників, які повинна обробляти Unity. візуалізувати для GameObject, коли його відстань від камери збільшується. Докладніше
Див. Словник у різних масштабах. Наприклад, ваша звичайна карта нормалей може визначати деталі облицювання стін або транспортних засобів із канавками для країв панелей. Вторинна карта нормалей може забезпечити дуже точну деталізацію опуклостей для подряпин і зношування на поверхні, яка може бути мозаїчною в 5-10 разів більшою за масштаб базової карти нормалей. Ці деталі можуть бути настільки дрібними, що їх можна побачити лише за уважного розгляду.Щоб мати таку кількість деталей на базовій карті нормалей, потрібно, щоб базова карта нормалей була неймовірно великою, однак, комбінуючи дві карти різних масштабів, можна досягти високого рівня деталізації з двома відносно невеликими текстурами карти нормалей.
Рельєфне текстурування – метод у комп'ютерній графіці для надання більш реалістичного та насиченого виду поверхні об'єктів.
Bump mapping – техніка полягає в тому, що відхилення кожного пікселя від нормалі до поверхні об'єкта, що прораховується, виглядає в карті висот і застосовується перед обліком освітлення (див. для прикладу затінення по Фонгу).
Крім описаної вище техніки, званої «Bump mapping» Існує ряд альтернатив, що також дозволяють надавати рельєфність поверхонь. «Bump mapping» більш коректно перекладається як «ефект горбистій поверхні», тому що в англомовній літературі є техніка з назвою «Relief mapping», Відмінна від вищевикладеної.
Для прикладу роботи даної технології створимо новий матеріал і застосуємо до нашого чайника.
Крок 1 Виберіть пусту комірку матеріалу.
Крок 2 Встановіть будь-який колір, наприклад, зелений. Після цього у сувої Maps поставте галочку навпроти рядка Bump mapping, встановіть значення 75. Потім як карту встановіть зображення, показане на рис. 1.
Малюнок 1. Текстура для застосування як карти бамп-меппінгу.
Свиток Maps буде виглядати так (рис. 2):
Малюнок 2. Встановлена карта бапм-мепінгу.
Крок 3 Візуалізуйте сцену за допомогою стандартних налаштувань візуалізації (рис. 3).
Малюнок 3. Візуалізоване зображення.
Як видно з візуалізованого зображення, на об'єкті з'явилися тривимірні виділення відповідно до карти бамп-мепінгу. Основною особливістю даного методу є те, що додаткових полігонів, як і взагалі будь-яких змін у геометрії моделі, не відбулося. Тривимірний текст на об'єкті утворюється в результаті прорахунку карти нормалей.