使用软体SoftBody

柔体(或 柔体动力学)模拟可变形物体的运动, 改变形状和其他物理特性. 例如, 这可以用于模拟布料或创建更逼真的角色.

基本结构

一个软体节点用于模拟柔软的物体. 参考:` 软体 <类_软体>`.

我们将创建一个弹性立方体来演示软体的设置.

创建一个以 Spatial 节点为根节点的新场景. 然后再创建一个 Softbody 节点. 之后在 Softbody 节点的属性面板(inspector )中的 mesh 中添加 CubeMesh 并增加网格的细分以进行模拟.

../../_images/softbody_cube.png

设置参数以获得您想要的软体类型. 尽量保持 "模拟精度"(Simulation Precision)的数值高于5, 否则, 该软体结构可能会瓦解.

../../_images/softbody_cube_menu.png

注解

小心处理一些参数, 因为改动某些数值会导致奇怪的结果. 例如, 如果形状未完全封闭并且您将压力设置为大于0, 则软体将如同在强风下的塑料袋一样飞舞.

播放该场景以查看模拟结果.

小技巧

为了改善模拟结果, 增加 "模拟精度"(Simulation Precision), 会大幅度增加性能成本.

斗篷模拟

我们将在三维平台游戏演示中制作一个斗篷.

注解

您可以在`GitHub <https://github.com/godotengine/godot-demo-projects/tree/master/3d/platformer>` 或者 资源商店 <https://godotengine.org/asset-library/asset/125> 内下载这款三维平台游戏演示.

打开 "玩家 "(Player)场景, 添加一个" 软体 "(SoftBody)节点并为其指定一个" 平面网格"(PlaneMesh).

打开 "平面网格"(PlaneMesh)属性并设置大小(x:0.5 y:1)然后将 "细分宽度"(Subdivide Width)和 "细分深度"(Subdivide Depth)设置为5. 调整 "软体"(SoftBody)的位置. 您应该看到如下所示:

../../_images/softbody_cloak_subdivide.png

小技巧

细分会生成更细密的网格, 以便更好的模拟.

在骨架节点下添加: 参考:` 附属骨骼 <类_附属骨骼>` 节点, 然后选择颈部(Neck)骨骼, 将斗篷附加到角色骨架.

注解

"附属骨骼" 节点是将物体连接到盔甲的单根骨上. 附着的物体会随着单根骨的运动, 角色的武器可以通过这种方式附加.

../../_images/softbody_cloak_bone_attach.png

要创建固定的关节, 选择 "软体" 节点上的顶点:

../../_images/softbody_cloak_pinned.png

SoftBodyAttachments 属性中可以找到图钉关节, 为每个被图钉关节选择 BoneAttachment 作为 SpatialAttachment , 被图钉关节连接到颈部.

../../_images/softbody_cloak_pinned_attach.png

最后一步, 通过在 "软体" 的 "忽略父级碰撞" 中添加动力学物体 "玩家" 来避免裁切.

../../_images/softbody_cloak_ignore.png

播放场景, 应该已经正确模拟了斗篷.

../../_images/softbody_cloak_finish.png

这涵盖了软体的基本设置, 当你制作游戏时, 尝试这些参数来达到你想要的效果.