Как настроить коллизию транспорта в Sollumz

Автор: Nilo3D · Обновлено:

Коллизия транспорта 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 баунда.

Самый быстрый правильный старт: скопировать баунды стокового транспорта, который вы импортировали как образец. Копия сохраняет тип, материал и массу. Затем замените меш каждой оболочки на тот, что подходит вашей части. Меш оболочки записывается относительно своей кости, поэтому стройте его, когда часть стоит в позиции кости.

Какие материалы используют баунды?

Баунды принимают только материалы коллизии. Они определяют звук, искры и поведение пуль на поверхности. Выберите материал в 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, но за ней не следует ни один баунд. Добавьте баунд с ограничением кости на эту кость или выключите для неё физику.

Источники

Товары из гайда

Все гайды