[Руководство] Декомпилирование/Компилирование моделей CSS/CS GO

В данной статье я хочу рассказать о простых для многих процессах - декомпиляции и компиляции, пояснить связанные с ними вещи и всё "разжевать". И так, давайте будем разбираться.

План:

1. Общая нудная и нужная информация.
2. Декомпиляция/компиляция для CSS STEAM и CS GO.
3. Нюансы компиляции для CSS V34 и как это делать.
4. Ошибки и нюансы при работе с моделями.


1. Вступление и общая информация о модели.


Когда вы скачиваете модель, то вы видите зачастую 4 папки: materials, models, scripts, sound. В данной статье нас будет интересовать только папка "models". Если мы пройдём до конца в папки, то мы увидим множество файлов разных форматов. Нас интересуют файлы формата ".mdl".
Что это такое?
v - это наша модель, которую мы видим от 1-го лица, в большинстве мы работаем именно с ней. На данной модели у нас есть разные референсы рук, анимации и разные элементы кастомизации.
w - это наша модель, которую мы видим на земле, в руках других игроков. Как правило, данная модель менее полигональна, детализирована и тд. Это делается для того, чтобы не нагружать сильно систему игры, не вызывать конфликтов и просто нет большой надобности в её высочайшем качестве, да и для уменьшения нагрузки.
*CS GO - в данной версии игры на модель упавшую есть отдельная модель, которая подписывается как _dropped.
Отлично, когда мы разобрались в типах формата как ".mdl", то давайте теперь поговорим что это вообще такое.
.mdl - это игровой архив, грубо говоря. Один из многих, которые ранее использовала компания Valve. В данном архиве содержатся анимации, наши 3д модели, конфигурационный файл. Используя программы (я их укажу ниже), мы производим декомпиляцию (процесс разархивации), после этого процесса мы видим все извлечённые файлы.

2. Вступление и общая информация о других игровых форматах.

Если мы смотрим в другую папку, а именно - materials, то там тоже много интересного. Там мы встретим файлы 2 типов:
- .vtf - файлы текстурные, карты цвета, нормали, блеска и прочего.
- .vmt - файлы конфигурационные к ним. В них пишутся пути к картам, настройка блеска для текущей развёртки и прочее.

3. Что мы получаем в результате декомпиляции?
Мы получаем файлы в 2 форматах: .smd и .qc.
smd
- в данном формате содержатся 2 разных типа файлов: анимации и сами 3д модели.
В формате .smd мы видим 3д модели наших перчаток, стикеров, самого оружия. Для меньшей нагрузки каждая из самих 3д моделей может быть разделена на несколько smd файлов. Например: цевьё, приклад, глушитель могут у нас идти отдельно, но вместе складывать 1 оружие, чаще всего такое разделение есть в моделях игроков. В файлах 3д модели мы видим кости, голую 3д модель. На эти файлы накладываются анимации и текстуры. Более подробно о 3д моделях можно прочитать в моей статье о 3д моделировании.
Так же в формате .smd мы получаем различные анимации. Про них я расскажу в отдельной статье. Единственное, что хочу тут упомянуть, так это 2 простые вещи: не лезьте, если не понимаете и не изобретайте велосипед. А теперь немного поясню свою позицию. Если вы не понимаете примерно, что вы делаете, то вы просто поломаете рабочую систему) А касательно второго, то если вы делаете игру самостоятельно и работайте непосредственно в движке игры, то вы можете допустить сколько угодно и какие анимации, но при работе на движке - так не получится. Если вы работаете в движке - вы хозяин, вы барин, вы решаете. Но если вы на движке, то вы подчиняетесь установленным им правилам. Например: в ксс вы не добавите 2 анимации перезарядки, чтобы они корректно работали в онлайне и тд.
.qc - этот файл будет всего 1. Это файл будет всего 1, это общий конфигурационный файл всей нашей модели. В нём прописываются разные пути, кости, настройки анимаций, прописываем референции, положение. Не забываем всё правильно прописывать и т.д, 90% ошибок после компиляции в этом файле.

