9月23日(木)から9月25日(日)で開催された「あにつく2022オンライン」より、Day1の「グラフィニカの開発したツールで紹介する、UE4でのカットシーン制作ワークフロー」のイベント内容をご紹介します。
ウェビナー概要
グラフィニカの開発したツールで紹介する、UE4でのカットシーン制作ワークフロー
本セミナーでは、Epic Games社のゲームエンジン『Unreal Engine(以下、UE)』を使用したグラフィニカ流のカット制作ワークフロー、そして絵の最終クオリティアップするためのパラ掛けツールを紹介します。
・カットシーン制作ワークフロー
・PPMの改良機能とツール群紹介
・現職PPMを使用したポスト処理
の3項目に分けてそれぞれ説明していきます。グラフィニカツールで改良される映像制作フローを、ぜひご覧ください!
主催 :株式会社Too
協賛 :オートデスク株式会社
講師 :株式会社グラフィニカ 小宮 彬広 氏
株式会社グラフィニカ 福岡 北斗 氏
株式会社グラフィニカ 酒井 邦博 氏
株式会社グラフィニカ 堀内 隆 氏
【ウェビナー映像】
『グラフィニカ』紹介
まずは『株式会社グラフィニカ』について紹介します。
グラフィニカはアニメ制作会社でありながら、幅広くゲーム制作も行っている総合制作スタジオです。絵コンテや演出、CGアニメーションをメインにしていましたが、UE4のようなゲームエンジンがプログラマーとデザイナーの垣根を低くしたこともあって、ゲームのカットシーン制作におけるポストフィニッシャーの仕事の依頼も増えてきています。
グラフィニカには、東京にある2つのスタジオの他に、札幌、京都、福岡の合計5つの拠点があります。また、作画アニメ専門の『ゆめ太カンパニー』も子会社として有しています。
本社は新宿スタジオで、100人弱が所属する3DCG専門の部署があります。また、本セミナーの登壇者が所属するRTR開発室は、拠点をまたいでそれぞれ参加しています。業務委託のスタッフも所属していて、在宅からグラフィニカ内のPCにリモートアクセスして作業してもらっています。
グラフィニカでは、メモリーテック・ホールディングスのグループシナジーを活かすことで、プリプロダクションから販売までをワンストップで制作することもできます。
上のグラフにある通り、グラフィニカではアニメと同様の割合でゲーム内映像を制作しています。そういった経緯からゲームエンジンに向き合う機会が増えたため、約1年半前にRTR開発室を設立しました。
RTR開発室ではアニメ・ゲームの制作で使用する機会の多いUE4でさまざまな支援ツールを開発し、映像に適したワークフローも考案しています。
本セミナーでは、それらの支援ツールを使用したUE4でのカットシーン制作ワークフローについて説明します。
MayaおよびUE4での映像制作フローにおいて、
・通常機能の工程
(支援ツールが無い場合のUE4でのカットシーン制作ワークフロー)
・支援ツール群を使用した工程
(支援ツールがある場合の高速化されたUE4でのカットシーン制作ワークフロー)
この2つを比較しながら紹介します。
UE4の導入を悩んでいる方やUE4を入れて苦労した経験がある方は、グラフィニカの支援ツールによって改良されるUE4での映像制作フローを参考にしてみてください。
登壇者紹介
それでは、本セミナーの登壇者を紹介します。
1人目は、グラフィニカ京都スタジオで代表を務める小宮彬広氏です。RTR開発室の室長も兼任しています。
2人目は、UE4のワークフローを推進している株式会社ヒマワリスタジオ所属のテクニカルアーティスト、福岡北斗氏です。
3人目は、本セミナーで紹介するツールの主な開発者である酒井邦博氏です。UEだけでなく、Blenderにおいても精力的に研究・開発を行っています。
最後の4人目は、グラフィニカの制作部で演出を務める堀内隆氏です。本セミナーでは、後の項目でUE4のパラ掛けツールを実際に使用しながら説明します。
カットシーン制作ワークフロー
本項目は、グラフィニカでテクニカルアーティストを務める福岡氏が説明します。グラフィニカで考案して運用しているUE4を使用したカットシーン制作ワークフローを、
・カットシーン制作 基本ワークフロー
・自動化ツールによるワークフロー補助
・その他の機能やワークフローの紹介
の流れに沿って紹介します。
最初に基本のワークフローを紹介し、その後自動化ツールによって最適化された要素を紹介します。最後に、その他の機能やワークフローなどを紹介していきます。
使用ツール
基本のワークフローを紹介します。メインとなるDCCツールは、AUTODESKのMayaとUEです。
Mayaではカメラのレイアウトやキャラクターのアニメーション工程など、カットシーンのベースとなる作業を行っています。
UEでは、カットシーンに対してのエフェクトやポストエフェクト、ライティングなどの後処理からレンダリングまでを行っています。プロジェクトによって納品形態がさまざまなため、ゲーム開発向けの場合はレンダリングせずにゲームデータのままで納品しています。今回は、UEでレンダリングするまでの基本のワークフローを説明します。
カットシーン制作(基本ワークフロー)
上の画像はフローチャートです。Mayaでアニメーション作業を行った後、FBXでUEにデータをインポートします。Alembicなどのジオメトリキャッシュを使用することで、より複雑な状態で移行することもできます。UEでは、シーケンサーという機能を使用して、Mayaから移行したデータをタイムラインに並べます。そのシーケンサー上で、エフェクトやライティング、ポストエフェクトなどの後処理をしていきます。
その後、レンダリングするための情報を持った「レンダーキューデータ」を作成し、連番画像をレンダリングします。基本的にはUE上での絵作りの完成を目指していますが、場合によっては素材分けをしてからレンダリングし、After Effectsなどでコンポジットしてから最終的な絵作りを行います。
ここからは、実際の操作画面で説明します。まずはMayaで、既にカメラとキャラクターのアニメーションが完成しているものを使用します。タイムラインのIN/OUT情報は後でUEでシーケンサーを作る際に必要とするので、上の画像のように忘れないようにメモに記載しています。カメラを選択して、FBXへ書き出します。
キャラクターの骨のルートを選択して、FBXに書き出します。
ここからはUEでの操作になります。まずは所定の位置にフォルダを作成し、シーケンサーを作成します。そのまま作成したシーケンサーにアセットを入れてもいいのですが、ここで1つのシーケンサーを入れ子にしておきます。こうすることで、後で使用尺の調整や全体にかけるエフェクトや背景の表示、非表示などを行えるようにできます。After Effectsのプリコンプのようなイメージです。
マスターシーケンサーにショットトラックを作成し、入れ子にするためのシーケンサーを配置しました。さきほどメモしたMayaでの使用フレームを記載したメモを参考にして、ショットの範囲を設定します。シーケンサーからカメラを作成し、名前を変更してMayaのカメラ名と合わせておきます。
さきほどMayaで出力したFBXからアニメーションをインポートします。これでカメラのアニメーションのインポートは完了しました。
カメラのインポートが完了したため、キャラクターアニメーションのインポートを行います。まずは、前もって読み込んでおいたキャラクターの骨を選択します。アニメーションのインポートができた後にキャラクター自体をシーケンサーに並べ、さきほど読み込んだアニメーションを設定します。
以上で、カットシーンのセットアップは完了です。
レンダリングは「ムービーレンダーキュー」というUEの機能を使用して連番で出力します。プロジェクトによりますが、ここではPNG出力の設定にしています。レンダリングボタンを押すと直ちにレンダリングが開始され、所定の位置に出力されます。
再度同じ設定でレンダリングできるように、レンダーキュー用の設定ファイルを保存しておきます。以上が、基本的なカットシーン制作からレンダリングまでの流れです。
自動化ツールによるワークフロー補助
次に、自動化ツールによるワークフロー補助を紹介します。さきほどのワークフローに対して、グラフィニカで独自開発したツールによってインポートやエクスポート周りの高速化やカットシーン構築の簡略化をすることができ、ヒューマンエラーもなくなり、クリエイティブな作業により時間をかけられるようになります。
プロジェクトによっては、1作品で100カットを超えるカット数を作成することも珍しくありません。自動化ツールによる作業の圧縮によって、作品のクオリティ向上に寄与できればと考えています。
上の画像は、自動化したワークフローのフローチャートです。Mayaからアニメーションデータを出力する際に「Jsonファイル」でシーン情報を一緒に書き出し、レンダリング解像度や使用フレーム、アニメーションにおける作業工程名、バージョンなどのさまざまな情報を含めます。その情報をもとにシーケンサーを作成する際の使用フレームの設定や、レンダーキューを作成する際のレンダリング設定や出力先の自動設定をします。
また、独自のレンダリングツールでレンダーキューを複数選択することで、一度に複数カットを連続でレンダリングすることを可能にしています。
使用するスクリプトを紹介します。後ほど詳しく説明するため、ここでは概要だけを説明します。
【Maya】SceneConv
MayaからFBXやAlembicを出力するためのスクリプトです。カメラやキャラアニメーション、ジオメトリキャッシュ(Alembic)解像度や工程やバージョンなどのメタデータなどを合わせて出力します。
【UE】SequenceMaker
UE上でシーケンサーを自動生成するためのブループリントスクリプトです。SceneConvから出力したFBXやAlembicのデータなどを読み込んでシーケンサーを作成し、スケルタルメッシュを配置します。アニメーショントラックをバインドするまで行います。
【UE】QueueMaker
レンダーキューを自動生成するためのブループリントスクリプトです。SceneConvから出力したメタデータをもとに、解像度や出力名などを自動設定します。
【Windows】StartUpRender
選択したレンダーキューをコマンドラインから実行するプログラムです。
解説
実際の操作画面と共に説明します。まずは、MayaでSceneConvを立ち上げます。出力したいカメラとキャラクターを選択して出力すると、所定の位置にFBXとJsonが出力されます。Jsonには、上の画像のようにテキスト情報としてさまざまな情報が書き込まれるようにしています。
UEでSequenceMakerを起動し、さきほどのFBXを選択します。それによってファイル名から自動的にUEないのアセットのキャラクターを判別し、アニメーションの読み込みとシーケンサーへの配置をしてくれます。フレームもJsonをもとに自動で設定され、設定が済んだ状態になっています。
Jsonファイルだった情報はこの先のレンダリングでも使用するため、UEのデータベースアセットとして保存されています。
次に、レンダーキューの自動生成ツールです。基本的にはレンダリングしたいシーケンサーを選択するだけで、さきほどのデータベースからレンダリングに必要な情報を取得して、自動的にキューデータに反映してくれます。キューの作成を押すことで、レンダリングキューが作成されます。
そのままレンダリングしても問題ありませんが、ここでは一度Windowsに戻って独自のスタートアップレンダーツールを起動します。UEが立ち上がってなくてもこのツールのみで動きます。さきほど作成したキューデータを選択して実行することで、コマンドラインからUEが立ち上がり、レンダリングが始まります。このツールによって、連続して複数のキューデータを、UEが立ち上がってなくても、同じバージョンのUEとUEプロジェクトデータが入っているPCだったら実行することを可能にしています。
以上が自動化ツールによるワークフロー補助の概要です。
比較
基本ワークフローでカット制作を行ったものと、補助ツールを使用してカット制作を行ったもので比較していきます。今回の検証では、全部で7カットを構築してレンダリングまで行います。
左が手動で構築したもので、右が自動ツールの補助によってカットシーンを構築したものです。1分弱経過した段階で手動設定はまだMayaからFBXを書き出している最中ですが、ツール補助がある方は既にUEでのシーン構築まで完了しています。
ツール補助の方はこの後2カット目から7カット目までのシーン構築を完了させ、最後に全7カットのレンダリングを行います。
5分経過し、ツール補助の方はシーン構築が全て完了しました。そのため、最後にスタートアップレンダーを起動して全7カットを選択し、一気にレンダリングしていきます。手動の方はようやく1カット目のカット構築が完了し、レンダリングを始めたところです。
手動の方の1カット目のレンダリングが完了したため、次のカットの構築に取り掛かっています。その後、2カット目から7カット目までのシーン構築とレンダリングをそれぞれ1カットずつ行っていきます。
ツール補助で7カット以上のレンダリングする必要があった場合は、まとまった時間をレンダリングに利用したり、別のPCでレンダリングだけを走らせたりすることで、時間を有効活用できます。
手動の方は約35分で全てのレンダリングが完了し、ツール補助の方は約7分で同じ作業が完了しました。
結果として、手動の場合は1カットにつき約5分でカットシーンを構築でき、自動化ツールの場合は約1分で構築できました。単純計算で1カットあたり4分の時間短縮になるため、仮に200カットの作業がある場合は約13時間の短縮になります。ヒューマンエラーによるやり直しのコストも削減できます。
カットシーンを構築してからアニメーションの更新やレンダリングのやり直しが入ることもあるため、そういった点からも更なる効率化が期待できます。短縮できた時間で別の作業をすることで、作品の品質向上ができると考えています。
その他の機能やワークフローの紹介
ここからは、その他の機能やワークフローの紹介をしていきます。
・Alembicを使用したフロー
・ブループリント化したキャラクター
・カスタムバーンイン
の順に説明していきます。
Alembicを使用したフロー
亜種として、Alembicというジオメトリキャッシュデータを使用したワークフローを紹介します。基本的に、アニメーションをゲームエンジンに持っていく際は骨のFBXによるモーションデータになります。容量が軽く処理が速いため、ゲーム用途においては最適なやり方です。しかし映像用途に使用するには容量が大きいくても、処理が重くなったとしてもクオリティや柔軟性を優先する場合があります。その場合のために、グラフィニカではFBXではなくAlembicを使用するワークフローとツールも用意しています。
さきほど使用したSceneConvにはABC(Alembic)というオプションがあり、そちらでエクスポートするとFBXデータではなく、Alembicデータが出力されます。100フレーム程度の短いシーンでも、200MB程度の容量になります。ポリゴン数やフレームが増えるほど容量は増加していくため、その点は注意が必要です。
さきほどのSequenceMakerでAlembicを選択するとインポートに少し時間はかかりますが、Alembicが読み込まれてシーケンサーに配置された状態になります。Mayaのシェーディンググループ名とUEのマテリアル名を同じにしているため、自動的にマテリアルが割り当てられるようになっています。
このワークフローでできることを簡単に紹介します。骨構造にかかわらずどのような変形のアニメーションでも持ってくることができるため、頂点数が変わるような変形にも対応可能です。今回は、上の画像のようにベンドデフォーマを追加してアニメーションさせています。
上の画像は、変形の状態がUEにも正しく再現されている様子です。「ポリゴンのめり込み回避」や「クロスシミュレーション」、「ポリゴン変形による複雑な表情の表現」など、実際の制作で出てくるさまざまな要件に対応できるフローになっています。
ブループリント化したキャラクター
次に、キャラクターのスケルタルメッシュをブループリント化する利点と、それに対応した機能を紹介します。
ツールの方はシンプルで、BPアセットのオプションを付けて、FBXのキャラクター名の前にBPアンダーバーを追加します。その後、UEのアセット内からさきほどの名前を見つけてタイムラインに配置するという仕組みです。
キャラクターをブループリントアセット化していきます。右クリックのメニューからブループリントを作成します。これによってスケルタルメッシュと同じ属性を持ったブループリントアセットが作成されるため、シーケンサー上でも作成したブループリントアセットをスケルタルメッシュと同様に運用することができます。
上の画像に表示されているのはブループリントアセット化した、スケルタルメッシュのプロパティです。この画面で各種設定することで、キャラクターの初期設定として運用することができます。例えば、ライトチャンネルの設定やデカールの影響を受ける設定、その他のレンダリング設定、マテリアル変更による色違いのバリエーションなど、本来であればシーケンサーに配置するたびに再設定しなければならない情報をここであらかじめ設定できます。
今回は独自ツールを用いてシーケンサーを構築していますが、手動で行う場合もスケルタルメッシュと同じ操作でシーン構築することが可能です。あらかじめブループリントエディターで設定した内容が反映された状態で、シーケンサーに配置することができます。
カスタムバーンイン
最後にカスタムバーンインで情報を付与したレンダリング画像の紹介をします。
初期設定のバーンインを使用すると、画面内に情報がオーバーレイされる形で表示されます。これでは、最終の素材は別で出力する必要があります。
そのため、レンダリング解像度を拡張させて、文字を表示させるバーンインを作成します。上の画像のように、上下帯の部分に情報が記載されています。アニメでいうBold扱いとして私用してます。今後は、帯の部分に申し送り事項や修正内容などを自由に記載できる仕組みを作り、編集する人にスムーズに情報を伝達できるようにする予定です。