Всем привет! Представляю вам первую часть блога, по создания модов для BeamNG.Drive! И начнем мы с основы основ (и нет это не Jbeam), а именно разберемся на чем основана сама игра и из-за чего происходит деформация автомобиля. Поехали!
В отличие от большинства игр, в которых используется «RigidBody» - в переводе с английского "симуляция физики", BeamNG, представляет собой «SoftBody» - "симуляцию физики" . Короче говоря, это означает, что физические объекты (например, автомобили) могут деформироваться. Это достигается за счет структуры под названием «Узел и Балка».
Пример конструкции «Узел и Балка».
Узлы - хромированные шары.
Их можно рассматривать как частицы, каждый узел имеет массу и может свободно перемещаться в пространстве.
Лучи - синие палочки
Балки (лучи) удерживают узлы вместе в структуре. Балки не имеют массы и всегда имеют узел на каждом конце. Они выполняют действие пружины (к этому мы еще вернемся).
Они могут свободно вращаться вокруг узлов, служат только для удержания двух узлов на заданном расстоянии друг от друга.
Никакие другие силы (например, скручивающие) через них не передаются, и их нельзя согнуть.
При построении узлово-балочной конструкции важно помнить, что данная конструкция без поперечных раскосов упадет, поскольку балки как мы помним могут вращаться вокруг узлов. Добавление диагональных скобок между краями сделает конструкцию жесткой .
Пример поведения конструкции после применения диоганальных скобок.
При наличии достаточного количества узлов и балок можно создавать сложные конструкции, такие как автомобили, с конструкциями узлов и балок, имитирующими шасси, подвеску, колеса и многие другие компоненты.
Основные свойства узлово-балочных конструкций:
BeamSprings - (Жесткость луча)
Значение BeamSprings определяет, жесткоcть пружины и представляет величину силы, необходимой для сжатия пружины на заданную величину.
Более высокие значения будут использоваться для жестких конструкций, таких как шасси, в то время как более низкие значения будут использоваться для менее жестких конструкций и материалов, таких как пружины или резина.
Пружинность/жесткость не следует путать с деформацией! В то время как балка с низким коэффициентом упругости будет легко сжиматься, это упругая деформация, то есть она будет пружинить до своей первоначальной длины.
Слева: Мягкая пружина | Справа: жесткая пружина
BeamDamping - (Демпфирование луча)
Демпфирование – это сопротивление движению.
В ваккуме без трения, пружина без демпфирования, будет иметь тенденцию к неопределенно долгим колебаниям. Чтобы этого избежать, нужно иметь некоторое демпфирование, которое будет сопротивляться движению с силой, обратно пропорциональной скорости.
Основным эффектом демпфирования будет предотвращение колебаний, хотя также демпфирование будет способствовать поглощению некоторой энергии деформации, уменьшая силу отскока.
В реальной жизни большинство объектов, включая пружины, будут иметь небольшое собственное демпфирование.
Слева: без демпфирования | Справа: некоторое демпфирование
Типичные значения для весны и влажности
{"beamSpring":40000,"beamDamp":0}, //Пружины подвески
{"beamSpring":0,"beamDamp":4500}, // Амортизаторы подвески
{"beamSpring":8000000,"beamDamp":125}, //Конструкционные компоненты автомобиля, такие как рычаги подвески
{"beamSpring":14001000,"beamDamp":250}, //Рулевая рейка, она должна быть очень жесткой, чтобы колеса смотрели в правильном направлении
Beam Deformation - (Деформация балки)
Деформация балки задает величину усилия, необходимого для того, чтобы балка окончательно деформировалась. После деформации балка уже естественно не вернется к своей первоначальной форме. Это имеет главное значение для создания транспортных средств, которые деформируются.
Слева: низкое значение деформации (5000) | Справа: практически бесконечное значение деформации
Beam Strength - (Прочность луча)
Прочность балки определяет количество силы, необходимой для разрушения балки. Сломанная балка действует так, как если бы она была сломана пополам, это означает, что она больше не соединяет два узла вместе. Это полезно для того, чтобы позволить компонентам отпасть (отсоединиться) от транспортного средства. Например, бампер можно заставить отваливаться от автомобиля, если легко сломать балки, соединяющие его с шасси.
Как показано на следующем изображении, разрушение балок также приведет к разрушению видимой сетки.
Слева: низкая прочность | Справа: высокая прочность
Node Weight - (Вес узла)
Вес узла можно использовать для регулировки веса каждой отдельной точки транспортного средства.
Однако если общая жесткость всех соединенных балок будет слишком высока, они начнут вибрировать и даже могут разорваться. Чтобы предотвратить эту вибрацию, нужно либо утяжелить узел, либо сделать балки менее жесткими. Также лучи начнут вибрировать и разрываться, если значение параметра BeamDamping слишком высокое.
Слева: Малый вес узла (6 кг) | Справа: правильный вес узла (7 кг)
На этом изображении показано влияние веса узла на транспортное средство, значения веса для 4 узлов, соединяющих красные лучи, были изменены.
Как видно, автомобиль справа полностью устойчиво благодаря правильному весу узлов, в то время как автомобиль слева сильно вибрирует.
На этом все!
P.S - Следующая статья будет про документ на котором основана данная игра и все что в ней есть, а именно про JBeam. Впрочем это уже совсем другая история.........