Как сделать транспорт для FiveM в Blender с Sollumz 2.9
Модель транспорта FiveM это фрагмент (.yft): арматура, где каждая кость отвечает за часть машины, drawable с мешами и набор баундов коллизии. В Blender с Sollumz вы собираете эти три части, назначаете мешам шейдеры транспорта и экспортируете файлы .yft, _hi.yft и .ytd. Гайд написан по Sollumz 2.9.0 на Blender 5.2, названия панелей и кнопок приведены так, как они выглядят в аддоне.
Что мне понадобится?
| Инструмент | Версия | Для чего нужен |
|---|---|---|
| Blender | 4.2 или новее (Sollumz 2.9.0 задаёт 4.2 как минимальную версию; мы используем 5.2) | Моделирование, риггинг, экспорт. |
| Sollumz | 2.9.0 | Аддон, который читает и записывает файлы моделей GTA V. |
| CodeWalker | Последний релиз | Просмотр архивов игры и извлечение стокового транспорта в качестве образца. |
| GTA V для ПК | Источник образцового транспорта и общих текстур. |
Sollumz устанавливается как расширение Blender. В Blender откройте Preferences > Get Extensions > Repositories > +, выберите Add Remote Repository и введите https://repo.sollumz.org/, затем найдите Sollumz и установите его. При первом запуске аддон предлагает установить зависимости. Согласитесь: одна из них, PyMateria, позволяет Sollumz напрямую записывать бинарные файлы игры. Для чего нужен каждый инструмент, сравнивается в гайде CodeWalker или Sollumz.
Где в Blender находятся инструменты Sollumz?
Инструменты находятся в боковой панели 3D-вьюпорта (клавиша N), на вкладке Sollumz Tools. Свойства выбранного объекта находятся в редакторе Properties, в панелях с названием Sollumz.
| Где | Панель | Что там делается |
|---|---|---|
| Sollumz Tools | General | Import RAGE Assets и Export RAGE Assets. Подпанель View показывает или скрывает коллизии и переключает уровень LOD на экране. |
| Sollumz Tools | Drawables | Create Drawable Objects, Shader Tools, LOD Tools и Bone Tools. |
| Sollumz Tools | Collisions | Create Bounds и Create Collision Material. |
| Sollumz Tools | Fragments | Create Fragment Objects, Set Mass, Copy Bone Physics и Vehicle Tools (light ID, предпросмотр колёс и стёкол). |
| Properties > Object | Sollumz | Тип Sollumz объекта и его настройки. |
| Properties > Bone | Sollumz | Тег кости, флаги кости и переключатель Fragment Physics. |
| Properties > Data (меш) | Sollumz LODs | Какой меш используется на каждом уровне детализации. |
| Properties > Material | Sollumz | Шейдер, текстуры и значения шейдера. |
Как устроен транспорт в Blender?
У каждого объекта в сцене Sollumz есть тип Sollumz. Транспорт выглядит как такое дерево:
mycar Armature, Sollumz type: Fragment (bones = the car's parts)
mycar.mesh Empty, Sollumz type: Drawable
chassis Mesh, Drawable Model (skinned to the bone "chassis")
bodyshell Mesh, Drawable Model
door_dside_f Mesh, Drawable Model
wheel_lf Mesh, Drawable Model, "Is Wheel Mesh" on
...
mycar.col Empty, Sollumz type: Bound Composite
chassis.col Bound Geometry, follows the bone "chassis"
wheel_lf.col Bound Disc, follows the bone "wheel_lf"
door_dside_f.col Bound Geometry, follows the bone "door_dside_f"
...
| Часть | Объект Blender | Тип Sollumz |
|---|---|---|
| Транспорт | Арматура (Armature) | Fragment |
| Видимая модель | Empty, дочерний объект арматуры | Drawable |
| Каждый меш | Меш, дочерний объект drawable | Drawable Model |
| Коллизия | Empty, дочерний объект арматуры | Bound Composite |
| Каждая форма коллизии | Дочерний объект композита | Bound Geometry, Bound Disc, Bound Box и так далее |
Корнем должна быть арматура. Игра находит двери, колёса и сиденья не по именам мешей. Она ищет кости, а у каждой кости есть числовой тег, который Sollumz вычисляет из имени кости. Поэтому имена костей должны быть точными.
Зачем начинать со стокового транспорта?
Импортируйте стоковый транспорт, наиболее близкий к вашему, через Import RAGE Assets и держите его в сцене, пока работаете. Выберите .yft; если рядом лежит _hi.yft, Sollumz объединит оба файла при импорте. Стоковый транспорт служит спецификацией: какие кости существуют, как они называются, какие формы коллизии используются, сколько весит каждая часть и какие у неё шейдеры.
Две привычки экономят здесь время:
- Сначала переименуйте объекты образца, например добавив префикс
ref_. Blender не допускает одинаковых имён объектов, поэтому, если имяchassisвсё ещё занято образцом, ваш собственный меш молча станетchassis.001. - Скопируйте арматуру образца, а не создавайте кости вручную. Копия сохраняет теги костей, флаги костей и настройки физики. Затем передвиньте кости под свою модель и удалите те, которые не используете.
Какие кости нужны транспорту?
Машина использует фиксированный набор имён костей. Вот самые распространённые:
| Кость | Часть |
|---|---|
chassis | Корень транспорта. |
bodyshell | Панели кузова, которые никогда не двигаются. |
wheel_lf, wheel_rf, wheel_lr, wheel_rr | Колёса: переднее левое, переднее правое, заднее левое, заднее правое. |
door_dside_f, door_pside_f, door_dside_r, door_pside_r | Двери со стороны водителя и со стороны пассажира, передние и задние. |
bonnet, boot | Капот и крышка багажника. |
bumper_f, bumper_r | Бамперы, которые могут отвалиться. |
seat_dside_f, seat_pside_f, seat_dside_r, seat_pside_r | Места, где сидит каждый пед. |
steeringwheel | Руль. |
windscreen, window_lf, window_rf | Стёкла. |
headlight_l, headlight_r, taillight_l, taillight_r, indicator_lf, brakelight_l, reversinglight_l | Точки, из которых светит каждый источник света. |
misc_a, misc_b, ... | Дополнительные подвижные или отделяемые части, например спойлер. |
Сиденья и точки входа в vehiclelayouts.meta ссылаются на эти же кости. Позиции, которые мы измеряем на модели, а не подбираем на глаз:
- Двери вращаются вокруг кости, поэтому кость ставится на линию петель: это передняя кромка обычной двери.
- Капот: задняя кромка. Багажник: передняя кромка.
- Руль: центр обода, а не центр всего объекта. Вместе с рулевой колонкой центр габаритного бокса на одной из конвертированных нами машин был смещён на 46 см.
- Кости света: середина светящихся граней.
Каждый меш должен следовать за своей костью. Создайте в нём группу вершин с именем, точно совпадающим с именем кости, и весом 1 на каждой вершине, и добавьте модификатор арматуры. Bone Tools > Add Armature Modifier делает вторую часть для выбранных объектов. Чтобы посмотреть или изменить тег кости, выберите кость и откройте Properties > Bone > Sollumz.
Какие шейдеры используют материалы транспорта?
Материалы в Sollumz это шейдеры игры. Создайте материал в Drawables > Shader Tools кнопкой Create Shader Material или превратите существующий материал Blender в выбранный шейдер кнопками конвертации в той же панели. Вот шейдеры транспорта, которые используем мы, и их назначение:
| Поверхность | Шейдер | Примечание |
|---|---|---|
| Краска кузова, которую игроки могут перекрасить | vehicle_paint1 и другие шейдеры vehicle_paint | Слой краски (основной, дополнительный, перламутр, колёса, салон) задаётся в панели материала Fragment (Vehicle Paint). |
| Части с фиксированным цветом или текстурой: ливрея, пластик, металл, салон | vehicle_mesh | Использует diffuse-текстуру как есть. |
| Шины и диски | vehicle_tire | Используйте его для всего колеса. В наших тестах части колеса на vehicle_mesh в игре не отрисовывались. |
| Стекло | vehicle_vehglass, vehicle_vehglass_inner | Внешняя и внутренняя сторона каждого стекла. |
| Рассеиватели фар, неон | vehicle_lightsemissive | Светится, когда включён соответствующий источник света. |
| Наклейки, сетки, шильдики с прозрачностью | vehicle_decal |
Две вещи, которых не видно в Blender, определяют, как машина выглядит в игре:
- Цвет вершин. В шейдерах mesh красный канал первого атрибута цвета умножается на текстуру. Меш с чёрным цветом вершин в игре будет чёрным, какой бы хорошей ни была текстура. Залейте его цветом, у которого красный равен 255.
- Light ID. В
vehicle_lightsemissiveальфа-канал цвета вершин указывает, к какому источнику света относятся грани. Он задаётся в Fragments > Vehicle Tools > Light IDs: перейдите в Edit Mode с выделением граней, выделите грани, выберите источник света и нажмите Set Light ID.
| Light ID | Свет |
|---|---|
| 0 | Всегда включён |
| 1, 2 | Левая и правая фара |
| 3, 4 | Левый и правый задний фонарь |
| 5, 6, 7, 8 | Поворотники: передний левый, передний правый, задний левый, задний правый |
| 9, 10, 11 | Стоп-сигналы: левый, правый, центральный |
| 12, 13 | Фонари заднего хода: левый и правый |
| с 14 по 17 | Дополнительные источники света |
Что касается текстур: оставьте diffuse от своей модели, а карты specular, normal и грязи по возможности берите из общих текстур транспорта игры. Размеры и форматы описаны в гайде об оптимизации транспорта FiveM.
Как работают колёса?
Игра рисует одну модель колеса на всех колёсах. Смоделируйте колесо один раз как wheel_lf, с центром на его кости, и включите Is Wheel Mesh в Properties > Object > Sollumz. Без этого переключателя колесо экспортируется как часть кузова: у машины одно колесо висит на месте, а на остальных ступицах колёс нет. Vehicle Tools > Preview Wheel Instances показывает колесо на всех четырёх позициях прямо в Blender.
Каждому колесу также нужен свой диск коллизии, чтобы машине было на чём катиться. Об этом рассказано в гайде о коллизии транспорта в Sollumz.
Как в Sollumz работают LOD и файл _hi.yft?
Каждый Drawable Model может содержать пять мешей: Very High, High, Medium, Low и Very Low. Они перечислены в Properties > Data > Sollumz LODs. При экспорте Sollumz записывает меши Very High в <name>_hi.yft, а остальные четыре в <name>.yft. Вручную ничего разделять не нужно: если хотя бы у одной модели есть меш Very High, файл _hi создаётся.
Как сгенерировать младшие уровни и что писать в lodDistances, описано в гайде об оптимизации транспорта FiveM.
Как экспортировать .yft и .ytd?
Выберите фрагмент (арматуру) и нажмите Export RAGE Assets в Sollumz Tools > General. Настройки, важные для транспорта:
| Настройка | Значение | Зачем |
|---|---|---|
| Target Formats | Native | Записывает бинарные файлы, которые игра загружает напрямую. CW XML записывает CodeWalker XML, читаемую текстовую версию, удобную для проверки результата. |
| Target Game Versions | Gen8 | Gen8 означает GTA V Legacy, а Gen9 означает GTA V Enhanced. Если включены оба, файлы попадают в подпапки gen8/ и gen9/. |
| Limit to Selected | Вкл. | Экспортирует только то, что выбрано и видимо. |
| Texture Dictionaries | Вкл., Include: Selected | Записывает .ytd. С вариантом All вы получите ещё и словарь образцового транспорта. |
В результате получаются mycar.yft, mycar_hi.yft и mycar.ytd. Скрытый объект выбрать нельзя, а Sollumz скрывает меши при переключении уровня LOD, поэтому, если ничего не записалось или в логе стоит "No Sollumz objects selected for export!", сделайте транспорт видимым и выберите его снова. После каждого экспорта перед тестом смотрите время изменения файла на диске.
Что проверить перед тестом в игре?
- У каждой кости с включённым Fragment Physics есть коллизия. Если у какой-то её нет, экспорт предупреждает: "Bone has physics enabled, but no associated collision!".
- Ни у одного меша нет чёрного цвета вершин.
- Каждая текстура, которую использует материал, есть в
.ytdили намеренно берётся из общих текстур транспорта игры. - У меша колеса включён Is Wheel Mesh.
- Масштаб применён: на арматуре не осталось масштаба.
- Каждый файл проходит проверку размера на сервере. См. предупреждение oversized assets.
Как перенести модель в FiveM?
Положите три файла в папку stream ресурса. Самый быстрый первый тест: назвать их именем стокового транспорта, например sultan.yft, sultan_hi.yft и sultan.ytd. Тогда игра рисует вашу модель везде, где спавнится Sultan, с его handling и сиденьями, и meta-файлы пока не нужны.
Когда модель выглядит правильно, дайте ей собственное имя и meta-файлы, чтобы она загружалась рядом со стоковыми машинами. Эта часть описана в гайде о добавлении аддон-транспорта на сервер FiveM.
Частые вопросы
- Какая версия Blender нужна для Sollumz 2.9?
- Sollumz 2.9.0 задаёт Blender 4.2 как минимальную версию. Мы используем его на Blender 5.2.
- Может ли Sollumz экспортировать файлы .yft напрямую?
- Да. Если в опции Target Formats выбрано Native, Sollumz записывает бинарные файлы .yft, .ydr и .ytd, которые игра загружает напрямую. Для этого нужна зависимость PyMateria, которую аддон предлагает установить. Вариант CW XML вместо этого записывает CodeWalker XML.
- Что экспортировать для FiveM: Gen8 или Gen9?
- Gen8. В Sollumz Gen8 означает GTA V Legacy, а Gen9 означает GTA V Enhanced.
- Как Sollumz создаёт файл _hi.yft?
- Автоматически. Меши в слоте LOD Very High записываются в name_hi.yft, а меши High, Medium, Low и Very Low в name.yft.
- Почему мой транспорт в игре чёрный?
- Обычно потому, что у меша чёрный цвет вершин. В шейдерах vehicle mesh красный канал цвета вершин умножается на текстуру, поэтому закрасьте меш цветом, у которого красный равен 255.
Источники
Товары из гайда
- Coil S-Cooter: Электросамокат FiveM
- Hoverboard Pack: 3 ховерборда FiveM
- Complete Bundle: Самокат + ховерборды FiveM
Все гайды
- Как установить ресурс FiveM из Cfx.re Escrow (Granted Assets)
- Как добавить кастомный транспорт на сервер ESX, QBCore или QBox
- Что такое LOD у транспорта в FiveM?
- Как добавить аддон-транспорт на сервер FiveM
- Разбор vehicles.meta по полям
- Разбор handling.meta: поля, единицы и флаги
- Разбор carvariations.meta и carcols.meta
- Разбор vehiclelayouts.meta: сиденья, точки входа и анимации
- Справочник data_file в fxmanifest для транспорта
- Файлы модели транспорта (yft, _hi.yft, ytd) и предупреждение oversized assets
- Проблемы с аддон-транспортом в FiveM: причины и решения
- Как исправить "You lack the required entitlement" на сервере FiveM
- Как конвертировать мод машины для одиночной GTA 5 в аддон FiveM
- Как ховерборд в FiveM работает без скрипта
- Как оптимизировать транспорт FiveM: полигоны, LOD и бюджет текстур
- Как настроить коллизию транспорта в Sollumz
- Покупка транспорта для FiveM: что проверить до оплаты
- Паки машин FiveM или отдельный транспорт
- Машины реальных брендов в FiveM: можно или нет?
- CodeWalker или Sollumz: какой инструмент нужен для транспорта FiveM?
