今週の進み具合 #10 - 2D 階層的剛体アニメーション

進み具合 (2014年4月21日 - 4月29日)

ここ1週間ずっとスケルタルアニメーションを実装していました。 スケルタルアニメーションの再生ができたので、階層的剛体アニメーションをやってみました。

(動画) 左が階層的剛体アニメーション, 右がボーンのみのスケルタルアニメーション

剛体アニメーションを表示できたので次はスキンアニメーションとスキンドメッシュを実装しようと思います。

顔のアニメーションはどうする?

間接やボーンデータを用いたアニメーションであるスケルタルアニメーションを使ったものとして、階層的剛体アニメーションスキンアニメーションがあることを前回の日記で少し紹介しました。 ゲームにおけるアニメーションを考える上で重要なものとして フェイシャルアニメーション (facial animation) があります。フェイシャルアニメーションはキャラクターの顔に関するアニメーションです。キャラクターの表情を表現したものや、音声データと唇の動きが同期して喋っているかのように見えるアニメーション(リップシンク)あるいは目のまばたきといった顔に関するアニメーションを指します。

ボーン(またはジョイント)を使ったスケルタルアニメーションでは、細かい表情の動きをコントロールすることが難しいので、他のアニメーション手法が使われることが多いです。その1つが、UV アニメーションです。テクスチャアトラスと UV 座標を用いて、古き良きスプライトアニメーションを行います。図1 は目のまばたきを UV アニメーションで表現する際に使用するテクスチャの例です。

目のまばたきアニメーションで用いるテクスチャ
(図 1) 目のまばたきアニメーションで用いるテクスチャ

少し前の 3D ゲームで、目のまばたきアニメーションなどに UV アニメーションを利用しているのを見かけました。また今でもノンフォトリアリスティック(Non-Photorealistic, 非写実的)なアートを用いる 3D ゲームでは UV アニメーションを使ってキャラクターの表情を表現しています。セルアニメ調のキャラクターの表情には向いています。2D ゲームのキャラクターとの相性もいいでしょう。
最近のインタラクティブゲーム、特に 3D の写実的な表現を行うゲームでは、頂点単位のアニメーションを用いてキャラクターの表情を表現することが多いです。文字通り、頂点単位で動かすことによって、表情を自由自在に表現します。ハードウェアの制約があるため、リアルタイムのビデオゲームではモーフターゲットアニメーション(単にモーフィングや頂点ブレンディングとも言います)という手法がよく利用されます。顔の表情ごとに頂点群をあらかじめいくつか作成しておき、表情と表情の頂点間を補間することで滑らかな頂点単位のアニメーションを実現します。

フェイシャルアニメーションにはいくつか手法がありますが、まずは UV アニメーションを使って目のまばたきアニメーションを実装してみます。その後で 2D の頂点ブレンディングについても考えてみます。

今週の予定

  • 2D スキンアニメーション(スキニング)
  • 2D スキンドメッシュ
  • UV アニメーション

今週はスキニングに注力します。 (はたして来週は "今週の進み具合 #11" があるのでしょうか…)

参考文献

  • 『ゲームエンジンアーキテクチャ』 ジェイソン・グレゴリー著、大貫宏美、田中幸訳、今給黎隆、桐山忍、鴨島潤、湊和久監修、ソフトバンククリエイティブ。第11章「アニメーションシステム」参照。

Leave a Reply