СНАЧАЛА АЛГОРИТМ ДЛЯ CSS STEAM и CS GO. ДЛЯ CSS V34 В КОНЦЕ СТАТЬИ.

4. Как этого достичь?

Для данной манипуляции можно использовать 2 программы: Crowbar и SDK v 2.2 (для CSS V34)
Устанавливаем программы, выбираем нужные нам игры и настраиваем саму программу. Я буду показывать на примере Crowbar.
1. Заходим в раздел Set Up Games и настраиваем пути к файлам. У меня CS GO нет, у меня лишь необходимые мне файлы для работы, потому и пути странные.
1672847644551.png
2. Далее, идём во вкладку Decompile, будем разбирать нашу модель. Разбирать будем v модель.
Настроено всё должно быть примерно так. Для CSS и CSGO система одинаковая.
Выбрали модель в первой части, во второй куда деть распаковку и жмякаем Decompile.
1672847805531.png
Получаем такую картину ->
*Показываю на примере той же куклы.
1672847894745.png
3. Настало время нудной теории, так выглядит наш .qc файл ->
1672848058239.png
А теперь будем разбираться что и где значит.
$modelname - путь по папкам к нашей модели, которую мы декомпилили. Меняете путь по папкам? Меняйте и тут. Можно тут поменять и название .mdl
$bodygroup - тут прописываются все референсы (3д модели), которые читаются для данного .mdl.
Не понимаете какой референс за что отвечает? Откройте его через блокнот и смотрите, что там написано. Там будет название текстуры, которая идёт к данной 3д модели.
$cdmaterials - тут пишутся пути к папкам, с которых будут читаться текстуры и .vmt файлы.

По сути, больше ничего вам тут не надо. Всё работает по простому принципу программиста: Работает - не трогай.
При компиляции нужно обязательно прописывать одну строчку:
$origin 0 0 0 0 - Эта строчка отвечает за положение модели в пространстве (XYZ + градусы). При такой прописи сохраняется базовое расположение. Не пропишите - модель уедет. Данное поле изменяется параметрами (+/-) и переменной. Шибко большие не ставьте, достаточно будет до 3-4, на градусную переменную диапазон 0-360. (+ и - указывают сторону вращения относительно 0 для вашей градусной переменной)
Первый параметр - насколько модель далеко от экрана
Второй параметр - право/лево от центра экрана.
Третий параметр - низ/верх от центра экрана.
Четвертый - градусная мера. Модель будет вращаться при изменении данного параметра.
1672848621969.png
3. После внесения необходимых вам изменений сохраняете (Ctrl +S) и компиляция ->
Указываем путь к .qc файлу, который редактировали и compile.
1672848727436.png
4. После компиляции у вас по второму пути создаются файлы, которые нужно вставить заместо предыдущих.



CSS V34:

Тут есть несколько нюансов:
1. После декомпиляции у вас будет слетать $snap.
2. Перед компиляцией нужно писать путь.
3. Ваша модель должна быть небольшого кол-ва полигонов, так как 34 в принципе имеет ограничение на полигоны, а так же сам компилятор может отказаться компилить. (Я не помню точное кол-во, но вроде не свыше 15-20к)
4. Фиксированный путь компиляции. В чём проблема? Смотрим пункты ниже.

Как с этим работать и в чём разница?
SDK V2.2 - это набор различных программ для моделирования и маппинга. К слову, лишь эта версия при компиляции выводит модель адекватной для 34 версии CSS.

