資料
ダウンロード

Technology > 軽くて、読めて、AIと組める物理エンジン ― 統一粒子シミュレータ「physica」

軽くて、読めて、AIと組める物理エンジン ― 統一粒子シミュレータ「physica」

物が落ちる・ぶつかる・流れる・変形する ― それを計算で再現するのが「物理シミュレータ」です。ゲームや映像、ロボットの強化学習、システムの安全な反復試験まで、幅広く使われています。

ただ、高機能なシミュレータは、高精度な解法・大規模並列・レンダリング・ロボットモデルまで備えるぶん、実行環境や依存関係も相応に大きくなります。当社が欲しかったのは、その手前 ―「思いついた物理を、いま手元ですぐ試す」ための小さな道具でした。そこで、物理試行に必要な部分だけを小さく保った物理エンジン「physica」を自作しました。pip だけで動き、CPU でも実用、中身は読める ― AI エージェント時代の、手軽に動く物理エンジンです。

デモ映像

※ physica の全体像(前半)と、多彩な材質・現象のデモ集(後半)をまとめた紹介映像です。

位置づけ:高機能シミュレータとは、狙いが違う

物理シミュレータの代表格 ― Isaac Sim / MuJoCo / Gazebo / PhysX / Genesis などは、いずれも非常に高機能です。しかも近年は、その多くがオープンに開発されています。MuJoCo は Apache-2.0 のオープンソースで pip install mujoco が使え、PhysX もソースが公開されています。Genesis は「Python で読みやすく拡張しやすい統合マルチフィジックス環境」を掲げ、剛体・FEM・MPM・PBD・SPH などを1つのシーンで扱います。NVIDIA Warp は Python で書いたカーネルを CPU/GPU 向けに JIT コンパイルし、機械学習との統合も前提にしています。「閉じていて中身に触れない」わけではありません。

一方で、高精度な解法・大規模並列・レンダリング・ロボットモデル・アセット群まで備えるぶん、

  • 実行環境(機能によっては CUDA GPU が前提。たとえば PhysX の PBD 粒子系)
  • 依存関係とセットアップの規模

も、相応に大きくなります。10万〜100万粒子の大規模計算や sim-to-real には向く一方、「手元でちょっと物理を試す」には道具として大きい場面があります。

physica は、そこを取りにいきません。物理試行に必要な部分だけを小さく保つ ― 目的の違う道具として作りました。

FSR の選択:あえて“軽量な物理シミュレータ”を自作

理由は明快 ― 当社の用途では「軽量かつ手軽に動かす」ことが必要だからです。physica は、そこに全振りしています。

physicaは軽さに全振り。pip install/numpy・scipyだけ/CPUでも実用/GPU動作可能/約3,000行/純Python
physica の設計思想。pip だけ(numpy / scipy のみ・CUDA も SDK も不要)で入り、CPU でも実用(8,000粒子を約35ms/step = およそ25FPS)、大規模は GPU で加速。中身は純Python 約3,000行で、追って改造できます。

高機能・大規模向けのシミュレータとは、はっきり住み分けます。physica が狙うのは、手元で軽快に回る、数千〜数万粒子の“試行の速さ”です。

技術の核:統一粒子表現(XPBD + PBF)

physica の設計の中心は、剛体・液体・気体・ゴムを《1つの粒子系》で連成して扱えることです。

統一粒子表現。流体・剛体・気体・ゴムを単一の粒子ソルバ(XPBD/PBF)で連成
統一粒子表現(XPBD + PBF)。材質ごとに別々のソルバを持たず、単一の粒子・単一の近傍探索で、異なる材質どうしの相互作用まで扱えます。

多くのエンジンは材質ごとに専用のソルバを持ち、それらを結合して解きます(近年は Genesis のように、複数のソルバを1つのシーンへ統合する環境も登場しています)。physica は位置ベース動力学(XPBD / PBF)を土台に、すべてを1種類の粒子として統一的に解くため、水の中で剛体が浮き、ゴムが変形し…といった異材質の連成が自然に書けるのが利点です。

何ができる? ― 多彩な材質・現象を同じ engine で

同じエンジンで、流体・剛体・気体・ゴム、さらに水の渦・風・障害物・ワイヤーハーネス・布ドレープまで扱えます。表示は粒子 → ポリゴン → 粒子+ワイヤフレームの3モードを切り替えでき、内部の動きも見た目も両立します。

