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 узла в инспекторе и увеличьте уровень подразделения сетки для симуляции.
Задайте параметры для получения желаемого типа мягкого тела. Старайтесь поддерживать Simulation Precision выше 5, иначе мягкое тело может разрушиться.
Примечание
Обращайтесь с некоторыми параметрами осторожно, так как некоторые значения могут привести к странным результатам. Например, если форма не полностью замкнута, а давление больше нуля, мягкое тело будет летать, как полиэтиленовый пакет под сильным ветром.
Запустите сцену, чтобы просмотреть симуляцию.
Совет
Чтобы улучшить результат моделирования, увеличьте 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. Должно получиться что-то вроде этого:
Совет
Подразделение создает более мозаичную сетку для лучшего моделирования.
Добавьте узел BoneAttachment3D под узлом скелета и выберите кость шеи, чтобы прикрепить плащ к скелету персонажа.
Примечание
Узел BoneAttachment3D предназначен для прикрепления объектов к кости арматуры. Прикреплённый объект будет следовать за движением кости; таким образом можно прикрепить оружие персонажа.
Чтобы создать штифтовые соединения, выберите верхние вершины в узле SoftBody3D:
Закрепленные суставы можно найти в свойстве Attachments объекта SoftBody3D, выберите BoneAttachment в качестве SpatialAttachment для каждого закрепленного сустава, теперь закрепленные суставы прикреплены к шее.
Последний шаг — избежать обрезки, добавив Kinematic Body Player в Parent Collision Ignore SoftBody3D.
Воспроизведите сцену, и плащ должен симулироваться правильно.
Здесь рассматриваются основные настройки мягкого тела, экспериментируйте с параметрами, чтобы добиться желаемого эффекта при создании игры.
Использование импортированных Сеток
Параметр Save to File в диалоговом окне Advanced Import Settings позволяет сохранить сетку в отдельный файл ресурсов, который затем можно прикрепить к узлам SoftBody3D.
Вы также можете отключить генерацию уровня детализации (LOD) или изменить параметры генерации при импорте сетки для использования в SoftBody3D. Настройки импорта по умолчанию создадут LOD, объединяющий смежные грани, которые практически плоские относительно друг друга, даже на очень близких расстояниях рендеринга. Это хорошо подходит для статических сеток, но часто нежелательно для использования в SoftBody3D, если вы хотите, чтобы грани могли изгибаться и двигаться относительно друг друга, а не визуализироваться как одна плоскость.
Более подробную информацию см. в разделах Импорт конфигурации и Уровень детализации сетки (LOD).