チュートリアル / Road to Stingray
第7回:アニメーション&リギングについて 前編

2016.04.01

  • Maya
  • Stingray
  • アニメーション
  • キャラクター・リグ
  • ゲーム
  • チュートリアル
  • 中級者

キャラクターが動くまで

こんにちは。このプロジェクトでアニメーション周りのテクニカル全般を担当しているフリーランスの上原です。 前回の記事では、コンセプトアートからキャラクターモデルが作られていく過程が解説されていました。可愛らしい姿は今にも動き出しそうでしたね(勝手に動き出してくれると私の作業が減るので大変ありがたいのですが…)。 さて、今回の前編では「ぱぴこ」をStingray上で元気良く走らせるまでに、どのような作業工程があったのかご紹介しましょう。

ROAD TO STINGRAY

以下の図は、「ぱぴこ」が動かせるようになるまでの作業工程になります。

ROAD TO STINGRAY

今回の記事では「スキニング」と「リギング」についてとりあげていきます。

スキニング

キャラクターを動かすためには、一番初めに「骨」(ジョイント)を入れる必要があります。この「骨」というのは重要で、正しい位置に配置しないとポーズをとらせたときに違和感が生じてしまいます。また「骨」は大きく二つに分けられます。一つは、背骨や首、手足といった構造上必要不可欠な骨です。もう一つは、髪の毛や衣服、取り外しのできる小物などに設定する補助的な骨です。「ぱぴこ」の場合ですと、髪の毛は当然ですがヘッドフォンにも補助的な骨が設定されています。

ROAD TO STINGRAY

※白色でハイライトされているのが補助的な骨です

「骨を入れる作業」とほぼ同時に「ウエイトの調整」という作業を行っていました。
「ウエイトの調整」というのは、「骨」の移動や回転、スケールに伴ってキャラクターモデルがどのように変形するかを調整する作業です。これはポリゴンの各頂点ごとに調整する必要があることと、実際にポーズをとらせながら最適解を導かなくてはならないので作業の手間と時間がかかります。

ROAD TO STINGRAY

※ウエイトの調整を行っている様子

今回のプロジェクトでは無駄を省くために、様々な作業を平行して行っています。モデリング作業とセットアップ作業も例外ではありません。従って、ウエイト調整作業を行ったあとにモデルの変更があると厄介です。Mayaには標準機能としてウエイト値の転送や補助的な機能がありますが、あくまでも機械的に処理しているだけなので必ずしも100%理想どおりに動作するわけではありません。そうなるとどうしても作業の無駄が発生してしまいますので、モデリングが完了するまでは絶対に手作業で「ウエイト調整」を行わないと自分の中で決めていました。

「手作業で行わない」ということはつまり「自動に任せる」ということです。

「ウエイト調整」を行う前に「骨」と「キャラクターモデル(ポリゴンメッシュ)」を関連づけるのですが、これをMayaではバインドと呼びます。このバインドには三つのモードとオプションがあり、それらを適切に使い分けることで「自動でも良い結果」を得られます。

本来手動で行わないといけなかった作業がバインドした段階で済んでいるなら、それはすばらしいことです。 できるだけ面倒な作業をせずに良い結果を出せればと常日ごろ思っています。

ROAD TO STINGRAY

上図のように「多面体ボクセル」でとても良い結果が得られましたが、部位によっては「ヒートマップ」でも良い部分があったので、それぞれの良い結果を利用しました。

また、「骨」(ジョイント)にはラベルという概念があるのですが、これを設定しておくことをお勧めします。後々手動で「ウエイトの調整」を行うことになりますが、そのとき、左右片方だけ手作業で調整を行い、反対側へミラーコピーするのが一般的です。このミラーコピーを行う機能がMayaには標準機能として存在しますが、ラベルを設定しているかどうかで結果が違います。ラベリングしておくと、Mayaは反対側の「骨」を簡単に見つけられるからです。ラベリングしていないと、骨の座標を基準として適用すべき対称となる骨を探してしまいますので、Mayaが間違った骨を選んでしまう可能性が高まります(詳しくは「スキンウエイトのミラー」に関するオプションとヘルプをご確認ください)。

