Garry's Mod

Garry's Mod

25 ratings
Портирование вашего пропа в игру
By MARK2580
Маленький гайд, как засунуть свой проп (модель) в garry's mod (или другую source игру).
Гайд рассчитан на то, что вы уже умеете маломальски пользоваться 3ds max или Blender и уже сделали свою модель.
А так-же внимательно прочитали мои прошлые руководства, самые нужные для этой задачи я указал.
2
   
Award
Favorite
Favorited
Unfavorite
Предисловие
И так, вам захотелось создать свой проп для игры. С чего же начать ?

Для начала у вас должна уже быть какая-то своя моделька, я не собираюсь объяснять как работать в 3ds max или blender, подразумевается что вы уже это умеете.

Компилятор моделей Source умеет работать только с SMD или DMX форматом. Плагины для работы с ними я указал ниже. Для компиляции модели вам нужно обычно 3 файла: это сам меш модели, меш коллизии и QC файл, где прописаны все свойства, скины, физика и.т.п.
Что потребуется
1. Изначальная моделька и текстуры к ней.
2. 3Ds Max или Blender.
3. Плагины для экспорта/импорта smd или dmx формата.
3ds max
https://www.wunderboy.org/3d-modelling-tools-plug-ins/#max_smd
https://knockout.chat/thread/806/1
Blender
https://gtm.steamproxy.vip/groups/BlenderSourceTools
4.Notepad++ / AkelPad / может быть стандартный блокнот но не рекомендую
5. Crowbar (для компиляции модели) https://gtm.steamproxy.vip/groups/CrowbarTool
6. Ум и сообразительность, а ещё прямые руки.
Создаём коллизию
Коллизия? Коллизия это дополнительный меш, который добавит модели физику. Вы сможете брать модель гравипушкой, стрелять по ней, вставать на неё и что там ещё творят в игре )))

Компилятор моделей Source Engine довольно придирчив к мешу коллизии модели.
- Коллизия обязательно должна быть только "выпуклой".
- Если нужна какая-то сложная геометрия, то нужно её составлять из нескольких выпуклых элементов и они все обязательно должны быть замкнутыми, т.е. не иметь никаких щелей.
- Элементы коллизии не должны быть тоньше 0.5 юнитов (единицы измерения в игре, аналогичны инчам/дюймам).
- Ко всему мешу коллизии обязательно должна быть применена одна группа сглаживания.
- На меш надо накинуть ЛЮБУЮ текстуру, лишь бы там какое-то имя прописалось.
(критерии актуальны скорее для 3ds max, вроде у блендер немного по другому)


Не стоит делать какую-то ультра детализированную коллизию, компилятор всё равно её слегка упрощает и срезает всякие мелочи.
Вот пример не правильного меша коллизии и как его можно исправить, разбив на части.


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







Вешаем на кость и экспортируем
Теперь коллизия у нас есть. Создаём в редакторе (max / blender) кость и цепляем на неё ваш основной меш и меш коллизии. Не важно будет эта модель ститичной или физической или тем более динамической, кость всегда нужна, это подстраховка, что коллизия и сама модель будут всегда вместе. Без общей кости коллизия может например развернуться на 90 градусов относительно самой модели.

Экспортируем получившиеся модельки. По желанию в SMD или DMX кому как удобно, это не слишком важно. Обязательно проконтролируйте, что каждая из них имеет кость.

По идее это всё, больше в 3d редакторе делать не чего, начинается писанина QC файла.
Пишем QC файл
Более развёрнутое описание QC файла можете почитать в моём руководстве.
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=875148802

QC файл, это конфигурация для компилятора studiomdl. В нём прописывается вообще всё что потребуется модели для работы. Имя, путь, вес, свойство, физика, анимации, скины.
Это обычный txt файл, его может открыть и обычный блокнот, но я бы рекомендовал открывать чем-то более профессиональным типа Notepad++ или AkelPad. Расширение файла должно быть .QC !!!

