Створення, опис осо...
 
Сповіщення
Очистити все

Створення, опис особливостей та пояснення роботи карт рельєфу (частина 2)


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
7 місяців тому
 

Теорія

Спочатку спробую пояснити структуру основних карт і розібрати основні поняття статті. Все нижче написане не обов'язково вірно на всі 100%.

Height Map (карта висот)

Карта висот – суто службова карта у Сталкері. Як окрема текстура не зустрічається, проте, якщо ви робите карту нормалей у фотошопі, то спочатку потрібно буде створити або "запекти" в спеціальних програмах карту висот. У карті висот все побудовано на білих (висоти), чорних (впадини), сірих (плюс-мінус рівні площині) відтінках. Загалом, в основному виходить, що основна частина зображення – сіра, у опуклих місцях воно світліше, а на місці западин – темніше.

Normal Map (карта нормалей)

Карту нормалей можна отримати такими способами:
- згенерувати з високополігональної моделі в 3д-редакторі, в роді 3ds Max , zBrush ...
- згенерувати з раніше створеної карти висот за допомогою одного з плагінів для Photoshop (плагін NVIDIA, плагін PixPlant, плагін xNormal)
- згенерувати з раніше створеної карти висот у спец-прогах ( xNormal , PixPlant , CrazyBump )
Якщо розбирати по каналах схематично, то виглядає так:

R - вісь X - вказує нормалі вліво та вправо (горизонтальні)
G – вісь Y – вказує нормалі вгору та вниз (вертикальні)
B - вісь Z - вказує нормалі у глибину від поверхні

При включеному RGB на каналах виглядає як текстура в синіх, фіолетових, бузкових, навіть іноді рожевих кольорах. Нормал карту дуже рекомендується створювати для бампа (тим більше, якщо вона з хай-полі моделі), а не використовувати скорочений варіант з картою висот (про це дізнаєтеся в розділі ЦДК нижче). Нормал карта, власне, і надає текстурі різних об'ємних характеристик. Надалі, після складання в СДК, карта стане частиною bump .

bump

Карта bump є звичайною картою нормалей у форматі A(BGR) (типово для формату стиснення DXT5_nm). Розробники використовували такий порядок з дуже простої причини - DXT компресія набагато менше "псує" текстуру, так як альфа-канал не піддається компрессії і залишається практично у вихідному вигляді. Поясню: ще раз подивіться на канали карти нормалей. А тепер уявіть, що на порожнє зображення з каналами RGBA поставили ту саму карту нормалей, тільки перевернуту по каналах. Тобто наповнення R з карти нормалей перейшло на канал Альфа (А) карти bump , G перейшло до B, B перейшло до G. Щодо каналу R у бампі, туди поставили Specular Map (карту відблисків). Про неї можете детальніше почитати у міні-словнику термінів.
Також хочу нагадати, що у своєму повному вигляді карта bump створюється з карти нормалей + текстурою зі спекуляром на Альфі в СДК. Така-ось текстурна солянка. Думаю, ви знаєте, що вона в грі робить, але якщо ви зіткнулися з цими термінами вперше, то все досить просто: карта робить текстуру об'єкта більш красивою, об'ємною, з опуклостями та западинами, додає або забороняє відображення текстурою світла від сонця, лампи , ліхтарика і т. д. Ось, наприклад, новенькому листу металу було б непогано надати можливість відбивати відблиски, а цегляній текстурі задати западини між цеглинами. А ось дереву, припустимо, жодних відображень світла не треба, хоча висоти (впадини та опуклості) додати таки можна. Ще зауважу, що бампи не потрібні для текстур партиклів, текстур інтерфейсу та ряду специфічних зображень. До основної текстури прив'язується через файл текстури . Але з цього приводу не турбуйтеся, адже файли thm з'являється під час створення бампа/підключенні бампа до текстури в СДК.

Канали в карті bump
R - Specular map - карта інтенсивності відблиску
G - вісь Z - вказує нормалі у глибину від поверхні
B - вісь Y - вказує нормалі вгору та вниз (вертикальні)
Alpha - вісь X - вказує нормалі вліво та вправо (горизонтальні)

bump#

Bump# - дуже цікава карта, призначення якої багатьом незрозуміло. Так як нагуглити будь-яку інформацію щодо правильної назви мені не вдалося, я називаю її просто "Normal error map" (ця карта називається Du/dv map і використовується в движку Source від Valve. Створити її можна за допомогою плагіна DDS від Nvidia у Photoshop ). Не знаю, чи використовуються подібні технології в інших іграх, але зустріти її будь-де, крім сталкера, мені не вдалося. Ця карта "фіксує" помилки стиснення DXT у бампа і генерується тільки за допомогою ЦДК, тому всякі незрозумілі дії деяких користувачів, на кшталт вставки замість неї звичайної або знебарвленої карти нормалей, а також описаної в статті Argus'a заливання сірим зі вставкою в альфа-канал карти висот, використовувати не можна. Виглядає як сіре зашумлене зображення. Ще раз нагадую, bump# створюється автоматично при генеруванні bump в СДК.

Канали:

R - помилки осі X карти нормалей
G - помилки осі Y карти нормалей
B - помилки осі Z картки нормалей
Alpha – карта висот; використовується для паралаксу, якщо використання його було включено при налаштуванні текстури

Міні-словник термінів

Тут буде опис деяких термінів, які зустрічаються в статті. Diffuse texture ака дифузна текстура ака дифуз - основна вихідна текстура, на яку робляться додаткові карти.
Specular Map ака карта відблисків - карта, яка після роботи в СДК стане частиною бампа (на червоному каналі). Відповідає відображення текстурою світла. Виготовляється або з дифуза у Фотошопі, або паралельно з дифузом у 3д-редакторі. На карті чорним (і відтінками чорного) позначаються місця, які не відсвічуватимуть світло, а білим (і відтінками) – які відсвічуватимуть.

