软体

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

基本结构

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

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

创建一个以``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

The pinned joints can be found in SoftBody's Attachments property, choose the BoneAttachment as the SpatialAttachment for each pinned joints, the pinned joints are now attached to the neck.

../../_images/softbody_cloak_pinned_attach.png

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

../../_images/softbody_cloak_ignore.png

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

../../_images/softbody_cloak_finish.png

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