[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?
 現在,絶賛劇場公開中の「Hello World」は「今住んでいる2027年の京都の町は,仮想世界である」と十年後の自分から宣告される主人公の少年が,ヒロインに襲い来る悲劇を回避するために奔走する,というSFラブストーリーのアニメ映画作品である。

 あまりにも自然なアニメ的手法の映像描写,演技表現が全編を彩っていることから,本作が基本的にはフル3DCG作品であることはあまり知られていない。そんな「まるで作画アニメ作品のようなテイスト」で本作を作り上げたのは日本のCG制作スタジオのグラフィニカである。


 Unite Tokyo 2019では,この「Hello World」の制作秘話を交えつつ,作中の二つのシーンをそれぞれユニティ・テクノロジーズ・ジャパン(以下,Unity Japan)とグラフィニカのスタッフでゲームエンジンUnity上で再現するプロジェクトにまつわるセッション「Unity上でセルルックCGアニメ映画「HELLO WORLD」のシーン再現にチャレンジ!」が行われた。

このセッションで登壇したのは,グラフィニカから3名,Unity Japanから2名で,それぞれの制作チームからの代表としての登壇となった。左から大前広樹氏(Unity Japan,日本担当ディレクター),阿尾直樹氏(グラフィニカ,演出),堀内隆氏(グラフィニカ,ディレクター),鶴田剛史氏(フリーランスプログラマ。グラフィニカ側のスタッフとして本編制作に参加)。写真には写っていないが司会進行は小林信行氏(Unity Japan,コミュニティエバンジェリスト)が務めた


Hello World本編制作秘話〜Hello Worldのアニメーションは手付け。本編にはUnityで制作したシーンもあり!?


 Hello Worldの制作にあたって命題となったのは「従来の作画ベースのアニメ作品に匹敵するセルアニメルックな3DCG作品を制作する」ことだったという。
 制作パイプラインは下図のような感じで,DCCツールは主に「3ds Max」で撮影に「After Effects」が使われた。3ds Maxは3Dグラフィックス制作に,After Effectsは出力された描画結果としての映像フレーム群を調整・合成するなどのコンポジット用途に使われたとしている。

Hello Worldの制作パイプラインと各工程に用いられたツールの対応図。「撮影」とはカメラで撮影しているわけではなく,アニメ業界用語で納品用フレーム制作工程のことを指している
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 制作上で大変だったのは,手描きの作画に見劣りしないレベルで各キャラクターの豊かな表情表現を実現することや,3DCGっぽさを感じさせないようにする最終コンポジット工程だった,とグラフィニカ側の登壇者達は当時を思い返す。
 下図は,主役二人の3Dモデルのツール上での表示となる。この画面では分からないが,現行ゲームグラフィックスとは比べものにならないほどの大量のボーン(リグ)が仕込んであり,ボーンを表示すると顔面や全身がボーンで埋め尽くされるほどだそうだ。

主役2人の3Dモデル
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか? [Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 そこまで複雑なボーン構造としたのは,顔演技から身体演技まで,ほぼすべてを手付けのアニメーションで実現しているためだ。つまり,モーションキャプチャは使っていないということである。これは,Pixarなども同様である。
 下図はその手付けアニメーションの制作中のイメージで,担当アニメーターは,実際に作中に似たようなシチュエーションで自ら歩いたり,手を振るなどの演技をした様子をビデオで撮影し,これを参考にモーションを付けていったという。

主人公の少年がヒロインに本の栞を返す場面。少年の歩み寄りは手付けアニメーション。右はその動き付けを参考にするために撮影されたビデオ
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 興味深いことに,最終的な劇場公開版の映像に,Unityで作られた映像が盛り込まれていることが報告された。それは作中で主人公が突入する不思議な幻想空間の描写シーンだ。このシーンの背景はUnityを用いてプロシージャル生成した3Dオブジェクトやテクスチャを,Unity上でレイマーチングにて描画したものなのだそうだ。

幻想空間表現にUnityで制作した映像そのものが背景に採用されている。劇場で見た筆者の記憶によれば,このシーンは作中後半に登場する
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 最終的に描画された映像フレーム群は,After Effectsのほうに集約されて,After Effects上で色調調整やさまざまな素材群との合成が行われる。Unity Japanの大前氏は,After Effectsの編集画面を目の当たりにし「こんな膨大な数量のレイヤー数の作業画面を見たことがない」と述べていた。

本作のAfterEffectsプロジェクトを開いた画面。ここまで大量のレイヤーで構成されたプロジェクトは過去に見たことがない,と大前氏
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?


Hello WorldをUnity上で動かすことに挑戦


 セッションの後半パートでは,Hello WorldのシーンをUnity上で再現するプロジェクトにまつわるエピソードが語られた。
 そもそものプロジェクトスタートの発端は,Unity Japan側からの提案だったそうである。
 「ゲームエンジンでも映像作品が作れる」という事実はゲーム,映像業界にそれなりに周知は進んではいるが,まだまだそうした試みはスタートして間もないといった状況だ。「ゲーム畑のプロ」としてのUnity Japanとしては「映像作品を制作するためにUnityに今後,どういう取り組みが必要なのか」というテーマをリサーチするためにこのプロジェクトを発案したという。この打診を受けたグラフィニカ側は,前述したような「ゲームエンジンでも映像作品が作れる」という情報は認識しており,ちょうどUnityに関心を抱いていたタイミングであったこと,今後の映像作品の制作において,便利に使えるのであれば部分的にも取り入れたいという気運が高まっていたこともあり,まさに「渡りに船」状態ということで,快諾したのであった。

「Hello World」のシーンをゲームエンジンのUnityを使って再現するプロジェクトがスタート。このプロジェクトがいつからいつまで掛かったというような情報はセッションでは語られなかった(※基調講演では「1年以上かかった取り組み」とされている)
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 このプロジェクトでは,Unity Japan側と,グラフィニカ側でそれぞれ異なる劇中のシーンを選択し,これを本番映像制作に用いた3Dモデル,ボーン構造,テクスチャなど,各種グラフィックスデータ(いわゆるアセット)をゲームエンジンのUnityへコンバートして利用し,劇中の表現に迫る映像をUnity上でリアルタイムで動かそうというゴールが掲げられた。
 そして実際の制作自体は,両社互いに技術支援や情報提供は行い合うものの,制作自体はそれぞれで独自に行うスタイルがとられた。

 まず語られたのはUnity Japan側の制作秘話だった。
 Unity Japanの大前氏は,本家版ともいうべきオフラインレンダリング版の3Dモデルには,かなり膨大なボーンが仕込んであり,さらにAfter Effect上で多量のマルチレイヤーコンポジットを行う構成だったため,プロジェクト最初期は途方に暮れたそうである。これをUnity上でリアルタイム動作するために,最適化を施し,材質設定もオリジナルに近くなるように設定し,最終的にはそれなりに満足がいくようなものに仕上がったと振り返っていた。

データのコンバートから苦労することになった
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 グラフィニカの阿尾氏,鶴田氏は,2D背景と3Dモデルを組み合わせたシーンにおいて,Unity上で本家版と同じように見せるためのセッティングに苦労したこと,影の出方を本家版と同じにするためにダミーの光源などを焚いて辻褄を合わせた……といったようなエピソードを披露していた。
 キャラクターのアニメーション(動き)については,本家版では3ds Max上で作り込んだボーンを動かして作り込まれたことは前述したとおりだが,大前氏が述べているように,このボーン構造があまりにも多量かつ複雑で,しかも,一部は3ds Max特有の機能を使っていたようなこともあり,本家版のボーン駆動によるアニメーションをUnity上で再現することは叶わなかったとのことである。そこで,取られた打開策は,3ds Max上で動かしたアニメーション(動き)結果をUnityにコンバートする手法だった。これは,3Dモデルの動きを,フレームごとの3Dモデルを構成している全頂点の移動データとして表現する手法で,データ量としては膨大になり,GPU負荷もそれなりに高くなるという特性がある。この手のアプローチではAlembicのジオメトリキャッシュが有名だが,今回のプロジェクトでは,こうした膨大な頂点アニメーションデータをUnity上で高効率に処理できる「MeshSync」「Scene Cache」を利用することとした。

アニメーション(モーション)の再現には「MeshSync」の「Scene Cache」を活用
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 このMeshSyncは,Maya, 3ds Max, Blender, メタセコイア, xismoなどの幅広いDCCツールをUnityと接続して,DCCツールでの作業結果をリアルタイムにUnityに反映させるプラグインツールになる。Scene Cacheは,このMeshSyncによってもたらされる機能の一つで,DCCツール上のシーンの多様なデータをフレーム単位でファイル化し,Unity上で再生することができる機能だ。機能としてはAlembicのジオメトリキャッシュと同じだが,Unity上で非常に高効率に再生できるように最適化されていることが特長となっている。

「Scene Cache」の利点は,多様なDCCツールに対応していること,そしてパフォーマンス的にも優秀なところにある
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 本作は,3Dグラフィックスベースの作品ではあるが,最終的な映像作品としては作画アニメ風のテイストを目指しているため,3Dモデルの演技は30fpsや60fpsのフルアニメーションではなく,間のコマを抜いた8〜15fpsのリミテッドアニメーションとして出力する必要がある。普通に出力してしまうとフルアニメーションになってしまうところを,あえて,コマを抜く(破棄する)必要があるわけだ。コマの抜き方も,フルアニメーションに対して一定割合でコマを抜くのではなく,そのキャラクターの演技のスピードや演出意図を反映して非線形なコマ抜きを行うのがリミテッドアニメーションの特徴だ。こうした適応型のコマ抜きのやり方を「タメツメ」と呼ぶが,Scene Cacheを使うと,このタメツメをUnity上で視覚的かつ効率的に作業できる利点もあった。

Unity上でタメツメを編集している様子
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 続いてグラフィニカ側の制作秘話が語られる。
 こちらも最も大変だったのはアセットのコンバートだった。
 グラフィニカ側ではMeshSyncのScene Cacheは使わず,3Dモデルの演技はAlembicのジオメトリキャッシュを用いたとしている。理由は,グラフィニカが制作に取り組んだ際のバージョンのUnityではMeshSyncの動作がうまく安定しなかったためと説明されていた。そのほかの動きのない背景オブジェクト(プロップ)群についてはFBXにて,カメラやマテリアルデータなどはJsonで出力し,Unityへ持っていたとのことである。

グラフィニカ側もアセットのコンバートには苦労したようだ
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 本家版の3Dモデルは,制御点ベースで低ポリゴン相当でモデリングされており,適宜3ds MaxのTurboSmooth機能を利用してシーンに見合った品質の高ポリゴンモデルに変換する仕組みを使っていた。このパイプラインをUnity上でも再現すべく,Unity側のGPUテッセレーション機能を活用しようと試行錯誤したものの,うまくいかず断念したことを鶴田氏は述べていた。結局,3ds Max上でTurboSmoothを仕掛けて高ポリゴン化した3DモデルをUnity版に持ってくる方向性で制作が行われたとのことである。

左がGPUを用いたリアルタイムテッセレーションによる3Dモデル分割結果。右がTurboSmoothを用いた3Dモデル分割結果。グラフィニカとしては,この分割結果を一致させることは叶わずとも近いものにしたかったという
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 一方,材質設定はマルチレイヤー構造として設計されたテクスチャ群を含め,3ds MAX側で制作していた本編データをほぼそのままUnity側にコンバートし,Unity側のマテリアルシステムで同等の再現を行えたとしている。

ライティング/シェーディングについては,Unity Japanの小林氏が開発したUTS2(ユニティちゃんトゥーンシェーダVer.2.0)が採用された
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 影生成については,Unity側のシャドウマップ(デプスシャドウ)技法を使いつつも,キャラクターに対する精細な影生成についてはDirectX Raytracing(DXR)ベースのリアルタイムレイトレーシング機能を使った影生成を用いたとしている。阿尾氏は,この一連のUnity上の影生成クオリティについては何の不満もなかったと振り返っていた。

影生成にはDirectX Raytracing(DXR)ベースのリアルタイムレイトレーシング機能も利用された
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 アニメタッチ映像特有の輪郭線付与については「Pencil+ 4 Line for Unity」を採用。こちらの線描品質についても不満なしとのことである。

線描には「Pencil+ 4 Line for Unity」が利用された
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 本家版の制作パイプラインで特徴的だった「膨大なレイヤー数からなるフレーム素材やそのほかの関連素材をAfter Effects上で調整・合成していく処理」についても,できるだけUnity上で同等のプロセスが実現できるように,鶴田氏が専用のコンポジットレイヤーツールを作成した。この部分は,グラフィニカ側のUnity版制作スタイルにおいて,最もユニークな部分だといえる。鶴田氏も「アニメ制作においてコンポジット担当スタッフが作業しやすい環境作りを目指して制作した」と振り返っていた。

鶴田氏が今回のプロジェクトのために制作したコンポジットレイヤーツール。本家版制作におけるAfterEffects工程に相当するものである
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 ちなみに,下が,それぞれの陣営が制作したUnity版Hello Worldの映像を撮影したものになる。なお,両社は折を見てUnity版のちゃんとした動画の公開も検討中と述べていたので,将来的にもっと鮮明な映像で見られるときが来るかもしれない(※基調講演の模様はYouTubeにアップロードされるとのことなので,もしかしたらそちらで確認できる可能性はある)。



「似て非なる」「近いようで遠い」ともいえる「ゲームグラフィックス」と「アニメ映像作品」の意味ある異文化交流事象だった今回のUnity版制作プロジェクト


 今回のHello WorldのUnity版制作プロジェクトを振り返り,その映像のでき映えをグラフィニカは「85%のデキ」と評価する。
 「−15%」はどこにあるのか。
 これについて阿尾氏は,After Effectsを使っての最終的な映像の作り込み部分において,Unity版と本家版とでは差異を指摘していた。
 本家版は作画アニメ作品風の見た目,そして見やすさを重視して制作したため,「物理的には正しいのかもしれないが,アニメ表現としては好ましくない表現」を,このAfter Effects工程で1コマずつ調整していくことがあった。Unity版では鶴田氏のコンポジットレイヤーツールを用いて調整しても「物理的に正しい表現」がそのまま残ってしまった箇所があったのだ。その一例が下である。

栞を掴んだ少年の手の平に出ている影の出方がUnity版と本家版とでは異なっている。物理的にはUnity版のほうが正しいが,アニメ的表現的には本家版が望ましいとされる
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 これは,ヒロインが落とした本の栞(しおり)を届けるシーンだが,本家版では主人公の手の平には一様な影が出ているが,Unity版では細かな明暗が出てしまっている。物理的にはUnity版のほうが正しい照明結果であり,本家版でもAfterEffects工程前は同様の描画結果だったのだが,本家版ではAfterEffectsの工程でこれを影色でフレーム単位で塗りつぶして調整している。ここまでの細かな調整は鶴田氏のコンポジットレイヤーツールでも対応できなかったということである。
 最後にまとめの形で,ゲームエンジンとして映像制作,具体的にはUnityを使っての映像制作は,従来の制作スタイルからコストカットにつながる部分を見つけられたかどうか,グラフィニカ側に話を聞く場面があった。
 これに関しては,阿尾氏と堀内氏は共に「あったように思う」と回答。
 二人とも,主旨としては,レンダリングとAfterEffects工程のコストカット,および制作のスピードアップにゲームエンジンの活用は貢献できるのではないか,という内容の発言を行っていた。
 具体的には,ゲームエンジンを用いれば,

  • うまくアセットなどのセットアップさえできてしまえばレンダリングは圧倒的に短縮できること
  • いわゆるトゥーンシェーダを用いればアニメタッチのグラフィックスとして十分満足のいくクオリティが出せること
  • 多段レイヤー前提のAfterEffectsを用いた調整・合成の工程の大部分を全面圧縮できること

などを挙げていた。これら3点については,グラフィニカ側は,今回のUnity版制作の経験で大きな衝撃を受けたようである。

本家版とUnity版の制作パイプラインの比較図
[Unite 2019]実は3DCGアニメ作品だった「Hello World」。この作品をゲームエンジンUnityで再現することはできるのか?

 阿尾氏は「監督や演出担当がUnityを使えるようになればさらに制作速度を上げることはでき,緊急の演出,物語などの仕様変更にも柔軟に対応できるはず」とも述べる。
 これは,ゲームエンジンを用いて制作を進めていけば,ちょっとした手直しは監督や演出担当が直接直せるだろうし,大幅な演出,物語の手直しや変更も,完全な最終版には到達できなかったとしても,最終版に近い映像にまでは早くもっていけるだろう,と考えられるからであろう。
 今回のUnity Japan×グラフィニカによるUnity版Hello World制作プロジェクトは,グラフィニカ側が「デキは85%だった」と指摘した「細かい調整が必要となる部分」については課題を残したが,これはUnity側やその関連ツールの改良でサポートもできそうなだけに「将来的には解決しうる問題」だと見られる。
 今回のプロジェクトは,Unity Japan側にとっては,映像作品制作向け機能の強化の方向性を把握するのに有益な試みとなり,グラフィニカ側にとっては,現在の映像制作パイプラインの低コスト化,スピードアップ化にどうゲームエンジンを活用していけばいいか,といった方針を見出すための有意義な実体験となったに違いない。