Source Filmmaker

Source Filmmaker

186 ratings
Создание VTF текстуры
By MARK2580
Привет юзер.
Представляю тебе коротенький гайд, по конвертации jpg / jpeg / png / tga / bmp / dds / psd в формат VTF, понятный движку Source Engine (1).
2
   
Award
Favorite
Favorited
Unfavorite
Нужный софт
Нам понадобится:

  • Программная основа VTFEdit / VTFCmd / HLLib
    Скачать[nemesis.thewavelength.net]

Для нытиков про вирусы это официальный сайт автора программ которыми моддерское сообщество пользуется больше 10 лет. http://nemesis.thewavelength.net

Ниже альтернативные ссылки т.к. официальный сайт похоже умер.
TopHATTwaffle's[www.tophattwaffle.com]
Valvedev[valvedev.info]
Gamer Lab[gamer-lab.com]
GameBanana[gamebanana.com]

В архиве можно найти последнюю версию VTFEdit (не требует установки) и консольную программу VTFCmd.
VTFEdit - полноценная программа для конвертации форматов в VTF и обатно.
VTFCmd - консольная прога для конвертации форматов через cmd строку Windows. Очень удобна, если надо без лишних телодвижений конвертировать целую папку в VTF.

Папка х64 - для 64 битных систем Windows
Папка x86 - для 32 битных систем Windows
Работа с программой VTFEdit
Основное окно программы.


Для импорта выше указанных форматов:
Жмём File - Import и выбираем нужное изображение

Окно параметров импорта изображения.


General:
Normal Format - формат, в который будет сжиматься текстура
Alpha Format - формат альфа канала tga (png ?)

Texture type:
Animated Texture - анимированная текстура, если вы выбрали более 1 изображения
Environment Texture - текстура-env_map, создание текстуры кастомного отражения.
Volume Texture - обычная текстура

Resize:
Различные варианты способов, по которым будет масштабироваться текстура, если она не кратна 2м. Т.е. 64х128х256х512 итд

Clamp:
Обрезка. Здесь устанавливаются максимальные размеры выходной текстуры. Предположим у вас есть текстура 9999х9999, при импорте она может быть автоматически урезана например до 2048х2048.

Generate MipMaps:
Не советую отключать. MipMaps это мини версии текстуры, которые появляются, когда игрок отдаляется от неё. Что снижает нагрузку и исключает эффект мельтешения.


Дополнительные параметры импорта.


Version:
Версия VTF формата. Советую использовать 7.3. Из большинства движков уже выпилили поддержку версий 7.1 и 7.2. Версии 7.4 и 7.5 встречаются в играх вроде Portal 2 и Left 4 Dead 2.

Выбрав нужные параметры жмём ОК.
В зависимости от жирности входного формата программа может повиснуть на неопределённое время, идёт конвертация в VTF.

После конвертации видим примерно следующее.


Для отображения прозрачности нажмите View - Mask или Ctrl+M (вкл/выкл)


Сжатие DXT и ABGR8888
DXT1-5 сжатие

DXT1-5 сжатие подходит для большинства текстур, которые не требуют максимального качества. Текстура с таким сжатием весит намного меньше чем ABGR8888, но такая текстура имеет низкое качество, особенно это заметно на градиентах или мелких элементах.

ABGR8888 сжатие

ABGR8888 текстура получается практически без сжатия, имеет максимальный вес, даже больше оригинала, т.к. ещё учитываются MipMaps. Желательно использовать для текстур например волос, где требуется максимальное качество альфа канала и прозрачности.
Текстуры где используются градиенты, мелкие детали на normal / bump картах и.т.п.

Пример внешнего вида модели с сжатием и без. В данном случае, используется в качестве примера $bumpmap текстура.

256
512
1024
2048
4096
DXT1
43kb
170kb
683kb
2.6mb
10.6mb
DXT5 alpha
86kb
342kb
1.3mb
5.3mb
21.3mb
ABGR8888 alpha
342kb
1.3mb
5.3mb
21.3mb
85.3mb

Демонстрация сжатия на различных изображенияx.

Оригинал[/img]
Работа с программой VTFCmd
Если на прямую запустить программу, вы увидите все параметры которые она понимает и несколько примеров, как их использовать для конвертации.

Если просто перетащить файл на VTFCmd.exe то программа сконвертирует в VTF со стандартными параметрами. А это DXT1 / 5 и автоматическое растягивание до 2 к 2м.