ROAD TO STINGRAY

ゲーム上で確認

バインド後、「リギング」の作業に入る前にモデルデータをゲームにインポートして確認しています。このときアニメーションデータも簡単なものを準備します。単純に「骨」を移動や回転、またはスケールさせてキーを打った程度のもので問題ありません。このタイミングで正しくアニメーションが流れることを確認しておかないと、あとでトラブルが起きてしまいます。トラブルでよくある原因はスケールです。

MayaとStingrayのスケールに関しては注意点があります。

ROAD TO STINGRAY

三つ目の画像でMaya上とStingray上のキャラクターの見た目が異なってしまっています。このように100%互換性があるわけではないので、何が出来て何が出来ないのかを事前にチェックしておくことが大事です。今回ご紹介したスケールの問題はMayaとStingrayの組み合わせに限らず他のゲームエンジンでも起こりうる現象なので注意が必要です。

リギング

リギングとは「スキニング」で設定した「骨」を簡単に動かすための仕組みを作ることです。今回は、 Miquel Campos 氏が公開と管理を行っている MGear というリギングフレームワークを利用することにしました。

http://www.miquel-campos.com/post/118159659838/mgear11

まず「ぱぴこ」の骨の位置に合わせて「ガイド」を作成します。これは一度作ってしまえばよいもので、他のキャラクターなどにも流用することが出来ます。

ROAD TO STINGRAY

続いて「リグの生成」を行います。こちらはボタン一発で生成されます。

ROAD TO STINGRAY

このままではリグを動かしても「ぱぴこ」はまだ動きません。「ぱぴこの骨」と「リグ」を接続する必要があります。今回この接続は単純なコンストレイントを用いています。パフォーマンスを考えるとあまり良い方法ではありませんが今回に限ればそれほど影響はありませんでした。

ROAD TO STINGRAY

以上で、前編を締めくくりたいと思います。後編では、このぱぴこに、アニメーションをインポートしAnimationControllerを使って条件分岐によってアニメーションを変化させる方法や、PhysXで装飾品に物理シミュレーションを施す方法などをご紹介していきたいと思います。

ソースコードをGITHUBで公開中!

先日のイベントで公開しましたが、実はこのプロジェクトのソースコードやプロジェクトのデータは既にGitHubにて公開されています。ダウンロードして頂ければ、どなたでも試してみることが出来ます。

まず、下記のAutodesk社のURLから、Stingrayの30日体験版をダウンロードし、インストールします。

http://www.autodesk.com/products/stingray/free-trial

ダウンロードからテストプレイまでの流れ

GitHub URL
https://github.com/guncys/MeowedfulDays

まず、上記のURLからDownload ZIPを選択しダウンロードした後で、好きなフォルダに解凍します。 次に、Add Existingから既存のプロジェクトを追加出来ますので、先程ダウンロードしたフォルダの中にある、rtsを選択します

プロジェクトがロードされたら、 “rts” を選び、Openします。 初回ロード時のみ、数分のコンパイル処理が走ります。次に、下図の様にlevelsフォルダからtesmap1.levelを選択しダブルクリックします。

すると、上部ペインのLevel Viewportにマップが読み込まれます。 そこで、F8キーか、TestLevelボタンを押すとテスト版がビルドされます。

開発環境

PC G-Tune「NEXTGEAR-NOTE i5700 シリーズ」
プロセッサ Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz 2.60GHz
RAM 8.0GB
OS Windows8.1 x64
グラフィックスカード NVIDIA GeForce GTX 970M
DCCソフト Maya 2016, 3ds Max 2016
Stingray 1.2.526.0
Maya Learning Channel