お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2009/09/02 01:52

イベント

[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ

ソニー・コンピュータエンタテインメント ソフトウェアプラットフォーム開発部 櫻井亮介氏
画像集#001のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
 物理シミュレーション(以降,単に物理)は,Havok,あるいはNVIDIA PhysXに代表される物理エンジンが整備されたことにより,プログラマやゲームデザイナの道具としてゲームに取り入れることができるようになった。ゲームの味付けとして,あるいはゲーム性そのものに物理を組込むタイトルは珍しくなくなっているが,それでも物理を難しい,挙動の調整が面倒といった理由から敬遠するゲームクリエイターは少なくないようだ。
 CEDEC 2009の初日に行われた「ゲーム物理の扱い方」と題されたセッションは,そんな物理を敬遠しているゲームデザイナやプログラマを対象に,ゲームでうまく物理を利用するためのポイントを紹介するという内容。4Gamerの読者としては逆に,物理を採用した調整不足のゲームに起こりうる奇妙な動作の理由を知る手がかりにもなる内容を含んでいたので,セッションの概要を紹介してみたい。


剛体の表現では慣性テンソルの調整が鍵を握る


画像集#002のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
ゲームにおける物理は,もっぱらオブジェクト同士の相互作用を表現するのに利用されている。オブジェクト同士が衝突であるとか,転がる,砕ける,落ちる……といった挙動を物理で計算するわけだ
画像集#003のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
デザイナの手によるキーフレームアニメーションを使った動きには有限のパターンしかないが,物理を利用すれば無限のパターンが生み出される。パターンが多様になるうえ,デザイナーの負担を減らせる
 セッションを担当したのは,ソニー・コンピュータエンタテインメントに所属する松生裕史氏,高橋律視氏,櫻井亮介氏の3氏。櫻井氏がまずゲーム物理の概要を紹介したあと,松生氏が剛体の表現とその組み合わせのポイントを解説,そして最後に高橋氏が流体の表現を紹介するという順。中でももっとも時間が割かれたのが,櫻井氏のセッションだったので,そのセッションを中心にまとめてみよう。

 ゲームにおける物理について改めて説明するまでもないとは思うが,簡単にまとめてしまえばゲーム中に登場するオブジェクト(物体)の動きを物理計算を使って表現することで,より現実に近い動きを表現しようというモノだ。使用される計算はニュートン物理に代表される古典物理のレベルで「物理といってもたいして難しいものではない」(櫻井氏)。

 物理を使う欠点には,計算負荷が高いということが挙げられる。ごく簡単な計算を行うといってもオブジェクトの数が増えれば計算量が増えるうえ,ゲームではフレームの描画に合わせて計算を行う必要があるので計算時間が限られていることがネックになる。
 一方,利点は「物理法則に従って得られる挙動のパターンは無限」(櫻井氏)という点だ。

 物理を利用する利点は大きいわけだが,冒頭で述べたように調整が難しいといった理由で採用を避けるゲームデザイナは少なくない。実際,「設定を変えただけであっという間に挙動が不安定になる」(松生氏)ということがよく起こる。

 ゲーム物理では,剛体(堅いオブジェクト)に形状,位置,速度,質量といったパラメータを設定して計算させるが,松生氏によるとパラメータの中で挙動を安定させるキーになるのが慣性テンソルだという。

画像集#004のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
物理パラメータの設定が難しいのがゲーム物理の難点。設定がうまくないとラグドール(ここで言うラグドールは物理で動かされる人体などのこと)の関節が伸びてしまうなど不自然な動きを見せることも少なくないという
画像集#005のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
剛体が持つパラメータのうち,共同を安定させるキーになるのが慣性テンソルだという。「慣性テンソルを理解しないまま物理シミュレーションを適用するのは危険がある」(松生氏)

 慣性テンソルというのは,回転のしやすさ(回転モーメント)を,より一般化した数学表現のことだが,ここでは回転のしやすさを表すパラメータくらいに考えておけば十分だ。慣性テンソルが大きければ回転しづらく,また回転しだすと止めづらい。逆に慣性テンソルが小さければ簡単に回り出すが,回転は簡単に止まる。

 慣性テンソルは物体の形状や重量配分から決めることができるが,物理エンジンでは「慣性テンソルが小さくなりすぎると物体の動きが安定しない」(松生氏)のだという。そのため,物体の形状から想定される慣性テンソルをそのまま使ってしまうとオブジェクトの動きが安定しない結果になりやすいそうだ。

画像集#006のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
慣性テンソルは物体を回転する軸から眺めるとおおよその大きさが分かる。回転軸から見た大きさが小さければ慣性テンソルは小さく,大きければ慣性テンソルは大きくなるわけだ
画像集#007のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
例えば,棒のような剛体なら断面方向の慣性テンソルだけが極端に小さくなってしまうため不安定になりやすいという。不安定を抑えるには慣性テンソルを,実際より太い棒として設定するとうまくいく

画像集#008のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
大ざっぱにコンストレイントは図中の簡易式で計算されるが,慣性テンソルの違いが誤差を大きくしてしまう結果,関節の不自然な伸びといった現象を起こす
画像集#009のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
錘の質量は100kg,鎖は四つのオブジェクトに分かれた1kgの質量を持つ鎖でつり下げられている。この質量配分を元にオブジェクトの慣性テンソルを設定すると錘を振ったときに鎖のジョイントが離れてしまう現象が起こる
画像集#010のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
実際にシミュレーションを実行している例。左が慣性テンソルを質量配分通りに設定した例,中央が鎖と錘を同じ質量にした例,右が鎖の慣性テンソルを大きくした例で,左の例がもっとも自然に動くように見える
 ラグドールの関節の不自然な伸びといった現象も慣性テンソルを調整することで抑えることができるという。
 そもそも,なぜラグドールの関節が不自然に伸びたりするのだろうか。関節は物体と物体同士の相互作用……ぶつけるであるとか,くっつけるというような計算(制約:コンストレイントという)を使って動きを表現している。物体同士の相互作用というのは,簡単に言えば二つの物体の速度と位置,そして二つの物体の質量比を使って計算できるが,速度や位置は数学的また時間的な制約から近似的にしか求められない。慣性テンソルは質量のほうにかかってくるので,慣性テンソルの違いが近似の誤差を拡大してしまい,関節などが自然な形には表現できない結果を引き起こすという。

 では,実際にどういうことが起きるのだろうか。簡単な例として4つの関節を持つ鎖でつり下げられた錘の例が紹介された。

 右中央図のような鎖でつり下げられた錘に対して慣性テンソルを質量配分どおりに設定すると,錘を振ったときにジョイントが離れてしまう。それを解決するには,質量配分を変える(鎖に対して錘を軽くする)方法もあるが,鎖の部分の慣性テンソルを錘に対して大きくするという調整で,より自然な動きが再現できるという。

 これはラグドールの場合も同様で,実際の人体の質量配分どおりにすると関節が伸びてしまう現象が起きる。下の例を見てほしい。

画像集#011のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
実際の人体の質量に合わせてオブジェクトの質量の配分を決める。そのラグドールの手を固定して動かすと,手の関節が伸びてしまうという
画像集#012のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
実際にシミュレーションした例。少々分かりづらいが手を固定して左右にラグドールを振ると手の関節が離れていることが分かると思う
画像集#013のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
固定されている手を優先して質量を配分し直す
画像集#014のサムネイル/[CEDEC 2009]決め手はテンソル,物理シミュレーション導入の勘どころ
04すると左右に振っても関節が伸びない


ゲーム物理と実際の物理は違う〜意味を理解したうえでパラメータの調節が必要


 以上の関節の動きに加えて,扉の動きなどの説明があったが,ザックリまとめてしまえば「パラメータの意味を理解したうえで,パラメータをうまく調節して自然な動きを再現しよう」ということになる。
 慣性テンソルのように分かりづらいパラメータを,意味を理解せずに調整してもいい結果は得られない。また,理解して現実通りにパラメータを設定してもやはりうまくいかない。ラグドールの重量配分など,まるっきり現実とかけ離れているが,実際に動かすと「それっぽく」動いてくれることが分かる。ゲームは本当の意味での物理シミュレーションではないのだから「それっぽく」動いてくれるほうが重要なのだ。
 物理エンジンの普及に応じて,今後も物理を取り込んだゲームが増えるだろう。パラメータの調整がうまくないゲームももちろん増えるはずだ。ゲーム中のオブジェクトの不自然な挙動を見たら,今回の記事を少し思い出してくれると「あ,なるほどな」と納得できるかもしれない。
  • 関連タイトル:

    Havok

  • 関連タイトル:

    PhysX

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月27日〜12月28日