Настройка физических объектов
Содержание
Вводная[править]
Система координат в ODE аналогична используемой в OpenGL: вертикальная Y направлена снизу вверх, X слева направо, Z к наблюдателю.
В сталкире доступно 5 видов сочлений:
- Rigid – твёрдое тело
- Cloth – мягкое тело (тряпка)
- Joint – сустав или шарнир (вращение по XYZ)
- Wheel – колесо (можно управлять осью X при вращении по оси Z)
- Slider – скольжение (перемещение и вращение по Z)
Виды примитивов (collision shape) для просчёта столкновений:
- Box (параллелепипед)
- Sphere (сфера)
- Cylinder (цилиндр)
В простых объектах обычно используется один примитив (например, бочка использует один цилиндр). Сложные (составные) модели могут использовать несколько примитивов (например, стол использует один параллелепипед для столешницы и четыре для ножек).
Свойства тела[править]
Жесткие тела в сталкире обладают следующими основными свойствами:
- Mass (масса)
- Center of Mass (позиция центра массы)
- Friction – коэффициент трения. Чем меньше, тем более "скользким" считается элемент.
- Spring Factor – пружинистость. Чем меньше, тем мягче пружина.
- Damping Factor – демпфирование. Чем больше, тем быстрее затухают колебания.
Свойства движения и остановки[править]
Диапазон движения/остановки ограничивается т.н. лимитами. Они задают диапазон, в котором сустав может перемещаться/вращаться.
Примеры[править]
Пример жёсткого тела: ящик и бочка[править]
Пример мягкого тела: мешок с песком[править]
Пример сустава: цепь с грузом[править]
Пример с колесами: тележка[править]
Пример скольжения: выдвижной ящик[править]
Параметры отключения физики[править]
Актуальны для любой модели. Если не установлены – используются значения по умолчанию.
[disable]
linear_factor = 0.3
angular_factor = 0.3
Захват предметов[править]
Если нет этой секции, то возможность отключена.
[capture]
bone = bip01_tail ; кость, за которую хватать
distance = 0.45 ; объект можно захватить в пределах этого расстояния
time_limit = 500 ; максимальное время в секундах для попытки захвата
pull_force = 50000. ; максимальная сила для захвата
pull_distance = 2. ; максимальное расстояние, на которое можно перетащить объект
velocity_scale = 0.015 ; скорость вытаскивания
capture_force = 10000. ; максимальная сила для удержания