🚀

AIキャラクターとゴリゴリの物理シミュレーションをする

に公開

はじめに

生成AIなんでも展示会に一般展示で参加しました。生成AIなんでも展示会とは、「日本最大規模のAI系個人開発イベント」です。参加者の皆さんは自由に生成AIを用いた好きなものを表現・紹介していました。

私は、AIキャラクターとゴリゴリの物理シミュレーションをするというテーマで、自身が開発しているAIキャラクターいかづちマルと一緒に、従来、専門家しかできないような本格的な物理シミュレーションをしてみるという内容で展示をしました。この記事では、私が展示した内容の詳細を紹介します。

ブースの様子は以下のような形で展示していました。ニッチすぎてあまり人が来ないかなと思っていましたが、キャラクター、LLMシステム、物理シミュレーションそれぞれに興味を持っていただき、最初から最後までほとんどずっと説明していました。いろいろフィードバックをもらえ、良い経験になりました。

https://x.com/ToPoToPo_3/status/1964169029490184251

この記事を読んで欲しい人

  • LLMを使って何かアプリを作ってみたい人
  • ゲームエンジンなどで使われるような物理シミュレーションに興味ある人
  • 自身で開発した専門性の高いニッチな技術を誰でも使えるようにしたい人

展示したもの

以下のような、キャラクター付きのチャットボット形式のインターフェースを持つ物理シミュレーションツールを展示しました。webアプリになっています。

従来のシミュレーションソフトウェアはたくさんのボタンがあり、それを操作するものが一般的ですが、今回は、インターフェースをチャットボット形式にし、他の人に指示を出すように言葉を使ってソフトウェアを操作できるようにしました。これにより、ソフトウェアの使い方を気にすることなく、直感的に操作できるようになることを期待しています。

システムの概要

内部的には、以下の構成となっています。基本的なマルチエージェントシステムとなっており、エージェント選択とツール実行、動画を画像に変換し、シミュレーションの結果に基づく考察が行われます。必要があれば、AIキャラクターのいかづちマルが解析結果の考察を読み上げてくれます。質問の内容によっては、物理シミュレーションは行わず、キャラクターエージェントとしていかづちマルが直接話をしてくれます。

展示した物理シミュレーションツールのスクリーンショット

マルチエージェントシステムにおいてLLMを扱う紫の部分はPython、物理シミュレーションプログラムはプログラミング言語Juliaを使っています。

ポイント

展示したシステムのポイントは、LLMには、シミュレーションプログラムをコントロールするためのinputデータ作成のみを行わせる点です。

シミュレーション部分は、理論が確立しているため、AI生成ではなく、論文をベースに研究者や専門のプログラマが責任を持って正しいプログラムを作成しておきます。今回は、自分自身で物理シミュレーションプログラムを作成しました。

LLMには、システムプロンプトにシミュレーションプログラムを動かすために必要なパラメータやinputデータのフォーマットを指示しておき、ユーザーからの入力された文章をシミュレーションプログラムのinputデータに変換させるところのみを行わせます。

ゼロからシミュレーションプログラムを作らせると賢い大規模なLLMが必要ですが、inputデータのみであれば、パラメータ数の少ないローカルLLMで動きます。展示会では、ローカルLLMのgemma-3の4Bと12Bのみを使い、メモリ24GBのMacbook Airのみで全てのシステムを動かしていました。

物理シミュレーション手法

MLS-MPM法という粒子法と格子法のハイブリッド解法を採用しました。粒子の集まりで物体の形状を表現し、流体、ゴムのような弾性体、エネルギー吸収できる粘弾塑性体、雪や砂などを混在させたシミュレーションができます。

計算例

入力した文章とシミュレーションの結果です。記事を書くにあたり、新たに3問解いてみました。

4つの水の球を中位の高さから落下させる物理シミュレーションを行なってください。
半径は小さめの方が良いです。

確かに4つの球体が落下しています。左右の位置は指定していないので、少し右に寄っています。

以下の条件で物理シミュレーションしてください。
・水を底に溜めておく
・回転する長い直方体の剛体を中央に配置し、水をかき混ぜる

ダイナミックに撹拌される様子が得られました。

以下の条件で物理シミュレーションしてください。
・中位の高さから球体のゴムの塊を1つを落下させる
・ゴムの塊の真下に小さくある程度薄い衝撃吸収剤の板を敷く
・水を底にある程度薄く溜めておく

衝撃吸収剤の配置がゴムの真下ではないことが気になりますが、一応、言ったことはやっています。厚みについては「ある程度」と曖昧な指示を出しているのでLLMが勝手に決めています。

まとめ

  • 生成AIなんでも展示会で、LLMを使い、誰でも物理シミュレーションができるようになることを目的としたアプリを展示しました。
  • シミュレーションの3D化や入力からinputデータを作成する際の精度などいくつか課題が見えたので、これらを改良していきます。
  • ご質問やコメントいただければ、可能な範囲で回答します。

参考

Discussion