リアルタイム入門編(後編)
リアルタイム入門編の後半では実際にモデルをゲームエンジンで動す為に必要な基礎知識をまとめていきます。
ゲームエンジン向けのキャラクターセットアップ、アニメーション!
代表的な個人使用可能なゲームエンジンのUnity、UE4、CryEngineに関してはキャラクターデータのImport(読み込み)にAutodesk社のFBX形式をサポートしています。
業界標準のFBX形式について詳しく考察してみましょう。
FBX形式について詳しく
ゲームエンジンで読み込めるFBXに内包できるデータは
・ポリゴンメッシュ
・スムージンググループ
・UVセット、UV
・マテリアルの割り当て情報
・モーフターゲット
・ボーン
・ボーンとメッシュのバインド情報
・ボーンベースのアニメーション
・アニメーションのシーケンス
ざっとこんな感じになります。
つまり、ゲームモデルを作成するということは、これらの項目を全て埋めてやる形でモデルを作成してやれば良いわけです。
以下、それぞれの項目別に解説していきます。
3Dモデリングの項目
・ポリゴンメッシュ
基本となるポリゴンモデルの形状情報です。
・スムージンググループ
ポリゴンのエッジに折り目を付けるか、滑らかに処理するかの違いです。
3dsMaxの場合はフェースに対してスムーズに表示するグループを登録しその境目が折り目になりますが、Mayaの場合はハードエッジ・ソフトエッジと呼称しエッジに対して折り目の設定を行います。
Export(出力)先のゲームエンジンで扱いが異なるので注意が必要です。
・UV座標
テクスチャを割り当てる時のマッピング情報です。
UVはZBrushの自動展開を使うのが楽ですが、自分の思い通りに調整したい場合はMayaか3DCoatが便利です。
・マテリアルの割り当て情報
FBXの中に複数のメッシュや、UVテクスチャの異なるグループが存在している場合、異なるマテリアルを割り当てておくことでゲームエンジン上で異なるマテリアルを割り当てることが可能です。
面倒ですが、設定は必要です。
モーフターゲット(ブレンドシェイプ)の項目
・モーフターゲット
ベースモデルに対しての頂点の移動後の位置座標を登録でき、0~1の値を入力すると数値に応じて変形する。
同じベースに対して複数の頂点位置を登録することができ、数値を弄ることでそれぞれの頂点をブレンドすることができる。
「あ。い。う。え。お。」の口や、「悲しい目、怒った目」等を登録しておけば、「あ+お+怒った目」など様々な組み合わせで表情を作ることができます。
Mayaや3dsmaxでも作成できますが、ZBrushのレイヤーとMayaBlendShapeプラグインを用いて作成するのが直感的でオススメです。
ボーンアニメーションの項目
・ボーン
骨です。Mayaではスケルトンと呼称します。骨に対して関節の部分を指してジョイントと呼ぶこともありますが、どれも同様に考えて良いです。
・ボーンとメッシュのバインド情報
ボーンとメッシュ(3Dモデル)の結びつきの情報です。ボーンがメッシュの一部分にどれだけ影響するか調整することをウェイト調整と呼称します。
3dsmaxではエンベロープと呼ばれる楕円形の影響範囲を用いて影響値を設定し、Mayaでペイントによるスキニングで影響範囲を貯精します。
とても面倒くさいしなかなかうまくいかないところです。Tips記事としてそのうちポイントをまとめようと思います
・ボーンベースのアニメーション
通常アニメーションを付けるときはメッシュにボーンがバインドされた状態から更にリギングといって動かしやすいようなからくりを作ります。
IKハンドルや、コンストレイン、コントローラー、選択しやすいようにダミーのロケーターを配置したり、ピッカーを作成したりします。
リギングし終わったモデルに対しては、ボーンに直接キーフレームは打たずにリグに対してアニメーション設定を行います。
しかし、このリギングのアニメーション情報をFBXでゲームエンジンに持っていくことはできないです。
なので、全てのアニメーションをボーンにベイクする必要があります。
・アニメーションのシーケンス
タイムラインを複数管理することができる機能です。歩き、走り、ジャンプなどモーション別に管理できると楽ですよね。Maya2016からの新機能ということで、そのうちお実際に実験してまとめてみたいと思います。
ABC(Alembic)形式について詳しく!
Alembicはシュミュレーションの出力に強力なデータ形式で、ポリゴンメッシュと、頂点アニメーションの情報を内包できます。
例えばクロスシュミュレーションした結果をゲームエンジンに持って行きたい時等に使います。完全に頂点にアニメーションをベイクしてしまうので編集するのは難しいかもしれませんが、走っている時のマントのたなびき等を表現するには最高ですね。モーションブレンド機能が使えるかどうかは不明なので、ループアニメーションとして完結させて置かなければ使えないかもしれません。
Alembicに関してはリサーチして記事としてまとめたいと思います。
・ChronoSculpt
LightWaveの姉妹ソフト、ChronoSculptという2014年に新しく出たソフトを用いればタイムライン情報を持ったメッシュデータを編集することができます。Alembicの他にもAutodesk Geometry Cacheファイルを読み込んで編集することも可能です。
揺らそうスカート、なびかせよう髪の毛!物理シュミュレーション!
物理設定の共通フォーマットは??
残念なが現状、スカートや髪の毛の物理設定をうまくゲームエンジンや他のソフトでやりとりする方法は存在しないようです。
いつか誰かが物理設定の業界標準拡張子を作ってくれることを期待しますが、最終的に使用するソフト内で設定する必要があるみたいです。
物理コリジョン設定
物理エンジンではボーンに対してコライダーを作成します。
物理コライダーの大きさを調節し、それぞれのコライダーが物理的に接触するかどうか、固定するのか重力に従ってシュミュレーションするのかを設定することができます。
物理ジョイント、物理コンストレイン
コライダーの関節設定です。ヒンジやボールジョイント型、バネやスケルタルがあります。それぞれの設定項目を変えると揺れ方が変化します。
クロスシュミュレーション
旗を風になびかせたり、スカートや髪の毛を加太の動きに合わせて揺らしたりできます。コリジョンによる物理演算と上手く組み合わせて使いましょう。
各ソフトのシュミュレーション設定
・Unityで揺らしたい場合
現時点で標準のUnityで他のソフトの様に物理設定をする方法はないみたいです。ボーンベースの処理でスプリング等があるので仮想的に揺らすか、無理やりBoneにコライダーを付けましょう。
・UE4で使用する場合
UE4内部のPhAHで物理設定をしよう。
・MMDで使用する場合
MMDではKinectを使ってリアルタイムでモーションキャプチャーをすることができます。 PMXエディタで物理設定をしよう。
外部モーションデータを使いたい! リターゲットについて
通常、モーションはBVHやFBX形式で出力されます。
オリジナルで作ったデータや、サードパーティ製のモーションデータは対象としているモデルのボーンの構造や管理名称がことなりますよね。
なので、一旦共通のリグを適応させて他のモデルのアニメーションを流し込みます。
言うは易しですが、モーションは多くの人が好き勝手な形式で作っていて拡張子も色々あるため、異なるソフト、異なる拡張子、異なるボーン構造でのアニメーションの受け渡しはけっこう難しいところです。
リターゲット可能なアニメーション特化型のソフト
・Motionbuilder
・NevronMotion
・その他
MayaやMax、ゲームエンジン上でもリグを適応させる必要はありますが、モーションの適応は一応可能です。
僕はCGアニメーションやモーションを付けるのが苦手なのでだれか得意な人がいたらお友達になって下さい。CGアニメーターやPさんがいらっしゃいましたら是非結婚して欲しいです。よろしくお願いします。
CG入門編最後に
オリジナルの世界を作って自分のキャラクターを動かしたい!そう思った瞬間から僕はCGという泥沼に嵌ってしまいました。
モデルを作ること、動かすことは全く違うノウハウが必要とされます。
モデラーとしてどこまで事故完結すべきなのか、とても悩むところです。
CGの分野は多岐にわたっていて1人で完結するのはとても難しいです。
しかし、世の中には自己完結型の化け物のようなCGアーティストが沢山いるのです。
その方々に憧れてこれまで勉強してきました。そしてこれからもです。
自分で物語を考え、絵を描き、世界を作り、人物をモデリングし、骨を入れ、リグを組み、物理設定を施し、アニメーションを付ける。
そして、印象的な一コマを実際に手に取りじっくり鑑賞する。
最終的には自分で思い通りにキャラクター操れるようになる。
欲張りなようですが、これができたら最高です。
CGの分野は奥深く、日進月歩進化し続けております。
常に新しい技術が生まれては消えていく中で絶対的な法則はなく、皆が等しく途に迷っていると思います。
自分の知識を増やすために、そして 同志や仲間を見つけるために僕はこのブログを始めました。 一人でも多く信頼できる仲間を作り。情報や技術を交換することが我々CG屋が生き残る唯一の方法だと思っています。
ようやく長かった前置きが終わりました。
次回からは、それぞれのカテゴリの中でより具体的なTipsを掲載していきたいと思います。
CG入門編ー完ー