Alpaca Tech Blog

ゲーム作る系 草食動物の備忘録

【Unity】Obi Softbodyでプルプルなプリン作ってみる

この記事は「Unity アセット真夏のアドベントカレンダー 2021 Summer!」 30日目の記事になります。

概要

積んでた Obi Softbody(軟体物理演算) でプリン作ります。ぷるぷるしたい。

完成動画

こんな感じのプリンを作りました。

硬さの調整はこんな感じ

f:id:alpacatech:20210829233203g:plain

 

目次

 

紹介するアセット

アセット紹介動画

単にぐにょぐにょさせるだけでなく、へこんだままになる、キャラクターの一部だけぐにょぐにょさせる等の機能があります。

 

動作環境

[OS] Windows10

[Unity] 2020.3.13f

[Obi Softbody] 6.2

※OSやバージョンが違うと設定方法が変わる可能性があります。確認お願いします。

 

実行までの設定 

1. プリンのメッシュを準備する

1.1. Blenderで作成して、fbxで出力します。

f:id:alpacatech:20210829072441p:plain

※ぐにょぐにょするために頂点は多めに設定してください(これでも少ない方)

 

1.2. Unityにfbxをインポートした後Read/Write Enabled にチェックを入れます

f:id:alpacatech:20210829082408p:plain

※これをやらないと設定時に「The input mesh is null, or not readable.」 というエラーが出ます。

 

2. Softbody(ぐにょぐにょ物理演算)の設定を行う

設定は大きく2種類あります

A. Surface softbody

f:id:alpacatech:20210813144237p:plain

中身が詰まっていませんが処理が軽いみたいです(表面のみシミュレートするから)

B. Volume softbody

f:id:alpacatech:20210813144321p:plain

ボクセル的に中身を詰めます。処理は重めですが正確な演算ができるみたいです

参考:Obi Physics for Unity - Softbody blueprints

今回は、 B. Volume softbody を利用します。

2.1. 設定(Softbody Volume Blueprint)の作成

右クリック>Create>Obi>Softbody Volume Blueprint を選択して作成

f:id:alpacatech:20210829074019p:plain

 softbody volume blueprintが作成されます(名前は自由に変更可能)

f:id:alpacatech:20210829073950p:plain

2.2. メッシュの指定

 softbody volume blueprint を選択して

1. Input Meshに対応したいメッシュを選択

2. Generateボタンを押して

f:id:alpacatech:20210829225022p:plain

3. Editを押します。 

2.3. 当たり判定の確認

Editボタンを押すと専用の設定画面(シーン)に移動します。

f:id:alpacatech:20210829225305p:plain

※Render modeをEverythingに変更すると当たり判定が視覚的に見えるようになります。(白い球)

各パラメータを調整して判定の大きさや密度(処理速度に関わる)を変更してDoneを押してください。

設定が多いので細かい説明は、公式ドキュメントを確認してください。

 

3. 壁の当たり判定を設定する

Unityの物理演算はCollider(BoxCollider, MeshCollider等)ですが、

Obi Softbodyは、別途 Obi Colliderも適応する必要があります。 

f:id:alpacatech:20210829230338p:plain

Souce ClliderにUnity標準のColliderを指定してください。

 

4. プリンのメッシュにSoftbody(ぐにょぐにょ物理演算)を適応にする

4.1. プリンに設定を割り当てる

プリンオブジェクト(Skinned Mesh Renderer) に、

Obi Softbody, Obi Softbody Skinner を追加します。

Obi Softbodyに 2で作成した設定(Softbody Volume Blueprint)を割り当てます。

Obi Softbody Skinnerの[Bind skin]ボタンを押すとメッシュが変形できるようになります。

f:id:alpacatech:20210829234028p:plain

 

4.2. プリンが物理演算を行えるようにする

物理演算を行うには、Obi Solverオブジェクトの子にプリン(Obi Softbodyのオブジェクト)を設置します。

f:id:alpacatech:20210829230553p:plain

Obi Solverは、以下の通りになります。重力や物理演算のタイミング等の設定になります。

f:id:alpacatech:20210829231435p:plain

これでちょっと硬めのプリンが落下できるようになりました。

f:id:alpacatech:20210829232038g:plain

4.3. プリンの硬さを変更する

 Obi Softbodyの Deformation resistanceの調整で元に戻る強さを調整できます。

f:id:alpacatech:20210829233203g:plain

 

Obi Softbodyの設定は以上になります。

説明で補えていない部分もあるかもしれないのでサンプルシーンも同時に確認してください。

f:id:alpacatech:20210829231310p:plain 

↑画面をクリックするとボールが増えるサンプル

 

今回は、プリンのポリゴン数が少なく少しカクカクしていますがポリゴン数を増やすとなめらかなプリンになると思います。

 

利用したアセット

軟体物理演算

無料の食器