Руководство по физике в Вердж3Д — Софт Эйт Софт
Description: Как использовать физический движок Вердж3Д для моделирования динамики и столкновений на вашей сцене.

# Руководство по физике в «Вердж3Д»

«Вердж3Д» включает в себя физический движок, наделяющий ваши 3Д-объекты свойствами из реального мира. Эта функция будет особенно полезна при создании 3Д-игр и приложений виртуальной и дополненной реальности.

В качестве физического бэкенда мы используем физический движок «Буллет» с открытым исходным кодом, веб-версия которого называется «Аммо-Джей-Эс».

## Содержание

- Начало работы с физикой
- Использование пазлов
- Общие рекомендации
- Создание персонажа от первого лица
- Симуляция физики автомобиля

#

## Начало работы с физикой

Прежде чем вы сможете использовать физику, необходимо добавить модуль физики в ваше приложение. Это можно сделать на этапе создания приложения с помощью соответствующей опции в диспетчере приложений (включена по умолчанию).

Если вы забыли включить параметр Physics, просто скопируйте файлы ammo.wasm.js и ammo.wasm.wasm из папки build установочной папки «Вердж3Д» (например C:\Program Files\Verge3D_for_Blender\build) в папку с приложением.

#

## Использование пазлов

Ознакомьтесь с пазлами физики.

#

## Общие рекомендации

- Обязательно применяйте масштаб в пакете моделирования, так как физический движок просто игнорирует масштаб объектов.
- Для достижения наилучших результатов начало координат вашего объекта должно совпадать с центром массы. Чтобы сделать это в «Блендер» 2.8+, используйте оператор Object → Set Origin → Origin to Center of Mass (Volume).
- Никогда не позиционируйте и не анимируйте динамическое тело напрямую. Вместо этого применяйте к нему силу/импульс/скорость используя пазл apply vector или прикрепите его к другому объекту пазлом snap body.
- В целях оптимизации, «Вердж3Д» отключает динамические тела после периода бездействия. Вы можете активировать эти тела снова, применив какой-либо вектор, столкнув их с другими телами или используя опцию activate пазла set body state . Если вам нужно, чтобы тело было активным постоянно, примените к нему состояние disable deactivation используя тот же пазл.
- Включить метод непрерывного обнаружения столкновений (CCD) для улучшения качества моделирования быстродвижущихся тел, таких как снаряды, шары для пинбола/бильярда/боулинга и т.д. Для этого установите параметры ccd motion threshold и ccd swept sphere radius на эти тела. См. здесь для дополнительной информации.
- Помните, что вы не можете определить коллизию между static/static, static/kinematic, или kinematic/kinematic объектами. Если использование dynamic тела не представляется возможным, рассмотрите возможность назначения ghost физики для реализации обнаружения движущегося рядом нединамического объекта с static/kinematic средой.

#

## Создание персонажа от первого лица

Режим персонажа от первого лица может быть удобен не только для шутеров и RPG-игр, но и для любых приложений, требующих исследования больших пространств. Это может быть визуализация архитектуры, приложения для электронного обучения и интерактивные гиды, музеи и другие культурные объекты, и даже виртуальные 3Д-рынки. Кроме того, вы можете интегрировать персонажа от первого лица в ваше ВР-приложение, сделав его гораздо более реалистичным и увлекательным!

Существует множество возможных способов реализации режима FPS, но для неопытных пользователей «Вердж3Д» мы рекомендуем вам следовать этому краткому руководству для более быстрого достижения результатов.

Создайте объект в форме капсулы, который символизирует вашего персонажа. Настройте его высоту и ширину, чтобы он выглядел более реалистично. Убедитесь, что вы правильно установили центр объекта.

В пазлах, назначьте персонажу dynamic capsule (капсулообразное) тело и отключите его вращение. Таким образом, вы позволите персонажу двигаться, но не вращаться. Также примените disable deactivation к вашей капсуле.

Поскольку персонажу нужен пол (+стены) или земля, чтобы ходить, создайте такие тела, используя соответствующие пазлы create physics body.

Следующий шаг - настройка камеры. Камере не будет назначена физика, поскольку она нужна нам только для того, чтобы быть нашими "глазами". Установите на него элементы управления First-Person, но не назначайте материал коллизии (мы будем использовать полнофункциональное обнаружение коллизий, предоставляемое физическим движком, а не базовую симуляцию пола/стен). Также, уберите галку с параметра Allow Panning , а параметр Movement Speed поставьте на ноль:

Теперь нам нужно прикрепить камеру к "голове" персонажа. Нет необходимости создавать модель головы, добавьте в сцену пустой объект под названием "Голова" и прикрепите его к верхней части модели капсулы. Таким образом, "голова" будет двигаться вместе с персонажем.

С помощью дополнительного объекта "Голова" вы можете прикреплять/откреплять камеру к персонажу. Чтобы прикрепить камеру, используйте parent и snap to object пазлы:

Чтобы открепить камеру, используйте пазл parent с пустым полем to object .

Персонаж создан! Теперь пришло время заставить его двигаться в вашей сцене. В самом простом случае нам нужно двигаться вперед, когда пользователь нажимает клавишу со стрелкой вверх. Для этого примените к персонажу вектор linear velocity, который рассчитывается на основе горизонтального направления камеры. Чтобы сделать симуляцию более достоверной, всегда применяйте векторы, используя пазл on simulation tick .

Для перемещения персонажа на мобильном устройстве вам понадобятся дополнительные элементы "контроллера". Вы можете создать их с помощью 3Д-объектов, родительских по отношению к камере или с помощью HTML-элементов.

Для перемещения персонажа в режиме ВР вы можете использовать пазл get controller property и пазл get gamepad property для получения статуса кнопок/осей контроллера ВР.

#

## Симуляция физики автомобиля

Реалистичное симулирование физики автомобиля может быть действительно полезным в таких приложениях, как интерактивные программы настройки автомобиля или гоночные игры.

Данная функциональность используется в демо-приложении «Аркадные гонки» (исходные файлы доступны в магазине ассетов).

## Остались вопросы?

Задайте их на нашем форуме!