UniteTokyo2019 DAY1 参加レポート
Unite Tokyo 2019 参加してきたので、まずはDAY1で自分が参加してきた講演のレポートを書いとく。
<七つの大罪>をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
「えっ!?スマホでこんなハイクオリティなゲーム作っちゃう!?」
と、日本のスマホゲーム開発者を戦慄させる高品質さでリリース後トップセールス上位をキープしている「グラクロ」のゲーム開発に関する講演。
(講演スライドはまだ上がってないので、上がり次第リンクを追加する)
本セッションでは『七つの大罪 光と闇の交戦 : グラクロ』の開発において、〈七つの大罪〉の感性を徹底的に再現するための工夫や方法、そして、実際に使用したレンダリング技術やグラフィックテクニックをご紹介致します。 また、開発効率を向上させるための最適化方法についてもご説明致します。
グラクロは「七つの大罪」という原作があるため、その原作の良さを最大限発揮できるための演出力を作ることに力を入れている。
キャラクター表現
キャラクターは最初、ノーマルマップなどを駆使したフォトリアルな表現で作っていたが、これじゃない感が出たので作り直したとのこと。
原作アニメの表現を参考にしてToon表現のシェーダーが作られており、伝統的なLightingだと顔などに不自然な陰影ができるので、原作アニメに寄せるためにMatCap Shaderなども作成している。
MatCap参考: 【Unity】【シェーダ】MatCap(スフィアマッピング)を実装する - LIGHT11
また、DCCツールとUnity間のイテレーション改善のため、3dsMax上で同じ表現ができるShaderを作成してモデル編集時に確認できるようにしている(MeshSyncは使われてなかった感じ)。
Effect
Effectにも光源効果を持たせたいので、MatCapを追加している。
上はゲーム画面だけど、エフェクトから光出てるっぽい。
Effectのために、かなり多くのshaderが作成されていた(講演スライドが上がったら見れるはず)
LUTを用いたColor Grading
Lookup Texture(LUT)を用いて、同じ背景モデルでも昼や夜などで様々な雰囲気を出させるようにしている。
テクスチャを用意するだけで背景バリエーションを増やせるので、便利だなと思った。
(画像は、Unity Manual に載ってあったやつ)
建物の中はFake Interior
建物の中の家具をTextureで用意しておき、あたかも3Dオブジェクトがあるように見せかけるテクニック。
こういうテクニックを採用することで、クオリティとパフォーマンスのバランスを取っているのがゲームのクオリティを支えている。
大量のオブジェクトは、Impostor(2Dビルボードへ)
Impostor は今まで知らなかったが、様々な角度で3Dモデルをキャプチャしてアトラス化しておき、疑似3Dとして扱う手法のこと。
遠景のオブジェクトや大量の民衆などは Impostor を用いて描画していると説明していた。 (これも講演スライド上がったらそっち見たほうが良さそう)
生産性
講演の後半はスピーカーが代わり、「生産性」を上げるためにどんなツールや仕組みを用意したかを紹介していた。
技術的な内容で難しめなので、サラッと箇条書きでメモ。詳しくは講演スライド参考で・・・。
- Facial Animation
- Blend Shape使用。基本13個ぐらいのモーションで、各キャラ共通化してて効率よくしてる。
- LookAt System
- キャラクターが後ろを向く時などに、自然に頭・首・胸が回転するようにシステム化している。スライドに分かりやすい画像貼ってあった。
- PostEffect
- もちろん様々なPostEffect必要なので、UberShader作られている。
- Behaviour Tree
- Machine Learning
- バランス調整のために、AIも活用している。
所感
グラクロはたまたま売れたようなタイトルではなく、しっかりとした技術基盤や演出方針を築いた上で作られたハイクオリティなゲームなんだと改めて理解した。 今後はこのクオリティがデフォルトラインになってくると思うので、「凄いなぁ」とぼーっと見てたら取り残されてしまうという危機感を抱いた・・・。
『The Heretic』で学ぶ映像制作テクニック
(Unity画面上でのデモがメインだったので、動画上がったらそっち観てもらったほうが良さげ)
Topicは下記の通りで、HDRPやVFXなどハイエンド向けの映像制作に関する講演になっている。
デモ動画の「The Heretic」の主人公は実在の人間がモデルになっていて、下図のようなフローでUnity上に持ってきている。
キャラクターの皮膚には、SSS(Subsurface Scattering)の表現が用いられており、下の画像だと耳のところの透明感のある表現が凄いと感じた。
The Heretic でワープをするようなTransitionのシーンでは、Meshを年輪のように輪切りにしてゴニョゴニョしたという話をしていたが、ハイレベル過ぎて話についていけなかった・・・。
所感
今はスマホゲーム作ってるのでHDRPは関係ないと思ってたけど、講演を見たら触りたくなった。
仕事関係なく、個人でなんか綺麗なデモ動画作りたい時なんかHDRPが便利そうなので年末までに勉強がてらなんか作ってみようかと思う。
Unity 映像制作パイプライン完全マスター
この講演におけるパイプライン
Unity を中心として、
- Python経由でShotgunと連携
- OpenTimelineIOを使ってVideo Editing / Storyboard 連携
- FBX/USD/AlembicフォーマットでDCCsと連携
を、本公演における映像制作の効率的なパイプラインとして紹介していた。
Unity - Shotgun連携
Unity - Shotgun間の連携の仕組みがUnity公式で用意されるとのこと。
単純な連携はShotgun for Unity でやって、処理をカスタマイズしたい場合や既存ツールを使いまわしたい場合はPython for Unityを使うことになりそう。
Shotgunのlauncher からUnity起動後に特定の処理を挟むとかもできる感じ。
Shotgunのnoteに記載した特定のassetの特定frameに直接Unityで開くとかもできる。
2019.3 でpublic release されて、順次拡張していくとのこと。
ただ、自分もTAやってた時にShotgunを少し検証させてもらったけれど、Shotgun自体の管理も結構大変そうなので、そこもセットに考える必要あり。 Shotgun連携できるようになったからとりあえずShotgun導入するぞーって動いちゃうと、Shotgunの構成設計や管理に1人つきっきりになるかもしれないので注意。
んで、Shotgunで扱うアセットのバージョン管理方法については、ShotgunとPerforceが蜜月の関係なので、Perforceの導入も更にセットで考えたほうがいいかも・・・。 https://support.shotgunsoftware.com/hc/ja/articles/219033058-Perforce-%E4%B8%80%E8%88%AC%E6%A9%9F%E8%83%BD
OpenTimelineIOを使ったパイプライン
ここは未経験の領域なのであまり良く分かってないけど、ラフ絵とUnity間の連携をしやすくするイメージ?
(詳しくは公開されたスライドを参照で)
USD for Unity
これは結構でかい話になりそう。
USD(Universal Scene Description) はピクサーの開発した3Dシーングラフ形式及びその形式を扱うプログラム群のことで、詳しくはwiki参照。 Universal Scene Description - Wikipedia
UnityのUSD対応について blogs.unity3d.com
USDファイルの中に、カメラやTimeline、マテリアルやシェーディングの情報も含めることができるため、DCCツール上で生成したUSDがUnityでも扱えるようになると、映像制作に必要なデータが一括で扱えるようになる。
USDはLayer Stack で複数重ねることもできるとのこと。
ただ、USD対応のRoadmapも凄いことになっており、まだまだ大変な道のりであることは分かった・・・。
まとめと所感
Unityでも映像制作ができるようにパイプライン機能を強化していく流れが感じられる。 (映画「Hello World」 のカット再現などにも取り組んでいるし)
このへんは、エンジニアだけでなくクリエイターの人にも知ってもらい、すり合わせをしていく必要がある分野だと思った。 グラクロのようなハイクオリティのゲームを作るには、パイプライン改善は必須だろうし、特にUSD対応は大きな変化になりそうなので今後もアンテナ張っておいたほうがよさげ。
DOTSの講演2つ
DOTSは Data Oriented Technology Stack の略で、オブジェクト指向ではなくデータ指向でプログラム組んでいったほうが今後のUnity的に効率良いよねって感じ。
正直今までDOTS関連の情報は仕入れても頭から抜けていったので、今回の講演を聞いてもすぐに忘れてしまいそう・・・。
ただ、安原さんの「たのしいDOTS〜初級から上級まで〜」の講演では、なんでDOTSがいいの?という初級から説明してくれたので分かりやすかった。
なんでDOTSがいいの?
現在のUnityでは普通にC#プログラムを書くと、Managed Memory として各オブジェクトが勝手に管理されていて、安全で便利な構成にはなっている。
んで、この汎用的なManaged Memoryは便利なもののゲーム特化の仕組みではない。
なので、ゲームに適したUnmanaged Memory にしてより効率よく扱おうってのがDOTSの設計の1つになっている。
このUnmanaged Memory に最適化していく流れは、struct への理解も必須になるので、河合さんのstructに関する濃厚な講演スライドもよく理解しておきたい。
Chunkとアーキタイプ
図解で、Chunkの必要性とアーキタイプの概念が分かりやすく理解できた。
ChunkとSystem
んでChunkを用意したら、どのChunkを入力として扱って何かしらの処理を行うかを、Systemとして用意する。
上の「データの流れ」の図が、DOTSによるプログラミングを図示化したフローなので、今後はこのフローを想像しながらプログラム書く必要がありそう。
Unity Physics
DOTSの流れについていった方がいいかもしれない材料の1つとして、Unity Physicsが登場してきた。
特徴の1つである「決定的(deterministic)」は確かに強力で、入力を与えたら出力は必ず同じになるので、自動テストへの道が更に進むことにもなる。
Unity Physicsに対応したほうがUnityアプリのパフォーマンスが上がるようので、今後の選択肢として考慮に入れたほうが良さそう。
ただ、まだまだ突き放してくるようなので、様子見しつつになりそうだけど・・・。
所感
「今はまだ準備段階なのでDOTS使えなくてもok」と講演者も言ってるぐらいなので今すぐ実戦投入しないほうが安全だけど、準備ができたらいつでもいけるようにスタンバっておくのは戦略として有りだと思う。
今までのノウハウそのままで作るのは難しくなるものの、このDOTS環境に適応してきた新世代のゲームたちの方がUnityとの相性的に良いパフォーマンスを出すんだったら、旧世代のゲームたちが駆逐される未来ルートも一応ありうる。
これは酔っ払いの寝言だと思って聞いてほしいんだけど、
— 伊藤周@おなかソフト (@warapuri) September 25, 2019
Unityの進めるDOTSって、全世界的な社会実験だなあとw
頭がいいプログラマの考える「これの方が絶対いい」というパラダイムを
普通のプログラマが実装できるかどうか、という。
スゴイよなあ。ある意味人類の底上げだ。
Unityしかできないw
こういう革命的なビッグウェーブは好きなので、乗っかっていくためにもDOTS自分で勉強しておかねば・・・。
基調講演
とても良かった。
下のサイトでかなり詳しくレポートされているので、ここ見てもらったほうがいいと思う。
UniteTokyo2019とほぼ同じ時期に行われたUniteCopenhagen2019のkeynoteもYoutubeに上がっていたので参考に観てみたら、意外と内容を変えていて驚いた。
Uniteコペンハーゲンのkeynote動画観た。日本のkeynoteの内容とほとんど一緒なのかと予想してたけど、60%ぐらい同じで残り40%くらいは日本向けに内容変えてた感じあるので、両方見てて飽きなかった。個人的にはDOTSの紹介してたlucas meijer氏がテンション高くて面白かった。https://t.co/U9HkDsbmm5
— kidooom (@kidooom) September 27, 2019
見比べた感じだと、日本の方が「HELLO WORLD」のカット再現の紹介を入れてたように、アニメーション制作へのUnity適当を推してる?
何度も何度も申し上げてますが、3DCGアニメが手描きの作画アニメに近づくのは、目的ではなく、単なる手段です。なぜかそれが目的になっている人達がいますが、最終的に目指すべきは両者の良い部分を活用し、新しい映像表現を作ることだと思っています。
— alwei (@aizen76) September 26, 2019
個人的には、Unityがゲーム制作だけに閉じずに「Shape the World」というコンセプトの元に色々できる幅を広げていってくれるのは嬉しい。
1日目の所感
料理
Twitter上でも流れてたように、Unity社の料理提供サービス精神が凄くてUnite中は空腹になることが無かった(自分はバナナとコーヒーをめっちゃ頂きました)。
#UniteTokyo の思い出
— ichijo (@Takaaki_Ichijo) September 27, 2019
・バナナ
・ドーナツ
・コロッケ
・タピオカ
・ホットドッグ
・ゼリー
・カレー
・おにぎり
・だし巻き棒
・ハートランド
・アイス
#UniteTokyo 最新実況です https://t.co/wS0AxDdWdD pic.twitter.com/OagAIYRCTL
— MIRO (@MobileHackerz) September 25, 2019
英語多読の成果ちょっと出てきた疑惑
DAY1で参加した下記の3つは、英語での講演だったので同時通訳レシーバーが配られた。
- "『The Heretic』で学ぶ映像制作テクニック"
- "Unity 映像制作パイプライン完全マスター"
- "基調講演"の一部
最初ちょっと聴いた感じ、分かりやすい英語で話してくれてるのと、Unityの話だから英単語聞くだけでも何となく意味わかった感覚があったので、英語多読の一環であえて通訳無しで聴いたけど割と理解できた。
英語多読の効果が少しは出てきたんじゃないかぁと思って嬉しかった。
モチベ湧いた
最近はマネジメント的なタスク割合も増えてるんだけど、やっぱりUnityとか触っていきたいなと思った。
そのためにも、自分で手を動かして個人制作とかもどんどんやっていかないとなぁというモチベーションがアップしたので、Unite参加して本当に良かった。