Робота у фотошопі

Тут також знадобиться NormalMapFilter від nVidia , вважаю, у вас він уже встановлений, так як він йде в комплекті з dds-плагіном або інший зручний плагін (озвучені вище, в теорії карти нормалей). Всі файли зберігаються в tga 24 bits/pixel (якщо немає альфа-каналу) або 32 bits/pixel (якщо є альфа-канал). Перед збереженням слід перевести зображення з 16-бітного на 8-бітне.

Карта висот

На карті висот білим кольором позначені опуклості, чорним – западини. Якщо бамп робиться для текстур оточення, то можна почати роботу з оригінальної (дифузної) текстури, якщо ж бамп робиться для персонажа, то такий спосіб зазвичай неприйнятний, найчастіше через камуфляж, який ніяк не повинен позначатися на рельєфі тканини (хоча, в принципі , якщо є певний досвід роботи, прямі руки та старання, то подібних косяків можна уникнути). По суті, створення карти висот – процес творчий, можу дати лише кілька порад:

  • Над картою висот робота повинна проводитися строго в 16bits, причому від початку до фінального експорту в SDK

    Переклад у 16-бітне зображення
  • Якісного результату не буде, якщо просто взяти та засунути дифузну текстуру в генератор, не робіть цього. Прийде ретельно попрацювати над картою висот.
  • Не обов'язково намагатися показати на карті висот всі деталі та рельєф відразу, їх можна додати пізніше, коли буде згенеровано карту нормалей.
 

(Приклад зроблено прямо під час написання статті)

  • Для карти висот, якщо робите її з дифуза, можна взяти один із каналів RGB дифузної текстури або взяти знебарвлену. При першому варіанті виберіть бажаний канал, виділяйте зображення, копіюйте, вставляйте його в новий документ. Нове зображення буде у режимі "Градація сірого" . Рекомендую перевести знову в RGB , тому що не всі плагіни та фільтри читають "Градацію" . При другому варіанті просто створіть дублікат зображення і натисніть Ctrl+Shift+U ( "Знебарвити" ).
  • На текстурі карти висот можна зробити шар поверх фонового, який потрібно скопіювати знебарвлену інвертовану вихідну текстуру. Звучить не дуже, але все це не складно. Беремо дифуз, натискаємо Ctrl+I (інвертуємо). Потім знебарвлюємо, як показано вище. Копіюємо на новий шар карти висот. Режим накладання виставляємо "Перекриття" ( "Overlay" ). Далі ще можна зробити шар прозорішим. Загалом, дивіться, щоб текстура була збалансованою щодо площин. Рівна частина має бути заповнена сірим відтінком.
  • Дуже знадобляться в цьому випадку інструменти "Освітлювач" та "Затемнювач" .
  • Поверх всього можна додати ще один шар, на якому використовуватимете інструменти в роді "Пензлі".

Metro 2033 (якщо комусь цікаво)

 

У метро замість карт нормалей, як зазвичай буває у більшості ігор, використовується карта висот - файли з постфіксом _bump . Вони є тільки в тому випадку, якщо ви розпаковували гру самостійно, більшість збирачів "Архівів моделей" їх до архіву не додає. "Склад" карти висот Метро 2033:

R – порожній канал
G - Specular map - карта інтенсивності відблиску
B – порожній канал
Alpha - карта висот

Карта нормалей

Створення відбувається так: беремо карту висот, відкриваємо фільтр, задаємо налаштування на розсуд. Далі отримуємо готову картку нормалей. Потрібно оглянути карту, щоб там не було дрібних непотрібних горбиків та інших недоліків. Швидше за все, все можна буде вирішити розмиттям у деяких місцях. Ще, як варіант, чудова методика розмиття, при якій зображення все одно залишається чіткішим:
1. Дублюємо фоновий шар.
2. Дублікату виставляємо режим "Перекриття" .
3. Застосовуємо один з фільтрів розмиття (наприклад, "Розмиття по гаусу" ).
4. Якщо треба, дублюємо цей шар ще кілька разів.

Specular Map

Цю карту створювати не складно: взяти знебарвлений дифуз та обробити темним відтінком ті регіони, які не відображатимуть світло, а світлим – які будуть. Чим інтенсивніший відтінок, тим сильніший ефект.

SDK

Карта нормалей

За наявності вже готової карти нормалей, виготовленої вами з іншої гри, zBrush або будь-якої іншої програми високополігонального 3d моделювання, залишається тільки додати її до SDK . Для чого реєструвати в ЦДК? Для того, щоб потім поєднати нормал карту з заготівлею для бампа і отримати бамп. Параметри:

  • 0.4 :

Type: 2D Texture, Format: 32 bit (8:8:8:8), MipMap Filter: Kaiser (тут вже за бажанням, я завжди використовую Kaiser)

 

 

  • 0.5/0.6, 0.7 :

Тип: Normal Map, MipMap Filter: Kaiser

 

Bump

З використанням окремої карти нормалей bump карта виготовляється дуже просто (заготівлю для бампа краще назвати текстура_bump.tga і помістити в editors/import ):

RGB – залити сірим кольором, RGB = 128,128,128
Alpha - Specular Map

Параметри додавання в SDK не залежать від версії:
Type: Bump Map, у Special Normal Map вказуємо додану раніше карту нормалей.

Якщо раптом виникло бажання обійтися без додаткової карти нормалей, то додавання в SDK і канали змінюються:

RGB – карта висот
Alpha - Specular Map

Це єдиний варіант, коли параметр Virtual height дійсно впливає на інтенсивність бампа.


   
Цитата