5 ゲームエンジンへの実装
01 キャラクター運用の事例
ここからはゲームプログラマー、梅村時空氏にゲームエンジンでキャラクターを運用するための複雑なしくみを手順化し、わかりやすく解説してもらいました。
①UE4スケルタルメッシュの運用
バインド済みのモデルやモーションをインポートするとUE4内部では「スケルタルメッシュ」「スケルトン」「アニメーションシークエンス」「物理アセット」の4種類の要素として読み込まれます。使用するアニメーションシークエンスとスケルトンの構造が一致しない場合、つまり、別のキャラクターのモーションを使用したい場合はリターゲットという変換処理が必要になります
②キャラクターの移動
前提として、ゲームエンジンのアニメーションではキャラクターの「モーション」と座標の「移動」は別の概念として考え、分けて管理するのが一般的です。キャラクターの座標を「移動」させるにはブループリントのキャラクタークラスを使い、キー入力を取得して移動させます。一方、キャラクターの「モーション」を管理するためにはキャラクタークラスのスケルタルメッシュに「アニメーションBP」を適用して運用します
③アニメーションBP
「アニメーションBP」を使うと自由度の高いアニメーション制御が可能です。アニメーションステートやBlend Poseを使用するとモーションのブレンドや分岐を管理できます。また、スケルタル制御機能を使用するとキャラクターのボーンを移動、拡大縮小させることができます。冒頭で説明したSotaiChanTransformerもこの機能を使って作成しています。ほかにも、IKを使用して手の位置を固定したり、足を地形に沿って配置することなど、紹介しきれないほど様々な機能が詰まっています
④「SotaiChanTransformer」でできること
SotaiChanTransformerはUE4のブループリントで構成されていています。図右下の独立したノード群をアニメーションBPのFinal Animation Poseの直前に挟むことで、キャラメイク用のレベルで設定したキャラクターの設定を適用し、実際のシーンに反映することができます
⑤着せ替え実装時の服の運用法
衣装は素体とは別データでつくり、時と場合に応じてパーツ分けをして、別データでエクスポートします。服の運用方法は大きく分けて2種類存在しています。ひとつめは小階層として装備させる方法で、ジョイントによる物理シミュレーションが可能です。ふたつめは素体と同じ骨を入れてアニメーションBPのCopy Pose From Meshを用いることで、常に素体と同じポーズを同期させる方法です。この方法では人の素体と同じスケルトンを使用するため、ジョイントによる物理シミュレーションは行えません。そのため、揺れものの表現はクロスシミュレーションを使用します。今回のSotaiChanに対してはふたつめの方法を使用していて、髪やスカートをシミュレーションで揺らしています
⑥クロスシミュレーション
髪やスカートなどの揺れものをアニメートするために、スケルタルメッシュエディタを使ってクロスアセットを作成します。クロスシミュレーションはマテリアルスロット単位で設定するため、シミュレーションさせたい箇所は個別に単一のマテリアルに設定し、固定頂点とパラメータを設定することでシミュレーションすることが可能です
02 アニメーションメイキング①~Adobeの3Dアニメーションツール「Mixamo」~
自動でリグやアニメーションを付けてくれる「Mixamo」というサービスがあります。手順は簡単で、事前にフェイシャルモーフやマテリアルを設定した後にWebブラウザからMixamoにアクセスしキャラクターをセットアップします。ウェイトのおかしい部分は「Akeytsu」(詳細は下記)で追加修正が可能です。さらに、UE4のアニメーションエディタは非常に優秀で、めり込んでしまっている箇所をずらしたり、腕の向きを変えてブレンドしたり、ソケットをつくりアイテムをもたせたり、フェイシャルモーフで表情を変えたりすることも可能です。アニメーターではなくてもオリジナリティのあるアニメーションを簡単につくることができます。
「Mixamo」
www.mixamo.com
03 アニメーションメイキング②~アニメーション特化のDCCツール「Akeytsu」~
バインド済みのモデルは、通常はバインドポーズやボーン構造の編集はできませんが、CGアニメーションツール「Akeytsu」を用いることで新規ジョイントを追加したり、構造を変えることが可能です。これはMixamoなど外部でウェイトを付けたモデルを修正加工できることを意味します。また、直感的にゲーム用のループアニメーションを作成できるため、非常に便利です。最新のソフトのため、現時点ではブレンドシェイプに対応しておらず、ブレンドシェイプ情報が壊れてしまうという弱点がありますが、今回のプロジェクトではMayaなどの外部ソフトで、ブレンドシェイプ情報をもった元のモデルにウェイトを転写することでこの問題を解決しています。
「Akeytsu」
www.nukeygara.com
04 「Instant Terra」を用いたTerrain作成
「Instant Terra」はUBISOFTの開発陣が鋭意開発中の地形作成ツールで、まだベータ版のみの公開ですが、直観的で素晴らしいソフトです。操作感はSubstance Designerに非常に似ています。何かをしたいと思えば、その機能にすぐたどり着くようなUI設計になっていて、次世代感があります。様々なTerrainツールで挫折を経験した著者でも、わずか5分で操作方法を理解して自由に地形をつくれるようになりました。自分で描いた地図画像を階調化して完全に思い通りの地形を生成することも可能で、UE4やUnityでも地形データとしてインポートすることができました。「Instant Terra」の詳しい使用レビューは著者ブログ(kazukisakamoto.hateblo.jp)で解説していますので、ぜひご一読ください。
05 UE4で背景をつくりこむ
背景、オープンワールドなど、様々な呼び名があると思いますが、UE4では短時間で広大な世界をつくることができます。UE4のランドスケープを作成するとデフォルトでは巨大な板が生成され、手作業で凹凸させていきますが、今回は前述の「Instant Terra」で作成した地形データを白黒画像でインポートしました。
地形のマテリアルの塗分けは単色のマテリアルで確認しつつ、後から置き換えるような方法を採っています。大きな建物を配置した後、木や草の生える位置も単色で塗り分けて制御。次に、川や滝を道と同様にカーブで生成し、海や湖を配置します。自動配置である程度作成した後に特徴的な石や、今回だと彼岸花などをフォリッジツールで散布しました。説明は割愛しますが、このときに注意すべきなのがLODやミップマップを設定することです。また、水しぶきなどの環境エフェクトに関してはAsterisk運営メンバーの高槻氏に協力していただきました。
アーティストのセンスをより活かすコンテンツ制作へ!
UE4やUnityなどのゲームエンジンを活用することで、今回のようなセミリアルな表現から写実的な表現まで、個人開発でもスピーディに制作できる時代が訪れました。昨今、建築やプロダクト、映像業界への参入が多く見られるゲームエンジンですが、ゲームエンジンに最適化した適切な処理と丁寧なつくり込みをすることで60fps、VRであれば90~120fpsのフレームレートを実現し、様々なデバイスへ向けた実行ファイルへの書き出しも可能です。さらに高負荷な設定をすればプリレンダリング用のGPUレンダラとして代用することもできます。また、開発中も常に最終ルックを確認しながら作業ができるため、アーティストの画力や美的センスをよりダイレクトに作品に伝えることが可能です。これはZBrushやMarvelous Designerにも見られる傾向ですが、CG制作のスタンダードは難しい技術から解放され、アナログのセンスで勝負する時代に突入したのだと実感させられます。この記事をきっかけにリアルタイムレンダリングに興味をもっていただければ幸いです。
-
坂本一樹
「人柱系CGモデラーのTipsブログ」著者で、「AsteriskLab」というゲーム制作技術の配信勉強会を主催しています。フリーランスのCGアーティスト/モデラー/講師/技術コンサルとして活動しています。
kazukisakamoto.hateblo.jp
-
Palmie「ZBrushでつくろう! 3Dキャラクターメイキング講座」
ZBrushでオリジナルキャラを作成し、WebGLでアップロードしよう! 3Dモデリングの基礎知識を抑えつつスマホ・タブレットでも閲覧できるモデルをつくります。Webポートフォリオ作成に便利な情報が満載です。PalmieのZBrush講座、ぜひよろしくお願いします!
www.palmie.jp