Сборка автомобиля
To create the main character — a car, we need its 3D model. You can use your own model: a simplified physical model of the car requires the body and 4 wheels to be implemented as separate objects.Для создания главного персонажа — автомобиля — нам понадобится его 3D модель. Вы можете использовать свою модель: для упрощенной физической модели автомобиля необходимо, чтобы кузов и 4 колеса были представлены отдельными объектами.
To simplify customization, we recommend using a correctly prepared and imported model, all objects of which are unscaled and have their forward axes oriented towards the Y+ axis.Чтобы упростить настройку, рекомендуем использовать корректно подготовленную и импортированную модель, все объекты которой имеют единичный масштаб и ориентированы вперед к оси Y+.
Let's use the pickup model from the race/props/pickup folder. In the context menu of the pickup.node asset, select Place as Node Content and click in the Editor viewport to add the model with the preset materials.Используем модель пикапа из папки race/props/pickup. Выберите Place as Node Content в контекстном меню ассета pickup.node и кликните во вьюпорте редактора, чтобы добавить модель с настроенными материалами.
Customizing the car physical modelНастройка физической модели автомобиля#
The hierarchy of the car nodes in the scene is as follows:Иерархия нод автомобиля в сцене представлена следующим образом:
The car body (pickup_frame), wheels (the wheels group), and a decorative car freshener (car_freshner) will be physically active, all other nodes are the car body children that follow its movements.Кузов (pickup_frame), колеса (группа wheels) и декоративная подвеска (car_freshner) будут физически активными, все остальные ноды останутся дочерними в иерархии кузова, чтобы двигаться вместе с ним.
- In the pickup_frame node parameters, the Physics tab, select the Rigid physical body. Keep the default values in all its settings.В параметрах ноды pickup_frame, на вкладке Physics назначим твердое физическое тело Rigid. Оставим стандартные значения в настройках.
-
Let's also add a collision shape in the Shapes section and use the simplest and most stable shape: Box shape. Select the Box option from the list and click Add. Click Edit Size to customize the collision shape dimensions and roughly replicate the body shape: the simpler the physical representation, the better it is for calculations.Также добавим коллизионную форму в разделе Shapes, воспользуемся простейшей и наиболее стабильной формой: Box shape. Выберите вариант Box в списке и нажмите Add. Нажмите Edit Size, чтобы настроить размеры коллизионной формы, и грубо повторите очертания кузова: чем проще физическое представление, тем лучше для вычислений.
-
Let's set the following collision shape parameters:Установим следующие параметры коллизионной формы:
- Friction coefficient: 1.0Friction — коэффициент трения: 1.0
- Restitution coefficient: 0.0Restitution — коэффициент восстановления: 0.0
- Car body Mass: 60 kgMass — масса кузова: 60 kg
The real car body weight is about 2000 kilograms, but for a physical game engine the real mass is not always the best option. The model must simulate the real object's behavior while remaining optimal for real-time computations. Therefore, configuring the physical model is all about selecting coefficients to ensure that the model behaves as naturally as possible.Вес кузова настоящего автомобиля составляет около 2000 килограмм, но для физического игрового движка массы реального мира не всегда самый оптимальный вариант. Модель должна симулировать поведение реального объекта, оставаясь оптимальной для вычислений в реальном времени. Поэтому настройка физической модели — это подбор коэффициентов для обеспечения максимально естественного поведения модели. -
Disable the Shape Based option to override some parameters manually:Выключим опцию Shape Based, чтобы переопределить некоторые параметры вручную:
- CMass (center of mass relative to the model pivot point) — move it towards the hood, since most of the mass is on the mechanisms.CMass — центр масс относительно опорной точки модели — сдвинем ближе к капоту, т.к. большая часть массы приходится на механизмы.
- ADamping (rotation movements damping coefficient) — increase it a bit to make the car body more stable.ADamping — коэффициент затухания колебаний вращения — сделаем чуть выше, чтобы кузов был более устойчив.
- Assign the Rigid physical body to all four wheels.Всем четырем колесам также назначим физическое тело Rigid.
Configuring JointsНастройка сочленений#
To link the wheels with the body, we need to configure joints connecting them.Чтобы связать колеса и кузов, нам понадобится настроить сочленения между ними.
-
Select the car body pickup_frame node and add four Wheel joints in the Joints section selecting the wheels one by one.Выберите ноду кузова pickup_frame и добавьте 4 сочленения типа Wheel в разделе Joints, выбирая по очереди каждое колесо.
- Select joints one by one and click the Fix 0 button for each of them, to move the joint connection point to the center of each wheel. Now each wheel is connected to the car body and will continuously tend to the specified center.Выделив по очереди каждое добавленное сочленение, нажмите кнопку Fix 0, чтобы переместить центр привязки сочленения к центру каждого колеса. Теперь каждое колесо связано с кузовом и будет постоянно стремиться к установленному центру.
-
Select all joints using the Shift button and set the following parameter values:Выделите все сочленения при помощи клавиши Shift и установите следующие настройки:
- Iterations (number of calculation iterations per joint): 2Iterations — число итераций расчета на каждое сочленение: 2;
- Linear/Angular Restitution coefficients: 0.2Linear/Angular Restitution — коэффициенты линейного и кругового восстановления: 0.2;
- Linear Damping coefficient: 300Linear Damping — коэффициент линейного затухания колебаний: 300;
- Linear From and Linear To (shock absorber operating range): 0.1 meter. You can increase these values to make suspension more active, but the whole system may become unstable on uneven surfaces and at high speeds.Linear From и Linear To — диапазон работы амортизаторов: 0.1 метра. Можно увеличить эти значения, чтобы сделать подвеску более активной, но это может сделать всю систему нестабильной на неровной поверхности и больших скоростях;
- Linear Spring (shock absorber force): 500Linear Spring — сила амортизаторов: 500;
- Tangent/Binormal Friction (longitudinal and transverse friction coefficients for tires): 4.0 and 1.0. You can try different values and adjust the grip between the tires and the ground.Tangent/Binormal Friction — коэффициенты продольного и поперечного трения шин: 4.0 и 1.0. Можно поэкспериментировать с разными значениями, управляя сцеплением между шинами и землей;
- Wheel Mass: 10 kgWheel Mass — масса колеса: 10 кг;
- Wheel Radius: 0.37 m for the provided model. If you use your own 3D model, set the wheel radius value corresponding to your model wheels.Wheel Radius — радиус колёс: 0.37 м для выбранной модели. Установите значение в соответствии с вашей моделью автомобиля и его колес.
-
Each Wheel joint represents a virtual wheel and uses so-called Physics Intersections to preform a simplified detection of collisions with the ground surface.Каждое сочленение Wheel представляет собой виртуальное колесо и использует так называемые Physics Intersections для упрощенного определения столкновений с земной поверхностью.
Select the ground_plane node and enable the Physics Intersection option. This will make the geometry "visible" to the joints that simulate the wheels. And enabling the Collision option makes the geometry available for traditional collisions with collision shapes, such as the car body.Выделите ноду ground_plane и включите опцию Physics Intersection. Так мы сделаем геометрию “видимой” для сочленений, имитирующих наши колеса. А благодаря включенной опции Collision, геометрия будет доступна для традиционных столкновений с коллизионными формами, например как у кузова автомобиля.
-
Save the changes (Ctrl+S) and enable physics simulation in the Editor to verify that the physics model is correct. Now the car should gain weight and stand on wheels, and the shifted center of mass and rather heavy wheels will make it more resistant to rollover.Сохраните изменения (Ctrl+S) и включите симуляцию физики в редакторе, чтобы проверить корректность физической модели. Теперь автомобиль должен обрести вес и встать на колеса, а благодаря смещенному центру масс и довольно тяжелым колесам он будет более устойчив к переворачиванию.
Now disable the physics simulation to continue fine-tuning.Не забудьте выключить симуляцию физики, чтобы продолжить настройку.
Fine-Tuning Air Freshener (optional)Настройка декоративной подвески (опционально)#
Adding dynamic details like this can add to the car driving experience.Добавление подобных динамических деталей может улучшить ощущение движения автомобиля.
- Select the car_freshner node and assign the Rigid body to it in the Physics tab.Выделите ноду car_freshner и назначьте физическое тело Rigid во вкладке Physics.
- Add the Box collision shape.Добавьте коллизионную форму Box.
- Select the pickup_frame node and add the Ball joint in the Joints section. Press the Fix 0 button in its settings to shift the joint center to the current position of the freshener node.Выделите ноду pickup_frame и в разделе Joints добавьте сочленение типа Ball — шаровое сочленение. Нажмите кнопку Fix 0 в его настройках, чтобы переместить центр сочленения к текущей позиции подвески.
-
Configure its parameters as follows:Настройте параметры следующим образом:
- Damping coefficient: 1.0Damping — коэффициент затухания: 1.0;
- Physical bodies connected with a joint won't collide if the Collision option is disabled, let's keep it as it is.Связанные сочленением физические тела не будут сталкиваться друг с другом, пока опция Collision выключена, оставим ее как есть;
- Angle (maximum possible swing angle from the initial position): 155Angle — допустимый угол отклонения от начальной позиции: 155.
Now the air freshener will move actively depending on the loads experienced by the vehicle. Теперь подвеска будет активно двигаться в зависимости от перегрузок, которые испытывает автомобиль.