Articles cc lab lab 数万個のオブジェクトを軽快に動かす ~ Unityの新2D物理「Physics Core 2D」技術検証

こんにちは、インタラクティブコミュニケーショングループの田村です。

Unity 6.5から、新しい2D物理演算システム「Physics Core 2D(旧 Low-Level 2D Physics)」が登場しました。これまでの2D物理ではフレームレートが大きく落ちてしまうような数のオブジェクトでも、滑らかにシミュレーションできるのが特長です。

今回は、Physics Core 2Dを使って3つのデモを作成し、どのくらいの数のオブジェクトを扱えるのか、またどんな表現ができるのかを検証してみました。

Physics Core 2Dで広がる2D物理表現

開発環境

  • Unity 6000.5.2f1
  • Windows

Physics Core 2Dとは

Physics Core 2Dは、Unity 6.5以降で使える新しい2D物理演算システムです。Unity 6.3でサンドボックス機能として公開された際は「Low-Level 2D Physics」と呼ばれていました。

従来の2D物理(Rigidbody2DやCollider2Dを使う方式)では、オブジェクトが増えるにつれて処理が重くなっていきます。一方、Physics Core 2Dでは、従来なら処理落ちしてしまうような数のオブジェクトでも、フレームレートを保ちながら物理演算できます。

扱える数が増えると、「一面に降り積もる落ち葉」や「粒の集まりで表現する水」など、これまで実現が難しかった表現も試しやすくなります。そこで今回は、その可能性を探るために3つのデモを作成しました。

成果物の紹介

デモ1:大量のオブジェクトを動かす

まずは、円形のオブジェクトを大量に出して、どこまで動かせるのかを比べてみました。エディタ上で、フレームレートが30FPS程度まで落ちるオブジェクト数を計測した結果が以下です。

方式 30FPS程度になったオブジェクト数
従来の2D物理 3,600個(60×60)
Physics Core 2D 40,000個(200×200)

 
同じくらいのフレームレートで、約11倍のオブジェクトを動かせました。

テクスチャアトラスで見た目を変える

これだけ数が多いと、すべて同じ見た目では少し寂しくなります。そこで、複数の落ち葉の画像を1枚にまとめたテクスチャアトラスを用意し、オブジェクトごとに違う葉を割り当てました。

cclabno34_physicscore2D_texture_atlas
図1 テクスチャアトラス
cclabno34_physicscore2D_objects
図2 オブジェクトたち

描いた線の形で当たり判定を作る

さらに、マウスをドラッグして引いた線の形に合わせて、当たり判定を持つオブジェクトを作ることもできました。これを利用して、線で囲った中の落ち葉をかき集めるデモにしてみました。

動画1 大量の落ち葉を線で囲って集めるデモ

デモ2:フォントの形をした文字オブジェクト

次に、TextMeshProで使っているフォントファイルを利用して、入力したテキストの形どおりの当たり判定を持つオブジェクトを作りました。文字の輪郭がそのまま当たり判定になるため、文字同士が引っかかったり、すき間に入り込んだりします。

さらに、文字オブジェクト同士が触れたときに、「相手が何の文字か」を取得できます。これを利用して、ぶつかった文字を合体させる仕組みも作ってみました。たとえば「魚」と「弱」をぶつけると「鰯」になります。

cclabno34_フォントの形をした文字オブジェクト
動画2 フォントの形をした文字オブジェクトと、文字の合体

 

デモ3:温度で動く水

線を描いてゲル状の水をコップへ導く、というゲームがあります。このようなゲームは本格的な流体シミュレーションをしているわけではなく、たくさんの粒を物理演算で動かし、見た目をメタボールで水らしく見せている物理演算ゲームです。大量の粒を扱えるPhysics Core 2Dなら、同じような表現もできそうです。そこで、この仕組みを使ったデモを作成しました。

今回は、ただ再現するだけでなく、温度システムも追加してみました。

  • 水の粒が熱源に触れている間、温度が変化する
  • 高温になった粒は蒸発し、上に向かって「落ちる」
  • 低温の粒には、通常どおり下向きの重力が働く

これによって、水の粒が上にも下にも自由に移動する表現ができました。

動画3 温度によって上下に移動する水のデモ

考察と今後の展望

今回の検証を通して、Physics Core 2Dでは、従来の2D物理に比べて桁違いの数のオブジェクトを扱えることが確認できました。また、単純に数を増やせるだけでなく、描いた線やフォントの形を当たり判定にしたり、接触した相手の情報を使ったりと、いろいろな表現に応用できることも分かりました。

大量の粒を使った演出や、手描きの線・文字を使った仕組みは、デジタルサイネージや体験型コンテンツとも相性が良さそうです。今回の検証で得られた知見を活かし、今後のインタラクティブコンテンツの提案につなげていきたいと思います。