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

ピン留めされたジョイントは SoftBodyAttachments プロパティで見つけることができ、ピン留めされた各ジョイントの SpatialAttachment として BoneAttachment を選択すると、ピン留めされたジョイントが首(neck)に取り付けられます。

../../_images/softbody_cloak_pinned_attach.png

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

../../_images/softbody_cloak_ignore.png

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

../../_images/softbody_cloak_finish.png

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