Как настроить коллизию транспорта в Sollumz
Коллизия транспорта GTA V это Bound Composite внутри .yft, с одной формой коллизии (баундом) на каждую функциональную часть, и каждая форма следует за костью. В Sollumz баунд работает, когда выполнены два условия: у кости включён Fragment Physics, а объект баунда следует за этой костью через ограничение (constraint). Транспорт, экспортированный без баундов, проваливается сквозь карту.
Где находится коллизия транспорта?
У транспорта нет отдельного файла коллизии. Его коллизия входит в состав фрагмента, рядом с видимой моделью:
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"
...
Bound Composite это контейнер. Работу выполняют формы внутри него, и каждая принадлежит кости, поэтому коллизия двери поворачивается вместе с дверью, а коллизия колеса находится там же, где колесо. Чтобы видеть их во время работы, используйте Sollumz Tools > General > View > Show Collisions.
Какой тип баунда ставится на какую часть?
Добавляйте формы в Sollumz Tools > Collisions > Create Bounds кнопкой Create Bound и меню типа рядом с ней. Стоковый транспорт использует один баунд на каждую функциональную часть и никогда одну слитную форму на всю машину.
| Часть | Тип Sollumz | Форма |
|---|---|---|
Кузов (chassis) | Bound Geometry | Простая замкнутая оболочка вокруг кузова. |
| Каждое колесо | Bound Disc | Диск размером с шину. |
| Двери, капот, багажник, бамперы | Bound Geometry | Оболочка вокруг каждой части. |
| Стёкла | Bound Geometry | Тонкая форма поверх стекла, с материалом коллизии стекла. |
| Простые блоки | Bound Box, Bound Sphere, Bound Capsule, Bound Cylinder | Размер задаётся значениями в панели Shape баунда. |
Самый быстрый правильный старт: скопировать баунды стокового транспорта, который вы импортировали как образец. Копия сохраняет тип, материал и массу. Затем замените меш каждой оболочки на тот, что подходит вашей части. Меш оболочки записывается относительно своей кости, поэтому стройте его, когда часть стоит в позиции кости.
Как привязать баунд к кости?
Шагов два, и баунд, у которого пропущен любой из них, ничего не делает.
- Включите физику для кости. Выберите кость, откройте Properties > Bone > Sollumz и включите Fragment Physics. После этого панель показывает настройки этой части: прочность, запас здоровья и опции стекла для окон.
- Сделайте так, чтобы баунд следовал за костью. Объекту баунда нужно ограничение Copy Transforms, где цель это арматура, а кость та, что отвечает за эту часть. Sollumz Tools > Drawables > Bone Tools > Add Bone Constraint добавляет его с нужными настройками; затем вы выбираете кость в ограничении. Старые версии Sollumz использовали для этого ограничение Child Of, которое перестало работать после Blender 4.2.
Когда у кости физика включена, но за ней ничего не следует, экспорт предупреждает: "Bone has physics enabled, but no associated collision! A collision must be linked to the bone for physics to work." (у кости включена физика, но нет связанной коллизии). Обратный случай тоже важен: у кости, на которой физика осталась включённой после удаления её баунда, физику нужно выключить.
Ограничение также размещает баунд. Оставьте баунд в его собственном начале координат, и пусть ограничение переносит его к кости. Тогда он последует за костью, когда вы позже её передвинете.
Какие материалы используют баунды?
Баунды принимают только материалы коллизии. Они определяют звук, искры и поведение пуль на поверхности. Выберите материал в Sollumz Tools > Collisions > Create Collision Material и нажмите Create Collision Material. Для кузова машины обычно используется Car Metal; есть также Car Plastic и материалы Car Glass для стёкол.
Никогда не оставляйте на баунде обычный материал для рендера. На одной из наших машин видимого материала на баунде колеса хватило, чтобы экспорт завершился ошибкой.
Как задаётся масса?
У каждого баунда своя масса, она показана на объекте баунда, а сумма масс даёт вес модели. Sollumz Tools > Fragments > Set Mass записывает одно значение во все выбранные объекты. Если скопировать баунды похожего стокового транспорта, разумные значения будут с самого начала.
Масса также задаёт центр тяжести. Когда мы добавили одной машине вспомогательные баунды по 200 кг каждый, они сместили её центр масс и изменили поведение на дороге. Дополнительные баунды, которые нужны только для столкновений, должны весить около 1 кг. Масса, которую использует физика езды, по-прежнему задаётся в fMass в handling.meta.
Нужны ли баундам транспорта флаги коллизии?
У каждого баунда есть панель Composite Flags с двумя рядами переключателей: что это за форма и с чем она сталкивается. На стоковом транспорте, который мы открывали, у баундов транспорта они пустые, и это нормально. Баундам транспорта флаги карты не нужны.
С объектами карты и пропами иначе. Там баунд без флагов экспортируется без какого-либо предупреждения и в игре ни с чем не сталкивается. Для них применяйте пресет флагов к каждому баунду; в Sollumz есть готовый с названием General (Default). Если вы работаете и с пропами, и с транспортом, не переносите правило с одного на другое.
Почему мой транспорт проваливается сквозь карту?
| Симптом | Причина | Решение |
|---|---|---|
| Проваливается сквозь дорогу сразу после спавна | У фрагмента нет Bound Composite или он не был экспортирован | Добавьте баунды как дочерние объекты арматуры и экспортируйте с выбранной арматурой. |
| Лежит на днище, колёса в земле | Нет баундов колёс или они не следуют за костями колёс | По одному Bound Disc на кость колеса, размером с шину. |
| Экспорт предупреждает о кости без коллизии | Fragment Physics включён, но за костью не следует ни один баунд | Добавьте ограничение или выключите физику для этой кости. |
| Коллизия смещена относительно модели | Баунд сдвинут и вручную, и ограничением | Сбросьте собственную позицию баунда, и пусть его размещает ограничение. |
| Игроки проходят сквозь часть | У этой части нет своего баунда | Добавьте баунд на кость этой части. |
| Машина едет носом вниз или опрокидывается | Тяжёлые дополнительные баунды сместили центр масс | Уменьшите их массу. |
Если с моделью всё в порядке и неправильная только высота посадки, это подвеска, а не коллизия: см. гайд по устранению проблем с транспортом.
Как проверить коллизию до теста в игре?
Экспортируйте один раз с включённым CW XML в Target Formats и откройте .yft.xml в текстовом редакторе. В секции физики список групп должен называть каждую кость, которой вы дали физику, а в списке дочерних элементов должно быть по одной записи на баунд. Если групп нет, ни у одной кости не был включён Fragment Physics.
Остальная часть работы с моделью описана в гайде о создании транспорта FiveM в Blender с Sollumz.
Частые вопросы
- Почему моя машина проваливается сквозь карту в FiveM?
- В .yft нет коллизии. В Sollumz транспорту нужен Bound Composite с баундами под арматурой, и каждый баунд должен следовать за костью, у которой включён Fragment Physics.
- Как добавить коллизию транспорту в Sollumz?
- Создайте баунды в Sollumz Tools > Collisions > Create Bounds, включите Fragment Physics на кости каждой части и добавьте каждому баунду ограничение кости через Bone Tools > Add Bone Constraint.
- Какой тип баунда используют колёса?
- Bound Disc на каждой кости колеса, размером с шину.
- Нужны ли баундам транспорта флаги коллизии в Sollumz?
- На стоковом транспорте, который мы открывали, флаги на баундах транспорта пустые, и это нормально. Объектам карты и пропам флаги нужны на каждом баунде.
- Что означает "Bone has physics enabled, but no associated collision"?
- У кости включён Fragment Physics, но за ней не следует ни один баунд. Добавьте баунд с ограничением кости на эту кость или выключите для неё физику.
Источники
Товары из гайда
Все гайды
- Как установить ресурс 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 в Blender с Sollumz 2.9
- Как оптимизировать транспорт FiveM: полигоны, LOD и бюджет текстур
- Покупка транспорта для FiveM: что проверить до оплаты
- Паки машин FiveM или отдельный транспорт
- Машины реальных брендов в FiveM: можно или нет?
- CodeWalker или Sollumz: какой инструмент нужен для транспорта FiveM?
