デザインテクノロジーの最前線 - 桐山孝司

m.c.t.ホーム > エクスペリエンスマガジン > デザインテクノロジーの最前線 - 桐山孝司 > 物理エンジンと機械的な動きのアニメーション

2008.08.11物理エンジンと機械的な動きのアニメーション

車がバウンドしながら走り抜けたり、積み上げた荷物に突っ込んで中身が飛び散ったりというように、 ゲームの中で物がリアルに動く様子を作り出す役割をしているのは物理シミュレーションエンジン(物理エンジン)である。物理エンジンとは、 物体が動いたり跳ね返ったりする様子を物理法則に忠実に計算するプログラムである。 物理法則自体はニュートンの運動方程式である力(F)=質量(m)×加速度(a)という単純な方程式であるが、 それを適用するには物体の移動や衝突を追っていく必要がある。つまり物理エンジンは、物体の動きを追跡しながら力のかかり方を逐一計算して、 次の瞬間の動きを求める作業をしているのである。

物理エンジンは高速かつ高精度で動く必要があるため、開発にはノウハウが必要で、 実際にコンシューマー向けゲームに組み込まれる物理エンジンを作っているのはごく一握りの会社だけである。中でも有名なHavok (ハボック)社の物理エンジンは、PlayStation、Wii、Xbox360などのゲームに組み込まれて使われている。 もともとダブリンの大学から出たベンチャーであるHavokの成長は、物理エンジンに特化して成功した点で技術経営的にも注目されるが、 やはりその成功には彼らが数学的な裏付けのある自前の技術を持っていたことが大きい。 物理エンジンは数学とそれを実現する情報処理の接点にある技術なのである。

その物理エンジンだが、最近はゲーム開発者でなくても気軽に利用できるようになってきた。 上述のHavokよりも限定的だがずっと軽量な物理エンジンがあり、そのひとつがErin Cattoの開発したBox2Dである。 この物理エンジンはオープンソースで公開されているので、商業用途を含めて誰でも利用できる。もともとはC++で書かれていたのだが、 コアだけの部分を残して全体をFlashの言語であるActionScriptで書き直したバージョンもあって、 Flashアニメーションの背後で物理エンジンが動かせるようになっている。

物理エンジンの用途の大部分はゲームだが、本来はそれに限らずアニメーション一般としても物理エンジンを組み込むメリットがある。 そのひとつは寸法をいろいろ変えて動きを見るような画面上の試作作業ができることである。 たとえばリンク機構を作って目的の軌跡で動かすには、各リンクの長さを調整する必要がある。 どれかひとつのリンクの長さが変わると機構全体の動きが変わるので、 リンクの長さの調整は物理エンジンでシミュレーションができると都合がよい。

また感覚的なものだが、もうひとつ物理エンジンを使う理由は、物理的・ 機械的な動きの中につい見入ってしまう性質があるという点である。 物理エンジンがシミュレーションしているものは物理法則なのでそこに何も秘密はないのだが、 確実に法則通りのことが繰り返される安心感があって、シミュレーションの進行を見ていて飽きないのである。 そのような機械的な動きを手作業でなく自動的に生成して組み込むと、Flashなどで作るアニメーションをより興味深いものにできる。

機械的な動きのアニメーションを作るには、 やはりリンク機構やカム機構など実際に機械に使われているメカニズムを知っておくことが参考になる。 この分野は数式が出てくると途端に敬遠されがちなのだが、多数のメカニズムを集めて図と文だけで説明した「メカニズムの事典」(理工学社) という本があって、機械的な動きの作り出し方を知るのに有用である。実はこの本はもともと「機械の素」 という明治45年初版の超ロングセラーを新編改題したものなのだが、 コンピュータ制御がなかった時代に機械だけで工夫していろいろな動きを作り出しているため、 メカニズムの図を見て動きを推測することができて非常に面白い。アニメーションに物理エンジンを組み込んで使うことがあれば、 機械的な動きの面白さを出す上でぜひ見ておきたい本である。

 

Parallel_Link_Scale

 

 

 

 

 

 

 

 

 

メカニズムの事典(理工学社)で説明されている「小形皿はかり(parallel link scale)」 を物理エンジンを使ってアニメーションにした画面。「品物を皿にのせて、針の指示する目盛りによってその重量を知ることができる。 皿はつねに水平を保ちながら上下動し、傾くことはない。」(同書より要約)と説明されている。物理エンジンが動いていることによって、 おもりを増やしたり減らしたりしたときの挙動を見ることができる。

実際のアニメーションはここから開始してください。