ぴちてぶろぐ

ゲーム開発会社勤務のUnityエンジニアの情報発信場!!

【Unity】SoftBodyを作ってみた(NVIDIA Flex for Unity/ObiSoftBody)

柔らかいモノを作りたい

男たるもの誰しもが1度は考えるはずである。
ということで、UnityでSoftBodyを実装するにはどうすればいいのかを調べてみました。
今回はスマホをターゲットに検討

ざっと調べた感じの選択肢

  • NVIDIA Flex for Unityを使う
  • ObiSoftBodyを使う
  • Clothを使う
  • 自前で頑張る

今回はこの2つを触りました。
NVIDIA Flex for Unity/ObiSoftBody

NVIDIA Flex for Unity

NVIDIA FleX | NVIDIA Developer

  • 流体
  • 軟体

等の動きをランタイム上でシミュレーション出来るミドルウェア(無料!)
youtu.be

使い方は下記のサイトを参考にさせて頂きました。
めちゃ分かりやすかったです。ありがとうございます。
qiita.com

所感

だいぶいい感じ!これが無料なのか…と心躍りました。
が、、、Android/iOSに対応しておらず、自分の目的が果たせないことに実装してから気づきました。
よくよく見たら公式サイトにサポートプラットフォームはWindows/Macってありました。。

Obi SoftBody

assetstore.unity.com
youtu.be
有料ですが、半額セールの時に購入して試してみました。
使い方は公式ドキュメントを参照
Obi Physics for Unity - Rope Setup

所感

基本的な構成はNVIDIA Flexと似ているのでNVIDIA Flexを触った後だと入り込みやすかったです。
AssetStoreの紹介動画には柔らかいモノが載っていなかったので不安でしたが
サンプルシーンにはちゃんと入っていました。

f:id:peachtea_tom:20200510045409p:plain
Boll Pool
GalaxyS8での検証になりますが、数個球を出しても60FPSは維持できてたので処理負荷も最適化されていると思われます。
※全てCPUで処理をしているとのこと。
http://obi.virtualmethodstudio.com/tutorials/index.html

公式FAQ
Q.Does Obi run in the GPU?
A.No. The core physics solver runs 100% in the CPU. Only rendering is done using the GPU.

Q.Can Obi be regarded as a fast simulator, for CPU standards?
A.Yes. It is extremely well optimized. A task-based multithreading scheme is used to split workload into evenly sized chunks. All the math-heavy routines are SIMD accelerated.

iOSはまだ試せていないですが、せっかく購入したのでこれで色々やってみようと思います。
球をぶつけて物体を凹ませることも出来るのでゲームの表現幅が広がりますね。
youtu.be

その他

Obi SoftBodyの他にもObiシリーズが出ているようで

  • Obi Rope(ロープ表現)

 Obi Rope | Physics | Unity Asset Store

  • Obi Cloth(布表現)

 Obi Cloth | Physics | Unity Asset Store

  • Obi Fluid(流体表現)

 Obi Fluid | Physics | Unity Asset Store
といくつか出ているようです。
紹介動画を見る限りどれも面白そう!機会を見つけて触ってみようと思います。
アップデートも細かく行われているようなのでこの点も安心できました。