進み具合 (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