Для руководства я создал примитивную модельку, с которой вы можете сами ознакомиться. В архиве будет готовая модель для игры с текстурами и исходники smd + qc с комментариями.
https://drive.google.com/file/d/19JGi_dT9fmi-9IVi07Jo63nSY7sBHo-o/view?usp=sharing

Пример QC файла:
$modelname "papka\mymodel.mdl" $staticprop $model "mymodel" "mymodel.smd" $surfaceprop "metal" $contents "solid" $cdmaterials "models\papka\mymodel\" $texturegroup "skinfamilies" { {"mymodel_texture"} {"mymodel_texture2"} } $sequence "idle" { "mymodel.smd" activity "ACT_IDLE" 1 fps 30 } $collisionmodel "mymodel_col.smd" { $mass 5 $concave $maxconvexpieces 999 } $KeyValues { prop_data { "base" "Metal.Medium" "allowstatic" "1" } }

$modelname - здесь пишется путь до модели и её имя. Начальную папку models не надо указывать, все модели по умолчанию компилируются туда, если будет написано только имямодели.mdl

$staticprop - указывает, что модель будет статичной, в случае с garry's mod она может быть и физической, для маппинга этот параметр обязателен.

$model - указывается smd меш самой модели. в первых кавычках можно ничего не писать, но сами кавычки обязательны.

$surfaceprop - материал, из которого состоит модель, в Source Engine 1 модель может иметь только одно свойство, по этому например для моделей машин делают стёкла отдельно. Список всех доступных материалов можно найти здесь https://developer.valvesoftware.com/wiki/Material_surface_properties

$contents - будет ли модель цельной или простреливаемой пулями. solid - цельная, grate - простреливается, что-то вроде забора с металлической сеткой.

$cdmaterials - папка, в которой будут лежать материалы (vmt) для модели, можно указать несколько путей, каждый путь начинается с новой строки и $cdmaterials

$texturegroup - скины модели. Первое имя ОБЯЗАТЕЛЬНО должно совпадать с именем текстуры, которая указана в smd файле, иначе скины не будут работать.
Пример когда меняется одна текстура:
$texturegroup "skinfamilies" { {"texture1"} {"texture2"} }
Пример когда на модели меняется более одной текстуры:
$texturegroup "skinfamilies" { { "texture1" "textureB1" } { "texture2" "textureB2" } }
Если на модели 2 и более разных текстур, но вы собираетесь менять только одну из них, можно воспользоваться первым вариантом. Так-же на одну модель есть лимит - 32 материала. Т.е. в группах перечисляются только те текстуры, которые изменятся в другом скине, не нужно перечислять всё что есть на модели.

$sequence - анимация простоя / анимация по умолчанию. В нашем случае это просто моделька, по этому можно указать основной меш.

$collisionmodel - smd / dmx файл с коллизией модели.
$mass - масса модели, минимальный вес - 1кг, до 35кг игрок сможет поднять сам, до 250кг - гравипушкой. Слишком большой вес заставит модель вести себя неадекватно, например модель в 1500кг будет плавно падать вниз, как будто она пёрышко.
$concave - заставить компилятор просчитать вогнутую коллизию (детальную), а не генерировать один целый меш.
$maxconvexpieces - указать лимит на количество элементов в меше коллизии. По умолчанию в коллизии может быть максимально 40 элементов.

Физические свойства
$KeyValues { prop_data { "base" "Metal.Medium" "allowstatic" "1" } }
Добавьте эту строчку в конце QC если хотите, чтобы ваша модель была физической, актуально в основном для мапперов.
Metal.Medium - это пресет материала для ломания модели так скажем... В общем некоторые из них позволяют разрушить модель, если ей нанесён заранее прописанный урон. В данном случае указан металл, по этому модель бронебойная. Другие пресеты можно найти здесь.
https://developer.valvesoftware.com/wiki/Prop_data_base_types
Компилируем
Ну и наконец-то можно скомпилировать модельку. Открываем Crowbar... надеюсь вы уже всё настроили по моему руководству... ведь да ???
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=1694677975

