Высокоуровневая система физики автомобиля (C++)
Wheeled vehicles are widely used in various simulations. The high-level Car Physics system, implemented as a set of C++ components, is intended to simplify creation of realistic wheeled vehicles in UNIGINE. It minimizes efforts required to create virtually any wheeled vehicle, be it a 4WD SUV, an exploration rover, or a sophisticated multi-axle transporter.Колесные транспортные средства широко используются в различных симуляциях. Высокоуровневая система физики автомобилей, реализованная в виде набора компонентов C++, предназначена для упрощения создания реалистичных колесных транспортных средств в UNIGINE. Это минимизирует усилия, необходимые для создания практически любого колесного транспортного средства, будь то внедорожник с 4WD, исследовательский вездеход или сложный многоосный транспортер.
The following features are available:Доступны следующие функции:
- Setting the engine power and resistance curves, as well as idle speed (RPM)Задание кривых мощности и сопротивления двигателя, а также оборотов холостого хода (об/мин).
- Gearbox simulation (manual and automatic) enabling you to adjust throttle an speed values for shifting gears along with transition time, as well as to set the number of gears and configure gear ratiosМоделирование коробки передач (механической и автоматической), позволяющее регулировать значения газа и скорости для переключения передач, времени переключения, а также устанавливать количество передач и настраивать передаточные числа.
- Mathematical wheel model for more realistic steering, enabling simulation of forces affecting the rotating wheel, along with an ability to adjust suspension travel distance, spring, and damping valuesМатематическая модель колеса для более реалистичного рулевого управления, позволяющая моделировать силы, воздействующие на вращающееся колесо, а также возможность регулировать ход подвески, параметры пружины и демпфирования.
- Easy setup of steering and driving axes along with capability to turn the differential lock on and offПростая настройка рулевой оси и вала привода, а также возможность включать и выключать блокировку дифференциала.
- A set of debug windows displaying information on all vehicle parameters in real timeНабор отладочных окон, отображающих информацию обо всех параметрах транспортного средства в режиме реального времени.
- Switching between different views (driver's, external camera, etc.) Переключение между различными видами (вид водителя, внешняя камера и т. д.).
- Simulation of various surface conditions (such as dry, wet, snow-covered, or icy road, mud, and so on) Моделирование различных условий поверхности (таких как сухая, мокрая, заснеженная или обледенелая дорога, грязь и т. д.).
Instructions given below cover the process of creation of a wheeled vehicle using the Vehicle demo from the SDK in a new empty project. The step-by-step guide will take you through the process of creating all necessary nodes and configuring component parameters you need to have a functional vehicle, assuming that you have a model of the vehicle's body and models of its wheels at your disposal.Инструкции, приведенные ниже, охватывают процесс создания колесного транспортного средства с использованием демонстрационного проекта Vehicle из SDK в новом пустом проекте. Пошаговое руководство проведет вас через процесс создания всех необходимых нод и настройки параметров компонентов, необходимых для создания функционального транспортного средства, при условии, что у вас есть модель кузова транспортного средства и модели его колес.
See alsoСмотрите также#
- The C++ Component System article to learn more about implementing logic in C++ using components.Статья Система компонентов C++ с информацией о реализации логики в C++ с использованием компонентов.
- The Vehicle demo included in the SDK.Демонстрационный проект Vehicle в составе SDK.
Step 1. Prepare a ProjectШаг 1. Подготовка проекта#
First, we should prepare a project and get all necessary source files containing implementation of components from the demo. So, we perform the following actions:Сначала мы должны подготовить проект и взять все необходимые исходные файлы, содержащие реализацию компонентов, из демо-проекта. Итак, сделаем следующее:
- Open your new project's source folder and create the new vehicle_components folder in it.Откройте исходную папку вашего нового проекта и создайте в ней новую папку vehicle_components.
- Then open the source/vehicle_sample folder of the demo and copy all the files it contains to the vehicle_components folder that you've just created.Откройте папку source/vehicle_sample и скопируйте все содержащиеся в ней файлы в папку vehicle_components, которую вы только что создали.
- Open your project in the IDE and add all source files from the vehicle_components folder to it.Откройте свой проект в IDE и добавьте в него все исходные файлы из папки vehicle_components.
-
Add initialization code for C++ Component System to the AppSystemLogic::init() method:Добавьте код инициализации для системы компонентов C++ в метод AppSystemLogic::init():
#include <UnigineComponentSystem.h> /* ... */ int AppSystemLogic::init() { /* ... */ // initialize ComponentSystem and register all components Unigine::ComponentSystem::get()->initialize(); /* ... */ }
- Build and run your project to register all components and generate necessary properties. We are going to use these properties later to configure our vehicle. Meanwhile, we can proceed to the next step.Создайте и запустите проект, чтобы зарегистрировать все компоненты и сгенерировать необходимые свойства. Позже мы будем использовать эти свойства для настройки автомобиля. А теперь можно перейти к следующему шагу.
Step 2. Prepare Your Vehicle ModelШаг 2. Подготовка модели автомобиля#
Next, we create a model representing the vehicle's body and a model for vehicle's wheels (or several models, depending on how many different types of wheels your vehicle has).Далее мы создаем модель, представляющую кузов автомобиля, и модель колес автомобиля (или несколько моделей, в зависимости от того, сколько различных типов колес имеется в вашем автомобиле).
The Y axis of all models (including wheels) should be pointing forward. So, you can't just make a copy of a wheel and rotate it around the Z axis by 180 degrees.Ось Y всех моделей (включая колеса) должна быть направлена вперед. Таким образом, нельзя просто сделать копию колеса и повернуть его вокруг оси Z на 180 градусов.
The scale of all models should be equal to 1 along all axes, to ensure correct physics simulation.Масштаб всех моделей должен быть равен 1 по всем осям, чтобы обеспечить корректное моделирование физики.
Step 3. Create Node HierarchyШаг 3. Создание иерархии нод#
In order for the system to work, your vehicle's hierarchy should be properly organized. The following hierarchy is recommended:Для того чтобы система работала, иерархия вашего автомобиля должна быть правильно организована. Рекомендуется следующая иерархия:
All nodes in the hierarchy, except for the vehicle's body and wheels, are Node Dummy. These Node Dummy serve only to organize the components logic and have an identity transform matrix, except for the center_of_mass, as its position defines the position of the vehicle's center of mass in the local coordinates of the vehicle's body (must have the body as parent).Для всех нод в иерархии, за исключением кузова и колес транспортного средства, используются Node Dummy. Эти Node Dummy служат только для организации логики компонентов и имеют единичную матрицу преобразования, за исключением center_of_mass, поскольку ее положение определяет положение центра масс транспортного средства в локальных координатах кузова транспортного средства (она должна иметь кузов в качестве родительской ноды).
Step 4. Engage PhysicsШаг 4. Подключение физики#
Then, we should assign a rigid body to the object representing the vehicle's body and disable the Shape-Based option for it, to turn off automatic calculation as inertia, mass, and center of mass are specified in the component. Then, add necessary number of physical shapes to specify the geometry of the body.Затем мы должны назначить твердое тело на объект, представляющий кузов транспортного средства, и отключить для него параметр Shape-Based, чтобы отключить автоматические вычисления, поскольку в компоненте указаны инерция, масса и центр масс. Затем добавьте необходимое количество коллизионных форм, чтобы задать геометрию тела.
Step 5. Assign and Configure ComponentsШаг 5. Назначение и настройка компонентов#
At this stage we assign component properties generated at Step 1 and configure necessary parameters for the engine, transmission, wheels, etc.На этом этапе мы присваиваем компоненту свойства, сгенерированные на Шаге 1 и настраиваем необходимые параметры для двигателя, трансмиссии, колес и т. д.
Configure Vehicle BodyНастройка кузова транспортного средства#
Assign the car component to the object representing the vehicle's body. For this component we should specify necessary car characteristics, such as dimensions, mass, frontal area, etc. along with the number of iterations, which defines joints simulation accuracy. Here we also set up links to Node Dummy with other logic components assigned (engine, gearbox, transfer case, wheels, axles). Назначьте компонент car на объект, представляющий кузов транспортного средства. Для этого компонента мы должны указать необходимые характеристики автомобиля, такие как размеры, масса, площадь лобовой поверхности и т. д., а также количество итераций, которое определяет точность моделирования сочленений. Здесь мы также указываем ссылки на Node Dummy, в которых назначены другие логические компоненты (двигатель, коробка передач, раздаточная коробка, колеса, оси).
Iterations | The number of iterations used to solve joints. If the value is too low, the precision of calculations will suffer.Количество итераций, используемых для решения сочленений. Если значение будет слишком низким, точность вычислений снизится. |
---|---|
Car Body Node | Object representing the car body.Объект, представляющий собой кузов автомобиля. |
Size | Car dimensions, in meters (width, length, height).Габариты автомобиля в метрах (ширина, длина, высота). |
Mass |
Vehicle mass, in kilograms. A lifelike value is to be used. Higher values increase the car stability when colliding with other cars. Along with that, higher values increase inertia thus requiring enhanced brakes and springs, better greep of wheels, etc.Масса транспортного средства в килограммах. Следует использовать реалистичное значение. Более высокие значения повышают устойчивость автомобиля при столкновении с другими автомобилями. Наряду с этим, более высокие значения увеличивают инерцию, что требует усиленных тормозов и рессор, лучшего сцепления колес и т.д. This value affects numerous aspects of the vehicle behavior, therefore it's better to set it first.Это значение влияет на множество аспектов поведения автомобиля, поэтому лучше установить его в первую очередь. |
Driving Efficiency | Multiplier of the gear ratio. The efficiency of the whole transmission — all moving parts from wheels to the gearbox. Higher values mean less inertia and resistance in the gearbox.Множитель передаточного числа. Эффективность передачи движения всей трансмиссии — всех движущихся частей, от колес до коробки передач. Более высокие значения означают меньшую инерцию и сопротивление коробки передач. |
Movement Resistance | The effect of resistance to the movement. The higher the value, the more the wheels resist rotation (transmitting this resistance to the engine, reducing its power). The effect is amplified by large and heavy wheels.Эффект сопротивления движению. Чем выше значение, тем больше колеса сопротивляются вращению (передавая это сопротивление двигателю, снижая его мощность). Эффект усиливается в случае больших и тяжелых колес. |
Moving Transmission Parts Inertia | Inertia multiplier for moving parts of transmission used to calculate the vehicle moment of inertia. The higher the value, the more inert the gearbox is.Множитель инерции для движущихся частей трансмиссии, используемый для расчета момента инерции транспортного средства. Чем выше это значение, тем более инертна коробка передач. |
Air Density | Air density that affects downforce. The faster you drive, the more the car is pressed against the asphalt, while at the same time control is improved due to increased road grip. It is recommended to keep this value unchanged and adjust the CarFrontalArea and ShapeResistanceCoefficient parameters, if required.Плотность воздуха, влияющая на прижимную силу. Чем быстрее вы едете, тем сильнее автомобиль прижимается к асфальту, в то же время улучшается управляемость за счет повышенного сцепления с дорогой. Рекомендуется оставить это значение неизменным и при необходимости скорректировать параметры CarFrontalArea и ShapeResistanceCoefficient. |
Car Frontal Area | Maximum cross-sectional area of the vehicle used for calculation of the drag coefficient (less for cars, more for trucks).Максимальная площадь поперечного сечения транспортного средства, используемая для расчета коэффициента обтекаемости (меньше для легковых автомобилей, больше для грузовых автомобилей). |
Shape Resistance Coefficient | Drag coefficient of the shape which can be obtained experimentally in the wind tunnel (more in cars, less in trucks).Коэффициент обтекаемости формы, который может быть получен экспериментально в аэродинамической трубе (больше у легковых автомобилей, меньше у грузовиков). |
Clutch Sync Factor | Clutch multiplier, the degree of synchronization between the engine and the gearbox. The higher the value, the more the engine rpm drops when torque is transmitted.Множитель сцепления, степень синхронизации между двигателем и коробкой передач. Чем выше это значение, тем больше падают обороты двигателя при передаче крутящего момента. |
Center Of Mass | Reference to the node that is the vehicle's center of mass. This node affects the wind resistance and stability of the vehicle. The closer it is to the ground, the higher is the stability. If the center of mass is below the ground, the behavior may feel unrealistic when the car rolls over.Ссылка на ноду, который является центром массы транспортного средства. Эта нода влияет на сопротивление ветру и устойчивость транспортного средства. Чем ближе она находится к земле, тем выше устойчивость. Если центр массы находится ниже уровня земли, поведение может показаться нереалистичным, когда автомобиль переворачивается. |
Input | Node with a vehicle input interface component assigned.Нода с назначенным компонентом интерфейса ввода транспортного средства. |
Engine | Node with a vehicle engine component assigned.Нода с назначенным компонентом двигателя транспортного средства. |
Gearbox | Node with a vehicle gearbox component assigned.Нода с назначенным компонентом коробки передач транспортного средства. |
Transfer Case | Node with a vehicle transfer case component assigned.Нода с назначенным компонентом раздаточной коробки транспортного средства . |
Axles | Nodes with a vehicle axle component assigned. Axles are to be specified in the front-to-rear order.Ноды с назначенным компонентом оси транспортного средства. Оси должны быть указаны в порядке спереди назад. |
EngineДвигатель#
Assign the car_engine component to the engine Node Dummy and specify necessary engine parameters, such as maximum, minimum, and idle rpm values, inertia of moving parts of the transmission and set up dependencies for torque and resistance on rpm. Присвойте компоненту car_engine ноду Node Dummy engine и укажите необходимые параметры двигателя, такие как максимальное, минимальное значения и значение оборотов холостого хода, инерцию движущихся частей коробки передач, и настройте зависимости для крутящего момента и сопротивления от числа оборотов в минуту.
Min RPM | Minimum engine rotation per minute. If the engine RPM is less than this value, the engine is considered to have stalled.Минимальное число оборотов двигателя в минуту. Если частота вращения двигателя меньше этого значения, считается, что двигатель заглох. |
---|---|
Max RPM | Maximum engine rotation per minute.Максимальное число оборотов двигателя в минуту. |
Idle RPM | Idle engine rotation per minute, when the vehicle is not moving and the gas pedal is not pressed.Число оборотов двигателя на холостом ходу в минуту, когда автомобиль не движется и педаль газа не нажата. |
Inertia | Moment of inertia of the engine moving parts. Higher values mean slower changes in engine RPM.Момент инерции движущихся частей двигателя. Более высокие значения означают более медленное изменение оборотов двигателя. |
Idle Throttle | Automatic throttle level helping to keep stable idle rpm. It defines the minimum throttle plate position, if the engine RPM is less than minimum (idle).Автоматический уровень дроссельной заслонки, который помогает поддерживать стабильные обороты холостого хода. Он определяет минимальное положение дроссельной заслонки, если обороты двигателя меньше минимальных (холостой ход). |
RPM — Torque | Correlation between the engine RPM and Torque. Specific torque values can be set for various RPMs. Changing the value affects speed and acceleration.Корреляция между оборотами двигателя и крутящим моментом. Конкретные значения крутящего момента могут быть установлены для различных значений оборотов в минуту. Изменение значения влияет на скорость и ускорение. |
RPM — Resistance | Correlation between the engine RPM and Resistance — friction of the internal engine details depending on the RPM changes. Higher resistance values mean that the vehicle will pick up speed less.Корреляция между частотой вращения двигателя и сопротивлением трению внутренних деталей двигателя в зависимости от изменения частоты вращения. Более высокие значения сопротивления означают, что автомобиль будет набирать меньшую скорость. |
Formulas applied in the engine implementation:Формулы, применяемые при моделировании поведения двигателя:
- result_torque = torque - resistance - gearbox_resistance * clutchрезультирующий крутящий момент = крутящий момент - сопротивление - сопротивление коробки передач * сцепление
- result_inertia = inertia + gearbox_inertia * clutchрезультирующая инерция = инерция + инерция коробки передач * сцепление
- current_rpm += result_torque / result_inertiaтекущее значение RPM += результирующий крутящий момент / результирующая инерция
GearboxКоробка передач#
Assign the car_gearbox component to the gearbox node. Here we set transmission type (MT or AT), specify all gear numbers and shifting time. This component also controls switching between the gears (AT), so for each gear we should set throttle and speed values for switching up or down to the next gear.Назначьте компонент car_gearbox на ноду gearbox. Здесь мы выбираем тип коробки передач (МКПП или АКПП), указываем все значения передач и время переключения. Этот компонент также управляет переключением между передачами (АКПП), поэтому для каждой передачи мы должны установить значения throttle и speed для переключения вверх или вниз на следующую передачу.
The array of gear values must contain at least 3 elements: neutral, first front, and rear. Tables describing Up and Down switching sequences should have the number of elements equal to the number of transitions: number of forward gears - 1. For example, for a 3-speed gearbox we have:Массив значений передачи должен содержать по крайней мере 3 элемента: нейтральная, первая передняя и задняя. Таблицы, описывающие последовательности переключения вверх и вниз, должны содержать количество элементов, равное количеству переходов: количество передач вперед — 1. Например, для 3-ступенчатой коробки передач у нас будет:
- 1 -> 2
- 2 -> 3
Gear Values | Gear ratio at each stage. The first element is set for neutral, and the last one is for the reverse. Higher values mean a higher output (it will be easier for the vehicle to climb the hill) at a slower speed (wheels rotate slower). Usually the gear values are in descending order. Adjust these values if you want a faster car (higher values at the beginning and lower values at the end).Передаточное число на каждой ступени. Первый элемент для нейтральной передачи, а последний — для задней. Более высокие значения означают более высокую мощность (автомобилю будет легче подниматься на холм) при меньшей скорости (колеса вращаются медленнее). Обычно значения передач указаны в порядке убывания. Измените эти значения, если вы хотите получить более быстрый автомобиль (более высокие значения в начале и более низкие в конце). |
---|---|
Automatic | If enabled, the transmission is automatic (AT), if disabled, the transmission is manual (MT).Если включено, коробка передач автоматическая (AT), если отключено, коробка передач механическая (MT). |
Shift Time | Interval for switching between gears, in seconds.Интервал переключения между передачами, в секундах. |
Gear Switching Sequence Up | Array of conditions describing the sequence of switching the gears up: the Throttle value (0, 1] and current speed in km/h. The first row corresponds to switching 1->2, the second one 2->3, etc.Массив условий, описывающих последовательность переключения передач вверх: значение дроссельной заслонки (0, 1] и текущая скорость в км/ч. Первая строка соответствует переключению 1->2, вторая — 2->3 и т.д. |
Gear Switching Sequence Down | Array of conditions describing the sequence of switching the gears down: the Throttle value (0, 1] and current speed in km/h. The first row corresponds to switching 2->1, the second one 3->2, etc.Массив условий, описывающих последовательность переключения передач на пониженную: значение дроссельной заслонки (0, 1] и текущая скорость в км/ч. Первая строка соответствует переключению 2->1, вторая — 3->2 и т.д. |
Transfer CaseРаздаточная коробка#
Assign the car_tranfer_case component to the transfer_case Node Dummy. Specify necessary parameters and configure torque distribution for all axles in the front-to-back order.Назначьте компонент car_tranfer_case на компонент transfer_case Node Dummy. Укажите необходимые параметры и настройте распределение крутящего момента для всех осей в порядке спереди назад.
Low Gear | Lower gear ratio. It is used to make it easier to pass difficult off-road sections, where the full power of the engine is required, and speed is not important.Более низкое передаточное число. Он используется для облегчения прохождения сложных участков бездорожья, где требуется полная мощность двигателя, а скорость не важна. |
---|---|
High Gear | Higher (regular) gear ratio.Более высокое (обычное) передаточное число. |
Is Used | If enabled, transfer case is used. If disabled, an even distribution of torque and rpm from the transmission is used between all axles.Если включено, используется раздаточная коробка. При отключении используется равномерное распределение крутящего момента и оборотов коробки передач между всеми осями. |
Has Inter-Axle Lock | Inter-axle lock. Used on off-the-road vehicles.Межосевой замок. Используется на внедорожниках. |
Dynamic Lock | Dynamic inter-axle differential locking. If this option is enabled, the lock can be enabled when the vehicle is moving on receiving the information that its wheels have started to spin.Динамическая блокировка межосевого дифференциала. Если эта опция включена, блокировка может быть включена, когда транспортное средство движется при получении информации о том, что его колеса начали вращаться. |
Torque Distribution | Torque distribution between all axles of the vehicle, in percent. The sum must be equal to 100%.Распределение крутящего момента между всеми осями транспортного средства, в процентах. Сумма должна быть равна 100%. |
AxlesОси#
Assign the car_axle component to every Node Dummy representing vehicle's axles (e.g. front_axis and rear_axis). You can create as many axles as you need. For each axle, attach nodes representing wheels as children, and specify them in the corresponding fields of the car_axle component.Назначьте компонент car_axle на каждую ноду Node Dummy, представляющую ось транспортного средства (например, front_axis и rear_axis). Вы можете создать столько осей, сколько вам нужно. Для каждой оси присоедините ноды, представляющие колеса, в качестве дочерних, и укажите их в соответствующих полях компонента car_axle.
Then specify if the axle is a steering/driving one, if it has a locking differential, etc.Затем укажите, является ли ось управляемой / ведущей, имеет ли она блокирующий дифференциал и т. д.
Main Gear Ratio | Main gear ratio, the difference between what goes to the axle and what goes to wheels.Главное передаточное число, разница между тем, что поступает на ось, и тем, что поступает на колеса. |
---|---|
Driving | Indicates if the axle is the driving one.Указывает, является ли ось ведущей. |
Steering | Indicates if the axle is the steering one (i.e. whether the wheels on this axis are turned).Указывает, является ли ось рулевой (т.е. поворачиваются ли колеса на этой оси). |
Max Steering Angle | The maximum angle of the wheel rotation, in degrees (relative to the steering axis, Z-axis). Affects the ease of turning in tight places.Максимальный угол поворота колеса в градусах (относительно оси рулевого управления, оси Z). Влияет на легкость поворота в труднодоступных местах. |
Use Handbrake | Indicates if the axle is affected by the handbrake.Указывает, воздействует ли ручной тормоз на ось. |
Locking Differential | Indicates if the axle has interwheel locking, which is required for off-road vehicles to drive safely in the mud. If it is turned on, it is easier to drive in the mud keeping your wheels straight, but turning corners will be harder, because while turning the wheels should rotate at different speed, however with locking turned on, they start rotating at the same speed, which increases the risk of drifting.Указывает, имеется ли на оси межколесная блокировка, которая необходима для безопасного движения внедорожников по грязи. Если он включен, легче ехать по грязи, держа колеса прямыми, но поворачивать на поворотах будет сложнее, потому что при повороте колеса должны вращаться с разной скоростью, однако при включенной блокировке они начинают вращаться с одинаковой скоростью, что увеличивает риск заноса. |
Dynamic Lock | Indicates if locking differential can be toggled on and off, while the vehicle is moving. It works only if Locking Differential is enabled.Указывает, можно ли включать и выключать блокировку дифференциала во время движения автомобиля. Это работает только в том случае, если включена блокировка дифференциала. |
Right Wheel Node | Link to the node representing the right wheel of the axle (relative to forward direction).Ссылка на ноду, представляющую правое колесо оси (относительно направления движения вперед). |
Left Wheel Node | Link to the node representing the left wheel of the axle (relative to forward direction).Ссылка на ноду, представляющую левое колесо оси (относительно направления движения вперед). |
WheelsКолеса#
Assign the car_wheel component to all nodes representing vehicle's wheels. By adjusting the parameters of this component we can simulate different physical behavior of the vehicle with various types of wheels. Here you can set up wheel mass and radius, friction and additional forces, as well as suspension parameters.Назначьте компонент car_wheel на все ноды, представляющие колеса транспортного средства. Регулируя параметры этого компонента, мы можем моделировать различное физическое поведение транспортного средства с различными типами колес. Здесь можно настроить массу и радиус колеса, трение и дополнительные силы, а также параметры подвески.
You can enable the Use General Settings option and specify a preset property with general wheel settings for a certain wheel type in the General Settings field to override values of component parameters. This simplifies configuration process: you set all required parameter values for a certain wheel type in a dedicated property, and then use this property for all similar wheels.Вы можете включить опцию Use General Settings и указать предустановленное свойство с общими настройками колеса для определенного типа колеса в поле General Settings, чтобы переопределить значения параметров компонента. Это упрощает процесс настройки: вы устанавливаете все необходимые значения параметров для определенного типа колеса в специальном свойстве, а затем используете это свойство для всех похожих колес.
Suspension settings are to be set indivudually for each car by eye. These settings affect the vehicle bouncing, rigidity and wind resistance when driving over bumps and around tight corners. Настройки подвески должны устанавливаться индивидуально для каждого автомобиля на глаз. Эти настройки влияют на подпрыгивание автомобиля, жесткость и сопротивление ветру при движении по ухабам и на крутых поворотах.
General | |
---|---|
Wheel Node | Node representing the wheel. A single mesh should be used for dual wheels.Нода, представляющая колесо. Для сдвоенных колес следует использовать один меш. |
Use General Settings | Enabling this option allows using a preset property specified in the General Settings field. This property contains general wheel settings for a certain wheel type to override values of the component parameters listed below. This can be used to simplify configuration process: you set all required parameter values for a certain wheel type in a dedicated property, and then enable this option and assign this property to the field below.Включение этой опции позволяет использовать предустановленное свойство, указанное в поле General Settings. Это свойство содержит общие настройки колес для определенного типа колес, которые переопределяют значения параметров компонентов, перечисленных ниже. Это может быть использовано для упрощения процесса настройки: вы устанавливаете все необходимые значения параметров для определенного типа колеса в специальном свойстве, а затем включаете эту опцию и присваиваете это свойство полю ниже. |
General Settings | Preset property with general wheel settings for a certain wheel type to be used instead of the values of the component parameters listed below.Предустановленное свойство с общими настройками колеса для определенного типа колеса, которое будет использоваться вместо значений параметров компонента, перечисленных ниже. |
Mass | Wheel mass, in kilograms. Setting a higher value requires a more powerful engine to rotate the wheel.Масса колеса в килограммах. Установка более высокого значения требует более мощного двигателя для вращения колеса. |
Radius | Wheel radius, in meters.Радиус колеса, в метрах. |
Joint Parameters | |
Linear Restitution | Linear stiffness of the joint. In the physical engine, the wheel and the vehicle body are two different bodies, not connected to each other. When these bodies move apart, the restitution value controls the amount of force applied to both bodies so that their fulcrums are aligned again. At the value of 1.0 all the energy from hitting the wheel is transferred to the body instantly. At the value of 0.5 the wheel moves slightly relative to the body. It imitates the suspension arms reducing the impact.Линейная жесткость сочленения. В физическом двигателе колесо и кузов транспортного средства — это два разных тела, не соединенных друг с другом. Когда эти тела отдаляются друг от друга, значение восстановления определяет величину силы, приложенной к обоим телам, чтобы их точки опоры снова выровнялись. При значении 1.0 вся энергия от удара по колесу мгновенно передается телу. При значении 0.5 колесо слегка перемещается относительно корпуса. Оно имитирует рычаги подвески, которые смягчают удар. |
Angular Restitution | Angular stiffness of the joint. This value is similar to Linear Restitution, but affects rotation: it controls the effect of the vehicle body rotation on the wheel rotation and vice versa.Угловая жесткость сочленения. Это значение аналогично Linear Restitution, но влияет на вращение: оно управляет влиянием поворота кузова транспортного средства на вращение колеса и наоборот. |
Linear Softness | Linear elasticity of the wheel joint. Defines whether linear velocities of the bodies are averaged out when the joint is stretched. The value of 0 means that the joint is rigid.Линейная упругость колесного шарнира. Определяет, усредняются ли линейные скорости тел при растяжении сочленения. Значение 0 означает, что сочленение является жестким. |
Angular Softness | Angular elasticity of the wheel joint. Defines whether angular velocities of the bodies are averaged out when the joint is twisted. The value of 0 means that the joint is rigid.Угловая упругость колесного шарнира. Определяет, усредняются ли угловые скорости тел при скручивании сочленения. Значение 0 означает, что сочленение является жестким. |
Suspension | |
Suspension Damping | Linear damping coefficient of the suspension. Higher values ensure faster vibration damping of the vehicle when driving over the bumps.Линейный коэффициент демпфирования подвески. Более высокие значения обеспечивают более быстрое гашение вибрации автомобиля при движении по ухабам. |
Suspension Spring | Suspension spring rigidity coefficient determining how strong the spring resists the vertical linear motion. If set to 0, the spring is disabled. Higher values cause more bouncing when hitting the curb.Коэффициент жесткости пружины подвески, определяющий, насколько сильно пружина сопротивляется вертикальному линейному перемещению. Если установлено значение 0, пружина отключена. Более высокие значения вызывают большее подпрыгивание при ударе о бордюр. |
Suspension Distance From | The lowest possible position of the wheel (relative to the initial position). This value together with Suspension Distance To forms the height of the vehicle suspension. The more this interval is, the easier it is for the vehicle to drive over bumps, but at the same time it becomes more wobbly.Самое низкое возможное положение колеса (относительно исходного положения). Это значение вместе с Suspension Distance To формирует высоту подвески транспортного средства. Чем больше этот интервал, тем легче автомобилю преодолевать ухабы, но в то же время он становится более шатким. |
Suspension Distance To | The highest possible position of the wheel (relative to the initial position). This value together with Suspension Distance From forms the height of the vehicle suspension. The more this interval is, the easier it is for the vehicle to drive over bumps, but at the same time it becomes more wobbly.Самое высокое возможное положение колеса (относительно исходного положения). Это значение вместе с Suspension Distance From формирует высоту подвески транспортного средства. Чем больше этот интервал, тем легче автомобилю преодолевать ухабы, но в то же время он становится более шатким. |
Suspension Target Distance | Suspension height at rest, the value between the Distance From and Distance To values. The suspension spring, if enabled, tries to keep the specified height.Высота подвески в состоянии покоя — значение между значениями Distance From и Distance To. Пружина подвески, если она включена, пытается сохранить заданную высоту. |
Braking | |
Max Brake Damping | Maximum damping coefficient of the brake.Максимальный коэффициент демпфирования тормоза. |
Max Handbrake Damping | Maximum damping coefficient of the handbrake.Максимальный коэффициент демпфирования ручного тормоза. |
Tire | |
Tire Damping | Damping coefficient of the tire. This value adds up to Max Brake Damping and Max Handbrake Damping. Can be perceived as the resistance of the wheels to air flow.Коэффициент демпфирования шины. Это значение суммируется с Max Brake Damping и Max Handbrake Damping. Может восприниматься как сопротивление колес воздушному потоку. |
Friction | |
Forward Friction | Longitudinal friction of the tires. Higher values reduce the likelihood of wheels spinning in place. This value also may enhance acceleration and improve braking performance.Продольное трение шин. Более высокие значения снижают вероятность вращения колес на месте. Это значение также может увеличить ускорение и улучшить эффективность торможения. |
Lateral Friction | Transverse friction of the tires. Higher values reduce the likelihood of drifting (for the front wheels) or skidding (for the rear wheels) also increasing the steerability — the vehicle seems to turn sharper and faster.Поперечное трение шин. Более высокие значения снижают вероятность заноса (для передних колес) или заносимости (для задних колес), а также повышают управляемость — кажется, что автомобиль поворачивает резче и быстрее. |
Additional Forces | |
Forward Factor | Coefficient specifying how fast the optimum longitudinal force can be achieved. Higher values increase the impulse produced by the tire.Коэффициент, определяющий, насколько быстро может быть достигнуто оптимальное продольное усилие. Более высокие значения увеличивают импульс, создаваемый шиной. |
Lateral Factor | Coefficient specifying how fast the optimum lateral force can be achieved. Higher values increase the impulse produced by the tire.Коэффициент, определяющий, насколько быстро может быть достигнуто оптимальное боковое усилие. Более высокие значения увеличивают импульс, создаваемый шиной. |
Threshold Factor | Threshold value between the wheel and "ground" velocities. If the value is too small, the longitudinal force is scaled down to prevent unnatural vibrations.Пороговое значение между скоростями колеса и "земли". Если значение слишком мало, продольное усилие уменьшается, чтобы предотвратить неестественные вибрации. |
Step 6. Set Up Input ControlsШаг 6. Настройка элементов управления вводом#
You can choose to use various types of input devices to control your vehicle, be it a joystick or a gamepad, a driving wheel or a keyboard. The following NodeDummy hierarchy is recommended to implement user input handling:Вы можете использовать различные типы устройств ввода для управления автомобилем, будь то джойстик или геймпад, рулевое колесо или клавиатура. Для реализации обработки пользовательского ввода рекомендуется следующая иерархия NodeDummy:
The car_input_manager component implements vehicle control and enables simultaneous handling of input events from several input devices. It contains an array of nodes (NodeDummy), each having the corresponding input component (car_keyboard_input, car_joystick_input, or car_gamepad_input) assigned. Each component implements input handling for the corresponding device.Компонент car_input_manager реализует управление транспортным средством и позволяет одновременно обрабатывать события ввода с нескольких устройств ввода. Он содержит массив нод (NodeDummy), каждой из которых присвоен соответствующий компонент устройства ввода данных (car_keyboard_input, car_joystick_input или car_gamepad_input). Каждый компонент реализует обработку данных от соответствующего устройства.
Input events can be generated by either of the following:События ввода могут быть сгенерированы любым из следующих способов:
- Button кнопка,
- Axis - can be either a physical axis of the controller, or it can be imitated with buttons ось — может быть либо физической осью контроллера, либо ее имитацией с помощью кнопок.
So here we simply configure necessary buttons and axes. Several options are available for an axis:Итак, здесь мы просто настраиваем необходимые кнопки и оси. Для оси доступно несколько вариантов:
- Full - full axis range: [-1, 1]Full — полный диапазон осей: [-1, 1].
- Positive range - only the positive range of axis values is taken: [0, 1]Positive range — берется только положительный диапазон значений оси: [0, 1].
- Negative range - only the negative range of axis values is taken: [-1, 0]Negative range — берется только отрицательный диапазон значений оси: [-1, 0].
- Full to positive - converts values in the full [-1, 1] range to values in the positive [0, 1] rangeFull to positive — преобразует значения в полном диапазоне [-1, 1] в значения в положительном диапазоне [0, 1].
- Full to negative - converts values in the full [-1, 1] range to values in the negative [-1, 0] rangeFull to negative — преобразует значения в полном диапазоне [-1, 1] в значения в отрицательном диапазоне [-1, 0].
The NONE value for a button indicates that it's not used.Значение NONE для кнопки указывает на то, что она не используется.
Debug Configuration (Optional)Конфигурация отладки (необязательно)#
Convincing simulation of any vehicle requires fine-tuning. To simplify the process of adjusting parameters, a set of debug windows displaying various vehicle parameters (engine, transmission, wheels, etc.) is at your disposal.Убедительная имитация любого транспортного средства требует тонкой настройки. Чтобы упростить процесс настройки параметров, в вашем распоряжении имеется набор отладочных окон, отображающих различные параметры автомобиля (двигатель, трансмиссия, колеса и т. д.).
In order to enable the debug option, you should create the following hierarchy of Node Dummy (they're just used to enable component logic) and assign the corresponding components to them as shown below:Чтобы включить опцию отладки, вы должны создать следующую иерархию Node Dummy (они просто используются для включения компонентной логики) и назначить им соответствующие компоненты, как показано ниже:
Switching Views (Optional)Переключение между камерами (необязательно)#
You can switch between the driver's view and other custom views (e.g. external cameras, etc.). Suppose you have various cameras (players) added to the scene and placed at desired locations. To enable switching between them, simply add a Node Dummy to the scene and assign the camera_switcher component to it. Then, in the Input field, specify the node responsible for input handling, that we added at Step 6. And, finally, specify the number of cameras you want to use, and drag the corresponding Player nodes to the fields of the Cameras parameter. All available cameras will be switched in a looped sequence according to the order they are listed.Вы можете переключаться между видом водителя и другими пользовательскими видами (например, внешними камерами и т. д.). Предположим, у вас есть различные камеры (Player), добавленные в сцену и размещенные в нужных местах. Чтобы включить переключение между ними, просто добавьте Node Dummy в сцену и назначьте ей компонент camera_switcher. Затем в поле Input укажите ноду, ответственную за обработку данных ввода, которую мы добавили на Шаге 6. И, наконец, укажите количество камер, которые вы хотите использовать, и перетащите соответствующие ноды Player в поля параметра Cameras. Все доступные камеры будут переключаться в циклической последовательности в соответствии с порядком их перечисления.
Road Surface Conditions SimulationМоделирование состояния дорожного покрытия#
Driving simulation would be incomplete without the ability to set various surface conditions, such as dry, wet, snow-covered, or icy road, mud, etc. You can simulate various surface conditions by setting up friction coefficients and specifying masks to define areas of the Landscape Terrain for them.Моделирование вождения было бы неполным без возможности задавать различные условия поверхности, такие как сухая, мокрая, заснеженная или обледенелая дорога, грязь и т. д. Вы можете моделировать различные условия поверхности, настраивая коэффициенты трения и задавая маски для определения областей Landscape Terrain для них.
To enable simulation of surface conditions add a Node Dummy to the scene and assign the friction_controller component to it. Then specify masks of Landscape Terrain defining the areas to which the values of longitudinal (forward) and lateral friction will be applied.Чтобы включить имитацию условий поверхности, добавьте Node Dummy в сцену и назначьте на нее компонент friction_controller. Затем укажите маски Landscape Terrain, определяющие области, к которым будут применяться значения продольного (прямого) и поперечного трения.
Now you can mark areas with different surface conditions on your terrain and fine-tune your vehicle using the debug windows to make your driving simulation as close to real conditions as possible.Теперь вы можете отмечать участки с различными условиями поверхности на ландшафте и настраивать свой автомобиль с помощью отладочных окон, чтобы максимально приблизить симуляцию вождения к реальным условиям.