Руководство по физике в «Вердж3Д»
«Вердж3Д» включает в себя физический движок, наделяющий ваши 3Д-объекты свойствами из реального мира. Эта функция будет особенно полезна при создании 3Д-игр и приложений виртуальной и дополненной реальности.
В качестве физического бэкенда мы используем физический движок «Буллет» с открытым исходным кодом, веб-версия которого называется «Аммо-Джей-Эс».
Содержание
- Начало работы с физикой
- Использование пазлов
- Общие рекомендации
- Создание персонажа от первого лица
- Симуляция физики автомобиля
Начало работы с физикой
Прежде чем вы сможете использовать физику, необходимо добавить модуль физики в ваше приложение. Это можно сделать на этапе создания приложения с помощью соответствующей опции в диспетчере приложений.
Кроме того, вы можете добавить модуль физики в уже существующее приложение. Для этого скопируйте файлы ammo.wasm.js и ammo.wasm.wasm из папки 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Д-объектов, родительских по отношению к камере или с помощью ХТМЛ-элементов.
Для перемещения персонажа в режиме ВР вы можете использовать пазл get controller property и пазл get gamepad property для получения статуса кнопок/осей контроллера ВР.
Симуляция физики автомобиля
Реалистичное симулирование физики автомобиля может быть действительно полезным в таких приложениях, как интерактивные программы настройки автомобиля или гоночные игры.
Данная функциональность используется в демо-приложении «Аркадные гонки» (исходные файлы доступны в магазине ассетов).
Остались вопросы?
Задайте их на нашем форуме!