1.1 Слетает $snap? Чем это грозит? Это касается моделей оружия, эта строчка идёт возле анимации стрельбы и создаёт непрерывность её. То бишь, если команды не будет, то у вас модель при выстреле будет сильно дёргаться и каждый раз начинать анимацию стрельбы не завершив предыдущую. Что-то вроде заедания/припадка.
Находится вот тут и прописывается вот так.
Если декомпилируете через SDK, то прописывать придётся вручную. Если декомпилировать через Crowbar (программу выше), то слетать не будет.
1672953609684.png
Минутка полезных фактов: если поменять значение в параметре "fps" вы ускорите или замедлите анимацию.

2. Перед декомпиляцией через компилятор SDK придётся прописывать путь в самом начале.
Пишем $cd "Полный путь до .qc" файла". Выглядеть будет примерно так ->
1672953894866.png
4. Фиксированный путь компиляции. Ваша модель будет собираться по пути, который аналогичен вашему пути в параметре $modelname. Условно, если я начну компилировать данную модель, то у меня она соберётся по пути ->
E:\Ultimate SSDK v2\Source Engine 2009\cstrike\models\weapons\ файлы моей мки. У вас путь будет абсолютно анологичен, собираться будет обязательно в папке самой программы.
В чём ещё проблема? Ошибка при компиляции может быть вызвана тем, что в папках программы не будет папок вашего пути. Условно, если я пишу "kult" вместо "weapons", то у меня не скомпилирует. Как это исправить? Добавьте папки с вашего пути и всё.

Как работать в SDK для CSS V34?

Декомпиляция:
1. Устанавливаем и запускаем SDK. Выбираем снизу версию игры -> запускаем MDL Decompiler
1672954346042.png
1 путь - что декомпилируем, 2 - где будут файлы.
А дальше, всё тоже самое, что и для Crowbar, но с учётом нюансов выше.

Компиляция:
Запускаем Studio Compiler -> сверху Model Compile -> чуть ниже compile w/Existing QC -> указываем путь к нашему .qc файлу и compile. Далее берём файлы по нашему пути.
1672954567054.png

Возможные ошибки при работе с моделями:

1. Чёрно-розовые квадраты.
Это ошибка вызвана текстурной составляющей, поиском неверных настроек файлов и тд. А теперь подробнее о причинах и решениях:

• Неправильные пути в vmt к текстурам (Нужно перепроверять)
• Версия vtf файла соответствует версии vtf CS GO.или наоборот. Для CS GO 7.5, для CSS 7.4 и ниже.
• Неправильные пути к qc-файле (пути к текстурам, что обозначаются как $cd. Это пути к папкам, с которых будут считываться материалы)
• Неправильное местоположение текстур, vmt, названия и тд.

2. Заломы рук, костей при смене перчаток для CSS V34 или иная схожая проблема.
При попытке адаптировать новую модель для 34 версии CSS, у вас могут возникать заломы рук, искажения и деформации модели. Исправляется это зачастую простыми махинациями :

• Прописать строчки костей в qc-файл и скомпилировать.

