- VTF і VMT
- VTF
- VMT
- створення текстур
- типи файлів
- PNG-8 проти PNG-24
- TARGA (.tga)
- Імпорт в VTFEdit
- створення VMT
- Перегляд і застосування текстур
- Створення текстур з прозорістю
- результат:
- Запаковування текстур в карту
- Корисні зауваження
Дотримуючись попереднім статтям циклу, ви напевно освоїли процес створення непересічної карти з унікальними тригерами і різними видами освітлення. Але для втілення найсміливіших ідей в життя чогось не вистачає, чи не так? Стандартний контент польоту фантазії не помічник, тому в даному уроці ви навчитеся створювати власні текстури для своїх карт на движку Source. Подібним чином ви зможете створювати текстури і для моделей, спреїв і взагалі всього, що працює із зображеннями в іграх на Source.
Створення текстур НЕ інтуїтивний процес, але і не надмірно складна задача. На відміну від більшості сучасних двигунів тут немає «просто перетягувати і все працює»: більшу частину роботи доведеться робити самостійно.
VTF і VMT
Текстури діляться на два файли: VTF (Valve Texture Format), файл, в якому зберігається зображення, самі пікселі вашої текстури, і VMT (Valve Material Type), файл, який містить метадані та інформацію про шейдерах. Для відображення текстури в грі використовуються обидва файли.
VTF
Файли VTF (.vtf) зберігають всю інформацію про пікселі, альфа-картах і MIP-картах, яку може використовувати текстура.
Вони створюються конвертацією вихідного зображення в спеціальній програмі. Дані розташовуються таким чином, щоб рендеринг був найбільш ефективним, тому звичайні .jpg / .png-файли без конвертації не використовуються. Найголовніше - розміри зображення повинні представляти із себе двійку в ступені (тобто 64 × 64, 128 × 128, 256 × 256, 1024 × 1024 і т.д.).
Докладний технічний аналіз файлів VTF можна знайти на Valve Developer Wiki .
VMT
Файли VMT (.vmf) - це прості текстові файли з метаданими текстури.
Серед них є така інформація, як:
- Чи є текстура напівпрозорої?
- Анімована вона?
- Чи використовує вона рельєфне текстурування?
- Який звук вона відтворює при зіткненнях?
Для одного VTF-зображення можна зробити кілька VMT-файлів з різними властивостями, і Hammer буде приймати їх за різні текстури. У наступних уроках ми розглянемо просунуті особливості VMT, що додають текстурі реалістичності.
Докладний технічний аналіз файлів VMT можна знайти на Valve Developer Wiki .
створення текстур
Що ж, приступимо. Я буду використовувати для створення текстури логотип ProGamer.
Логотип оточений прозорим фоном, але з цим ми розберемося потім. Розмір 1418 × 1418 я поміняв на 1024 × 1024. На практиці ви будете використовувати найменший можливий розмір, а такі великі текстури будуть застосовуватися тільки для найважливіших речей. Хорошим базисом для більшості текстур буде 512 × 512.
Нам потрібно конвертувати вихідний файл в формат VTF. Valve докладає до своїх ігор програму VTEX, це простий інструмент командного рядка, здатний створювати VTF-файли тільки з TARGA (.tga). Є альтернатива краще - VTFEdit, яка працює з більшістю форматів, має власний інтерфейс і велика кількість функцій.
типи файлів
VTFEdit відкриває файли .bmp, .jpg, .gif, .png і .tga.
Якщо ви не знайомі з їх особливостями, то ось все, що вам дійсно потрібно знати:
- PNG, GIF і TGA підтримують прозорість.
- GIF підтримує анімацію (але перед імпортуванням потрібно розбивати на кадри).
- Для всього іншого рекомендується JPG.
- З BMP не зв'язуйтеся.
PNG-8 проти PNG-24
24-бітові PNG-файли підтримують змінну прозорість, але погано імпортуються в VTFEdit, так що для змінної прозорості потрібно використовувати .tga.
TARGA (.tga)
TARGA - це старий химерний формат зображень зі своїми приємними особливостями, але в багатьох областях він витісняється форматами PSD або PNG. Головна проблема полягає в пошуку програм, здатних створювати / редагувати такі файли. Як ви могли здогадатися, найкращим інструментом для цього є Photoshop. VTFEdit / VTEX добре дружать з TARGA, так що якщо виникають проблеми з імпортуванням, конвертуйте зображення в цей формат.
Імпорт в VTFEdit
Вважаю, до цього моменту ви вже приготували бажане зображення. Вибираємо пункт меню File> Import. Для початку познайомтеся з цим вікном:
Тут багато всього, але я розіб'ю по пунктам:
- Normal Format: Яка компресія використовується для стандартних (непрозорих) зображень.
- Alpha Format: Компресія, використовувана в зображеннях з прозорістю.
- Texture Type: Застосовується, тільки коли ви імпортуєте більше одного зображення, і визначає, що вони повинні з себе представляти. У 99% випадків тут вибирається Animated Texture.
- Resize / Clamp: Тут можна змінити розмір в останній момент, але я раджу робити це заздалегідь.
- Generate Mipmaps: MIP-карти - це зменшені версії текстури, які гра буде накладати при віддаленні. Тут краще все залишити за замовчуванням.
- Normal Map: Карти нормалей використовуються для додання текстурі уявної глибини. Знову ж, цим краще займатися самостійно, але ви можете дати VTFEdit шанс, щоб переглянути результат її роботи.
Гарне керівництво по вибору компресії є на Valve Developer Wiki . Якщо виникають сумніви, залишайте все за замовчуванням.
Вкладку Advanced ми поки не чіпаємо (тут налаштовується VTF-файл - залишайте 7.2, якщо тільки не знаєте точно, що робите).
Після натискання ОК ви повинні побачити ось це:
Тепер, якщо не хочете пограти з просунутими настройками, можете натискати File> Save і отримаєте готовий VTF-файл.
створення VMT
Ми створимо голий скелет файлу VMT для роботи разом з VTF. У тій же папці, де ви зберегли свою progamer.vtf, створюємо новий текстовий файл і називаємо його progamer.vmt, потім відкриваємо в блокноті або іншому текстовому редакторі і вводимо ці рядки:
«LightmappedGeneric»
{
«$ Basetexture» «progamer / progamer»
«$ Surfaceprop» «MetalPanel»
«$ Surfaceprop2» «MetalPanel»
}
- LightmappedGeneric - це тип шейдеров, який буде використовувати текстура, це важливо, коли вам потрібні незвичайні ефекти або ви робите текстуру для файлу моделі.
- Basetexture - це створений вами файл VMT: зауважте, що у нього немає розширення і він знаходиться в папці progamer, яку ми поки не створили (але незабаром створимо).
- Surfaceprop визначає деякі фізичні властивості текстури.
У VMT-файл можна багато чого додати, розширений список можна знайти на Valve Developer Wiki .
Перегляд і застосування текстур
Тепер у нас є обидва необхідних файлу, давайте пустимо їх у справу.
Спочатку їх потрібно помістити в потрібну папку, вона залежить від гри, для якої ви зробили текстуру і від налаштувань Hammer. приклади:
- Half-Life 2: Episode 2: Steam \ steamapps \ common \ Half-Life 2 \ ep2 \ materials
- Team Fortress 2: Steam \ steamapps \ common \ common \ Team Fortress 2 \ tf \ materials
- CS: GO: Steam \ steamapps \ common \ Counter-Strike Global Offensive \ csgo \ materials
Зазвичай всі файли матеріалів поміщаються в окрему підпапку, щоб в базовій папці не скупчувалися потенційно конфліктуючі матеріали. Не забувайте прописувати назву папки в VMT-файлах.
Передбачається, що текстуру ви робили для своєї карти, так що відкривайте Hammer і шукайте нову текстуру в списку матеріалів. Якщо все пройшло нормально, вона там буде. Якщо нічого немає, можливо, ви не туди помістили файли. Якщо текстура є, але вона порожня / фіолетова / неправильна, то проблема може бути в кодуванні текстури або настройках VMT.
І ось, ваша текстура в грі.
Створення текстур з прозорістю
- Переконайтеся, що зображення містить прозорість / альфа-канал (для цього краще підходить формат TGA).
- Вибирайте компресію з підтримкою альфа-інформації (дефолтна DXT5 підійде).
- Додайте в VMT: «$ translucent» 1.
- Цього має бути достатньо.
Створення анімованих текстур
При створенні анімаційних текстур велика частина роботи проводиться перед імпортуванням, так як кадри анімації повинні зберігатися в окремих файлах. З цим можуть виникнути складності, але гугл вас виручить.
Назви готових файлів повинні нумеруватися за типом: imagename_0000.tga, imagename_0001.tga, imagename_0002.tga.
При імпортуванні виділяйте відразу всі файли, інше зробить VTFEdit.
Якщо все спрацювало, в інформації про зображення повинно бути вказано більше одного кадру.
VMT-файл для анімованої текстури містить трохи більше даних:
«LightMappedGeneric»
{
«$ BaseTexture» «progamer / animated»
«$ Surfaceprop» «MetalPanel»
«$ Surfaceprop2» «MetalPanel»
«$ Translucent» «1»
«Proxies»
{
«AnimatedTexture»
{
«AnimatedTextureVar» «$ basetexture»
«AnimatedTextureFrameNumVar» «$ frame»
«AnimatedTextureFrameRate» «10»
}
}
}
результат:
Центральна текстура анімована, права текстура статична, але використовує деяку магію в файлі VMT для руху. Це ми розглянемо в наступних уроках.
Запаковування текстур в карту
Тут трохи проявляються особливості різних ігор. Якщо ви хочете поширювати свою карту до призначених для користувача текстурами через інтернет, то найкращим рішенням буде запакувати текстури в файл BSP.
Для аддонів Garry's Mod цього робити необов'язково, так як структура .gma зберігає файлову ієрархію. Однак, якщо ви хочете, щоб люди запускали карту на своїх серверах і не діставали вас відгуками «карта відстій, текстурок немає», то краще їх все ж запакувати. Таке трапляється, тому що люди декомпілюються ваш файл GMA для зберігання серверних файлів в FastDL, а не в Workshop.
І як же пакувати текстури в карту? За допомогою Pakrat.
Pakrat дозволяє відкривати файли BSP і змінювати їх вміст. BSP-файли являють собою контейнери (як .zip, наприклад), де зберігаються різні дані - зазвичай це файли самої карти, файли освітлення, кубічні текстури і будь-який додатковий контент, який ви вирішили помістити в свою карту.
Далі все досить просто: відкриваємо скомпільовану карту, натискаємо Add і додаємо свої текстури.
Звертайте увагу на стовпець Path: там має бути щось на зразок "materials / ваша-Підпапка /".
Зберігаємо карту і все готово. Для тестування видаліть свої текстури з папки гри, щоб переконатися, що вони працюють з .bsp, а краще взагалі перевіряйте карту на іншому комп'ютері.
Корисні зауваження
- Якщо виникають проблеми, перевіряйте консоль, вона може підказати, чому щось пішло не так.
- Source кешируєт дані текстур, так що команда «reload» не дасть змін, завантажте іншу карту, потім знову свою або перезапустіть гру.
- У Hammer працює таке ж правило, але тут допоможе тільки перезавантаження, благо Hammer запускається швидко.
- При імпортуванні в VTFEdit перевіряйте версію VTF, різні ігри підтримують тільки певні версії (версія 7.2 добре підтримується, хоч і стара).
Анімована вона?
Чи використовує вона рельєфне текстурування?
Який звук вона відтворює при зіткненнях?
І як же пакувати текстури в карту?