Work in progress

The content of this page was not yet updated for Godot 4.5 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

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

Мягкие тела (или soft-body dynamics) моделируют движение, изменение формы и другие физические свойства деформируемых объектов. Это может использоваться, например, для имитации ткани или для создания более реалистичных персонажей.

Базовая настройка

Узел SoftBody3D используется для моделирования мягких тел.

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

Создайте новую сцену с корневым узлом Node3D. Затем создайте узел SoftBody3D. Добавьте CubeMesh в свойство mesh узла в инспекторе и увеличьте уровень подразделения сетки для симуляции.

../../_images/softbody_cube.png

Задайте параметры для получения желаемого типа мягкого тела. Старайтесь поддерживать Simulation Precision выше 5, иначе мягкое тело может разрушиться.

../../_images/softbody_cube_menu.png

Примечание

Обращайтесь с некоторыми параметрами осторожно, так как некоторые значения могут привести к странным результатам. Например, если форма не полностью замкнута, а давление больше нуля, мягкое тело будет летать, как полиэтиленовый пакет под сильным ветром.

Запустите сцену, чтобы просмотреть симуляцию.

Совет

Чтобы улучшить результат моделирования, увеличьте Simulation Precision, это даст значительное улучшение за счет производительности.

Моделирование плаща

Давайте создадим плащ в демо-версии Platformer3D.

Примечание

Демонстрационную версию Platformer3D можно загрузить на GitHub <https://github.com/godotengine/godot-demo-projects/tree/master/3d/platformer> или в Asset Library <https://godotengine.org/asset-library/asset/2748>.

Откройте сцену Player, добавьте узел SoftBody3D и назначьте ему PlaneMesh.

Откройте свойства PlaneMesh и задайте размер (x: 0.5 y: 1), а затем установите Subdivide Width и Subdivide Depth на 5. Отрегулируйте положение SoftBody3D. Должно получиться что-то вроде этого:

../../_images/softbody_cloak_subdivide.png

Совет

Подразделение создает более мозаичную сетку для лучшего моделирования.

Добавьте узел BoneAttachment3D под узлом скелета и выберите кость шеи, чтобы прикрепить плащ к скелету персонажа.

Примечание

Узел BoneAttachment3D предназначен для прикрепления объектов к кости арматуры. Прикреплённый объект будет следовать за движением кости; таким образом можно прикрепить оружие персонажа.

../../_images/softbody_cloak_bone_attach.png

Чтобы создать штифтовые соединения, выберите верхние вершины в узле SoftBody3D:

../../_images/softbody_cloak_pinned.png

Закрепленные суставы можно найти в свойстве Attachments объекта SoftBody3D, выберите BoneAttachment в качестве SpatialAttachment для каждого закрепленного сустава, теперь закрепленные суставы прикреплены к шее.

../../_images/softbody_cloak_pinned_attach.png

Последний шаг — избежать обрезки, добавив Kinematic Body Player в Parent Collision Ignore SoftBody3D.

../../_images/softbody_cloak_ignore.png

Воспроизведите сцену, и плащ должен симулироваться правильно.

../../_images/softbody_cloak_finish.png

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

Использование импортированных Сеток

Параметр Save to File в диалоговом окне Advanced Import Settings позволяет сохранить сетку в отдельный файл ресурсов, который затем можно прикрепить к узлам SoftBody3D.

Вы также можете отключить генерацию уровня детализации (LOD) или изменить параметры генерации при импорте сетки для использования в SoftBody3D. Настройки импорта по умолчанию создадут LOD, объединяющий смежные грани, которые практически плоские относительно друг друга, даже на очень близких расстояниях рендеринга. Это хорошо подходит для статических сеток, но часто нежелательно для использования в SoftBody3D, если вы хотите, чтобы грани могли изгибаться и двигаться относительно друг друга, а не визуализироваться как одна плоскость.

Более подробную информацию см. в разделах Импорт конфигурации и Уровень детализации сетки (LOD).