Руководство по физике Verge3D

В Verge3D присутствует физический движок, который может заставить ваши 3D-объекты вести себя как в реальном мире. Эта функция особенно полезна для создания 3D-игр и AR/VR-приложений.

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

Содержание

Начиная Работу с Физикой

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

По умолчанию Verge3D использует так называемую WebAssembly-версию физического движка. Эта версия дает значительный прирост производительности по сравнению с обычной версией, но не работает в Internet Explorer 11 и старых браузерах Safari (версии 10 или ниже). Если вам нужно, чтобы ваше приложение поддерживалось в этих браузерах, включите модули Physics и IE 11 в диалоге создания приложения.

Кроме того, вы можете добавить модуль физики в уже существующее приложение. Для этого скопируйте файлы ammo.wasm.js и ammo.wasm.wasm из папки verge3d/build в папку вашего приложения, и добавьте строку

<script src="ammo.wasm.js"></script>

в файл .html вашего приложения над скриптом v3d.js .

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

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

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

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

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

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

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

В пазлах, назначьте персонажу 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 .

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

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

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

Реалистичное симулирование физики автомобиля может быть действительно полезным в таких приложениях, как интерактивные программы настройки автомобиля или гоночные игры. Ознакомьтесь с игрой Arcade Racing в дистрибутиве Verge3D, чтобы понять, как реализовать эту функцию в вашем собственном приложении.

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

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