SoftBody

Soft Body(またはSoft Bodyダイナミクス )は、変形可能なオブジェクトの動き、形状の変化、その他の物理的特性をシミュレートします。 これは、たとえば、布をシミュレートしたり、よりリアルなキャラクターを作成するために使用できます。

基本的なセットアップ

SoftBody ノードは、ソフトボディのシミュレーションに使用されます。

弾力のある立方体を作成して、ソフトボディのセットアップを示します。

ルートとして Spatial ノードを持つ新しいシーンを作成します。 次に、Softbody ノードを作成します。 インスペクタのノードの mesh プロパティに CubeMesh を追加し、シミュレーションのためにメッシュの細分割を増やします。

../../_images/softbody_cube.png

パラメーターを設定して、目的のソフトボディのタイプを取得します。Simulation Precision を5以上に維持してください。そうしないと、ソフトボディが破たんする可能性があります。

../../_images/softbody_cube_menu.png

注釈

一部の値は奇妙な結果につながる可能性があるため、一部のパラメーターは注意して処理してください。 たとえば、シェイプが完全に閉じられておらず、pressureを0より大きい値に設定すると、ソフトボディは強風の下でビニール袋のように飛び回ります。

シーンを再生してシミュレーションを表示します。

ちなみに

シミュレーションの結果を改善するために、Simulation Precision を上げると、パフォーマンスを犠牲にして大幅に改善されます。

マントのシミュレーション

Platformer3Dのデモでマントを作りましょう。

注釈

Platformer3Dデモは GitHub <https://github.com/godotengine/godot-demo-projects/tree/master/3d/platformer> または アセットライブラリ でダウンロードできます。

Player シーンを開き、SoftBody ノードを追加して PlaneMesh を割り当てます。

PlaneMesh プロパティを開き、size(x: 0.5 y: 1)を設定し、Subdivide Width と``Subdivide Depth`` を5に設定します。SoftBody の位置を調整します。次のようなことが起きてしまいます:

../../_images/softbody_cloak_subdivide.png

ちなみに

サブディビジョンでは、より優れたシミュレーションのために、よりテッセレーションされたメッシュが生成されます。

スケルトンノードの下に BoneAttachment ノードを追加し、Neckボーンを選択してマントをキャラクタースケルトンにアタッチします。

注釈

BoneAttachment ノードは、オブジェクトをアーマチュアのボーンにアタッチします。 アタッチされたオブジェクトはボーンの動きに追従します。キャラクターの武器はこの方法でアタッチできます。

../../_images/softbody_cloak_bone_attach.png

ピンジョイントを作成するには、SoftBody ノードの上の頂点を選択します:

../../_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

最後のステップは、SoftBodyParent Collision Ignore にキネマティックボディ Player を追加して、クリッピングを回避することです。

../../_images/softbody_cloak_ignore.png

シーンを再生すると、マントは正しくシミュレートされます。

../../_images/softbody_cloak_finish.png

これは、ソフトボディの基本設定をカバーし、ゲームを作成するときに目標とする効果を達成するためのパラメーターを実験できます。