Основные команды программы.
  • -file <path> - путь к конвертируемому файлу
  • -folder <path> - путь к папке, если конвертировать сразу целую папку
  • -recurse - параметр, заставляющий искать файлы не только в паке указанной в параметре выше, но и в подпапках.
  • -output <path> - выходная папка. Если не указана, то VTF появятся в этой-же папке.
  • -version <string> - версия VTF формата
  • -alphaformat <string> - формат альфа канала.
  • -resize - указать кратно какому числу урезать входное изображение.

Батник для простой конвертации перетаскиванием на него, но с указанными в нём параметрами.
Данный cmd файл работает, если лежит рядом с VTFCmd.exe. Но обращаться к нему можно хоть с ярлыка.
start "" "%~dp0/vtfcmd.exe" -file "%1" -format "dxt1"

Краткое описание:
%~dp0 - авто генерация пути до vtfcmd.exe, во избежании ошибок запуска.
%1 - авто генерация пути и имени файла, который "кидают" на этот батник

Исправление ошибок
Самая распространённая ошибка это проблемы с параллельной конфигурацией. Самая странная и самая частая ошибка при запуске программ использующих Net и C++ пакеты.
Выглядит такая ошибка примерно так.


Ошибка на 100% лечится довольно просто, но очень не быстро. Для этого вам надо скачать пакет называемый microsoft visual c++ hybrid. Обычно их название сокращается до VCR_Hyb_x86_x64_какая_то_дата.exe
Никаких ссылок я пожалуй оставлять не стану, т.к. Microsoft такие пакеты для загрузки не распространяет и заставляет качать сотни отдельных пакетов. Но через google можно быстро найти подобный инстайлер. Выглядит он так и ник иначе ! Ставится всё автоматически и что-то делать во время этой установки крайне не рекомендую. В зависимости он убогости компа установка может длится около 15 минут, но после установки все проблемы с конфигурациями 100% пропадают, проверено и мной и другими людьми.





И это всё ?
Пока всё. Возможно позже добавлю больше информации.
127 Comments
MARK2580  [author] 43 minutes ago 
для начала бы мне понять что такое "без фона" и "расплывается" :lunar2019deadpanpig:
Helsi 3 hours ago 
Отличный гайд, но не знаете ли вы причину того, что после импорта текстуры без фона, она просто расплывается
О! ну тогда уж попробую в vtfcmd загрузыть пнгшк
MARK2580  [author] 8 Sep @ 2:06am 
Если vftedit то без понятия, он jpg/jpeg/png/bmp/tga/psd жрёт. Если vtfcmd тогда мож путь или имя прописаны не верно или cmd строка не верная.
что делать если ОНО выдаёт "error loading image" Я уже испробовал все пнгшк загрузыть, но всё же одна и та же ошыбка.
Let's have Shrex 6 Sep, 2023 @ 9:37pm 
Мужик, реальный тебе респект за просвещение! Чисто легенда!
MARK2580  [author] 6 Sep, 2023 @ 8:48pm 
ну да, значит это фонг экспонент, там маска на каналах работает, советую покурить мануалы https://developer.valvesoftware.com/w/index.php?title=$phong
Let's have Shrex 6 Sep, 2023 @ 6:51pm 
Оу, спасибо за такую ценную информацию для меня)
Текстура выглядит как diffuse, только всё в голубом
MARK2580  [author] 6 Sep, 2023 @ 12:56pm 
в сорсе нету никаких хроматиков и металиков, ток спекупляр и то частенько как альфа канал диффуза или нормали.

это скорее всего ковыряешь какую-то fake pbr поделку из SFM, они там ch обозначают как текстуру для шейдера CustomHero из дотки времён 1го соуса, e - может быть и свечением и маской какой-то, надо видеть чё там изображено чтобы определить, называть как-то конкретно текстуру никто не заставляет.

возможно e - exponent, т.е. $phongexponenttexture
Let's have Shrex 6 Sep, 2023 @ 12:04am 
Уважаемый MARK2580, подскажите пожалуйста, что обозначают буквы в названиях текстур (а точнее одна конкретная - "e")?

Например: body_ch, body_d, body_e, body_n?

Я так понял:
ch - это какой-нибудь chromatic, который отвечает за отражение металлических частей модели.
d - diffuse, который является базовой мапой, на которой представлена расцветка модели.
n - normal, т.е. карта нормалей.

А вот "e" это что? emission? exclusion?