流体・剛体・ワイヤーハーネス・布ドレープのシミュレーション例
同一エンジンでの材質・現象の例(左上から時計回りに)流体(密度場をマーチングキューブで水面化)/剛体(重心+回転を分解して元形状を描画)/布ドレープ/ワイヤーハーネス(両端固定ゴムケーブルの懸垂)。
剛体・流体・ゴムが混在するシーンのポリゴン表示
剛体(箱球)+流体(水面)+ゴム(変形メッシュ)が1つのシーンで連成する様子。ポリゴン化して“見た目”も担保します。

狙い:AI エージェントの“物理直感”を担う

physica を作る一番の理由は、AI エージェントにあります。エージェントがシーンを組む → physica で物理応答を素早く試す → 結果を見て次の一手を決める、というループの裏側で、物理の当たり前(物理直感)を肩代わりさせます。

AIエージェント→シーンを生成→physicaで物理応答を計算→結果を観測→次の一手、のループ図
AI エージェントの裏で、物理応答を素早く試すループ。エージェントの「物理対応」の一部を physica が肩代わりします。

もちろん、強化学習(RL)フレームワークとしても使えます。step 駆動の API で観測を取得でき、GPU なしでも回る=手元や CI で大量に試行できます。実験条件は JSON で保存・再現・共有できるので、「軽いからこそ、たくさん試せる」わけです。

パフォーマンス:当社環境で NumPy 実装比 最大 約10倍

「軽い」といっても、速度は妥協していません。同じシーン・同じ実装のまま、バックエンドだけを差し替えた当社環境の測定では、CPU の numba、GPU の CUDA がいずれも素の numpy 実装に対して大きく効きます。

ダムブレイク流体のstepあたり時間。numpy/numba(CPU)/CUDA(GPU)を8k〜33k粒子で比較
流体ダムブレイクの1stepあたり時間(小さいほど速い・当社環境での測定)。素の numpy 実装に対し、8千粒子で numba(CPU) が約10倍3.3万粒子で CUDA(GPU) が約10倍

規模に応じて最適なバックエンドを使い分けられます。小規模は CPU が有利で、1.2万粒子あたりから GPU が逆転します。

CPU vs GPU。小規模はCPUが速く、約1.2万粒子でGPUが逆転する交差グラフ
CPU と GPU の使い分け。小規模=CPU、大規模=GPU が効きます(環境変数ひとつで GPU に切り替え)。

数値の位置づけ ― ここでの倍率は、physica 内部のバックエンド比較(当社環境・同一シーン)です。MuJoCo / PositionBasedDynamics(PyPBD)/ NVIDIA Warp(CPU)/ Genesis(CPU)などと同一条件でベンチマークしたものではないため、他フレームワークとの速度の優劣は主張していません。physica が取りにいくのは絶対性能の順位ではなく、依存の少なさと、手元ですぐ回せる試行の速さです。

比較:高機能・大規模向けシミュレータ vs physica

観点 高機能・大規模向けシミュレータ
(Isaac Sim / MuJoCo / Gazebo / PhysX / Genesis)
physica(本作)
導入 CUDA / SDK / 追加依存が要る場面が多い pip install .(numpy / scipy のみ)
動作環境 CPU 対応も広い(GPU 前提の機能もあり) GPU 動作可能・CPU でも実用
規模 10万〜100万粒子 数千〜数万粒子(手元で軽快)
材質 材質ごとの専用ソルバを結合して解く 単一の粒子ソルバで剛体/液体/気体/ゴムを連成
中身 多くは OSS(コアは C/C++/CUDA 中心) 純Python 約3,000行(読める/改造可)
主用途 大規模 RL・産業・sim-to-real 学習・プロト・エージェントの物理試行

※ 表は“傾向”の比較です。MuJoCo のように pip だけで導入できるものもあり、ソースが公開されているものも多くあります。

どちらが優れているという話ではなく、目的の違いです。高精度・大規模・レンダリングまで必要なら前者、依存を増やさず手元で素早く物理を試したいなら physica ― という住み分けを想定しています。

まとめ

  • 軽量・手軽 ― pip だけ・CPU でも実用・GPU でも加速。
  • 統一粒子 ― 剛体/液体/気体/ゴムを《1つの系》で連成(XPBD + PBF)。
  • 可読・純Python ― 約3,000行で中身を追える・改造できる。
  • AI エージェント連携 ― 物理直感の肩代わり+軽量な RL 環境。

適所は、小規模を CPU で回す用途・教育やプロトタイピング・AI エージェントの物理試行です。「軽くて、読めて、AI と組める物理エンジン」を目指した、当社の物理シミュレータ ― それが physica です。デモやご相談を承っています。

この技術や導入について、お気軽にご相談ください。

お問い合わせ・ご相談はこちら
一覧に戻る

CONTACT US

RECRUIT