Кидаем QC во вкладку Compile и тыкаем кнопку Compile. Если всё сделано верно, ниже побежит лог компиляции, а затем в конце высветится.
... Compiling with Crowbar 0.74: "D:\tutor_mymodel\исходники\mymodel.qc" finished.
Далее можно тыкнуть кнопку Use In View и далее кнопку View, откроется HLMV (просмотрщик моделей) с вашей моделькой, где её можно посмотреть, повертеть, увидеть что она пока без текстур...

Как создать VTF текстуру и прописать VMT к ней, можно узнать ТУТ и ТУТ
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=961336922
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=807476997

Полученные файлы кидаете в папку, которую указывали в QC в параметре $cdmaterials
В hlmv можно тыкнуть F5 (обновить) и уже повертеть готовую модельку с текстурами.
Идём играть
Ну чтоЖ, если всё получилось, заходим в игру, ищем модельку, спавним. Ура, можно играть !!!
Ошибки компиляции
Перечислю самые частые ошибки:

WARNING: COSTLY COLLISION MODEL!!!! (81 parts - 40 allowed) WARNING: Error with convex elements of mymodel_col.smd, building single convex!!!! Model has 82 convex sub-parts Collision model completed.

Ошибка возникает, если у вас превышен стандартный лимит в 40 элементов для меша коллизии. Припишите $maxconvexpieces с подходящим лимитом.

WARNING: Error with convex elements of mymodel_col.smd, building single convex!!!! Model has 81 convex sub-parts Collision model completed.

Ошибка возникает, если у вас какой-то из элементов коллизии слишком тонкий, имеет сломанную геометрию или ещё какие-то проблемы, в том числе на меше нет никакой текстуры.

WARNING: Model has 2-dimensional geometry (less than 0.500 inches thick on any axis)!!!

Аналогично ошибке выше, таких строчек может высыпать очень много, по строке на каждый "бракованный" элемент в коллизии.
14 Comments
MARK2580  [author] 26 Mar, 2024 @ 8:13pm 
модель ищет vmt, какой искать vtf в vmt пишется...
angel 2-w 26 Mar, 2024 @ 4:22pm 
Оказывается у меня название материала в блендере не совпадало с названием vtf и vmt. Я совместно с другом делал, он английский плохо знает и написал с ошибкой))
MARK2580  [author] 26 Mar, 2024 @ 3:32pm 
Ну в теории модели могут vmt даже просто из materials считать, но это "не красиво" с точки зрения файловой системы.
@RareFox, в первую очередь стоит глянуть сам скомпилированный mdl через crowbar например во вкладке View чтобы увидеть какие пути и материалы ищет, а потом уже проверять существование этих материалов и проверять пути в них
Firen 26 Mar, 2024 @ 7:56am 
RareFox, а у тебя где все текстуры лежат? Просто текстуры надо кидать в Materials --> Models ---> Имя вашей Папки для Материала.
Firen 26 Mar, 2024 @ 7:53am 
Неплохо! Пожалуй сохраню, это мне поможет в будущем. Держи награду за Старания:steamthumbsup:
angel 2-w 26 Mar, 2024 @ 6:58am 
всё равно проблема с "эмо-текстурами".....делаю всё по гайду и другие смотрел, но он не хочет видеть текстуру. Пути прописал, расширения указал, всё сделал, но не работает.
Могу приложить ссылку на гуглдиск, если стим разрешит
MARK2580  [author] 19 Mar, 2024 @ 7:59am 
:lunar2019coolpig:
C R E O N I X 19 Mar, 2024 @ 7:11am 
Молодец, правильных руководств должно быть больше!
Dima³²² 15 Mar, 2024 @ 2:28am 
:steamsunny::citranium:
Dima³²² 15 Mar, 2024 @ 2:28am 
урааа теперь я могу сделать класную модельку