Строчки костей в спойлере чуть ниже ->
$bonemerge "v_weapon"
$bonemerge "v_weapon.Bip01_R_Forearm"
$bonemerge "v_weapon.Bip01_R_Hand"
$bonemerge "v_weapon.Bip01_L_Forearm"
$bonemerge "v_weapon.Bip01_L_Hand"
$bonemerge "v_weapon.Bip01_L_Finger0"
$bonemerge "v_weapon.Bip01_L_Finger01"
$bonemerge "v_weapon.Bip01_L_Finger02"
$bonemerge "v_weapon.Bip01_L_Finger1"
$bonemerge "v_weapon.Bip01_L_Finger11"
$bonemerge "v_weapon.Bip01_L_Finger12"
$bonemerge "v_weapon.Bip01_L_Finger2"
$bonemerge "v_weapon.Bip01_L_Finger21"
$bonemerge "v_weapon.Bip01_L_Finger22"
$bonemerge "v_weapon.Bip01_L_Finger3"
$bonemerge "v_weapon.Bip01_L_Finger31"
$bonemerge "v_weapon.Bip01_L_Finger32"
$bonemerge "v_weapon.Bip01_L_Finger4"
$bonemerge "v_weapon.Bip01_L_Finger41"
$bonemerge "v_weapon.Bip01_L_Finger42"
$bonemerge "v_weapon.Bip01_L_ForeTwist"
$bonemerge "v_weapon.Bip01_R_Finger0"
$bonemerge "v_weapon.Bip01_R_Finger01"
$bonemerge "v_weapon.Bip01_R_Finger02"
$bonemerge "v_weapon.Bip01_R_Finger1"
$bonemerge "v_weapon.Bip01_R_Finger11"
$bonemerge "v_weapon.Bip01_R_Finger12"
$bonemerge "v_weapon.Bip01_R_Finger2"
$bonemerge "v_weapon.Bip01_R_Finger21"
$bonemerge "v_weapon.Bip01_R_Finger22"
$bonemerge "v_weapon.Bip01_R_Finger3"
$bonemerge "v_weapon.Bip01_R_Finger31"
$bonemerge "v_weapon.Bip01_R_Finger32"
$bonemerge "v_weapon.Bip01_R_Finger4"
$bonemerge "v_weapon.Bip01_R_Finger41"
$bonemerge "v_weapon.Bip01_R_Finger42"
$bonemerge "v_weapon.Bip01_R_ForeTwist"
$bonemerge "v_weapon.Bip01"
$bonemerge "v_weapon.Bip01_Pelvis"
$bonemerge "v_weapon.Bip01_Spine"
$bonemerge "v_weapon.Bip01_Spine1"
$bonemerge "v_weapon.Bip01_Spine2"
$bonemerge "v_weapon.Bip01_Spine3"
$bonemerge "v_weapon.Bip01_Neck"
$bonemerge "v_weapon.Bip01_L_Clavicle"
$bonemerge "v_weapon.Bip01_L_UpperArm"
$bonemerge "v_weapon.Bip01_R_Clavicle"
$bonemerge "v_weapon.Bip01_R_UpperArm"

• Не помогло? Удалите "$definebone" с qc-файла и скомпилируйте. я

Если у вас схожая проблема, но не с руками, то попробуйте прописать кости с текущих референсов.
3. Проблемы с анимацией осмотра (Полный расколбас)

В некоторых случаях после компилирования модели, анимация осмотра или другая может выдавать движения, в которых требуется экзорцист.
• Пропись костей (как в примере выше).
• В таком случае нужно будет импортировать анимацию в блендер 3д и обрезать её, когда ещё всё хорошо.

4. CSS v34 вылетает
Если после установки модели у вас вылетает CSS v34, то на модели превышена допустимая полигональность.

• В таком случае, нужно будет уменьшить общее количество полигонов модели, постараться не потерять при этом большую часть детализации и не сделать из модели "картошку". Данную операцию можно сделать с помощью Blender 3D или Milkshape 3D.


Если вы используете модель после создания скина, то вы можете взять любую чужую модель, поменять там пути описанным выше способом и скомпилировать.

Использованы программы: Crowbar, SDK v2 и блокнот обыкновенный.


Вы получили подробный гайд и пояснение как, что и чем работать. Вот вам толчок для движения.
От вас же требуется написать ваше мнение о гайде в комментариях и поставить + в репутацию.
В следующей статье я расскажу как сделать модель с 0.
Предлагайте свои идеи для статей.
  • Мне нравится
Реакции: Lev и yallstpd
Об авторе
Kult
Модератор smash-cs.ru

Оказываю услуги в сфере моделлирования и текстурирования, услуги в настройке серверов и помощи, озвучке.

Комментарии

Нет комментариев для отображения.

Информация о статье

Автор
Kult
Просмотры
173
Последнее обновление

Ещё в Source SDK

Больше от Kult

Поделиться этой статьёй

Сверху Снизу