パシフィコ横浜にて9月4日から9月6日にかけて開催された「CEDEC 2019」。同カンファレンス開催期間中には、ゲーム業界関係者向けのさまざまなセッションが開かれた。CEDEC 2019のスポンサーであるユニティ・テクノロジーズ・ジャパンも、Unityに関連した複数のセッションを行なっている。今回はそのうち「Unity2019年注目機能まとめ」のセッションの様子をお届けする。
同セッションは、2019年4月にリリースされたUnity 2019.1以降に追加もしくは改善された機能や、現在ベータリリース中のUnity 2019.3の注目ポイントをまとめるもの。登壇したのはユニティ・テクノロジーズ・ジャパンの日本担当ディレクター大前広樹氏と、同社アーティストの京野光平氏だ。
2種類のレンダーパイプライン
まずUnityには、スクリタブルレンダーパイプラインという、プロジェクトごとにスクリプトで描写エンジン自体を自由に設計できる機能が存在する。自社エンジンと同じ表現の自由度が得られる上、エンジンコードの書き換えが不要といったメリットがある。このスクリプタブルレンダーパイプラインには、HDレンダーパイプライン(HDRP)とユニバーサルレンダーパイプライン(旧名:ライトウェイトレンダーパイプライン)という、既成のパイプラインが含まれている(Unity Blog)。
HDRPは現在プレビュー段階で、Unity2019.3から正式に開発使用が可能となる。対応プラットフォームや拡張性はまだ限られているが、リアルタイムレイトレーシングなど最新のテクノロジーに対応しており、物理ベースの絵づくりが飛躍的に良くなるという。またHDRPのポストプロセッシングがパイプラインに組み込まれ、パフォーマンスや精度の向上効果も見込めるとのことだ。そのほかにも、depth-of-field、モーションブラー、カラーグレードツール、露出コントロールなどの改善が予定されている。
一方、ユニバーサルレンダーパイプラインの方は、Unity 2019.1から正式に利用可能となっている。こちらはHDRPとは違い、全プラットフォームで動作可能。カスタマイズのしやすさが特徴となっている。HDRPと同様、Unity2019.3よりポストエフェクトがパイプラインにビルドインされる。ハイエンド用のHDRPと、より多目的に利用できるユニバーサルレンダーパイプライン。開発者のニーズにあわせて、どちらかを選択する流れとなる。
ShaderGraphとVisual Effect Graph
Making video clips for my VFX Graph presentation. pic.twitter.com/hbfIhNKqUZ
— Keijiro Takahashi (@_kzr) August 29, 2019
続いて、レンダーパイプラインとは切っても切れない関係のShader Graphについて説明された。ノードベースでシェーダーが作れるShaderGraphは、Unity 2019.1より上述した2種類のレンダーパイプラインに正式対応している。後述するVisual Effect GraphのサポートもUnity 2019.3から開始される予定だ。ShaderGraphの魅力は、シェーダーをつくれないアーティストでも気軽に触れられること。ちなみに、作成したノードベースのシェーダーをアセットストアで販売することもできる。
Visual Effect Graphは、新しいパーティクルやSFXを作成するためのツール。こちらもUnity 2019.3から正式に利用可能となる。Houdiniとの相性も良く、いろいろな表現が実現できることから大前氏イチオシの機能として紹介されている。HDRPとユニバーサルレンダーパイプラインの両方に対応しているほか、モバイルでも動作する(グラフィックスAPIとしてVulkan/Metalが必要)。まだ確定ではないが、Unity 2019.3の時点でモーションベクター、リボン/トレイル、サブグラフ、スキン度メッシュサンプリングなどが追加される可能性がある。
Visual Effect Graphもノードベースとなっており、アーティストが気軽に使えるとのこと。用途としてはデータのビジュアライズにも応用できると説明されている。なお高橋啓治郎氏(ユニティ・テクノロジーズ・ジャパンのエバンジェリスト。Unity Learning Materialsより関連セッション確認可能)はVisual Effect Graphのビデオを頻繁にツイッター上にあげており、学習にあたってはそれらも参考になるだろうと紹介されている。
2Dワークフロー
プレビュー段階の機能が多かった2Dワークフローについては、Unity 2019.3より各機能が正式リリースされる。2Dライト、2Dアニメーション – スプライトスワップ、2Dレンダリング、2D ShaderGraphマスターノード作成など機能が充実。またUnity 2019.3に向けてPhotoshopワークフローなるものが開発されている。Unityではマルチスプライトのアニメーションが作成できるのだが、このPhotoshopワークフローにより、Photoshopでレイヤーごとにスプライトを置いてつくったファイルをインポートした際、個別のスプライトとして自動でレイヤー分けしてくれるようになる。
Terrain Tools
Unity 2018.3以降はTerrain Toolsの機能が強化されている。Unity 2019.1からは新しいTerrain Tools Packageの提供が開始されており、ブラシおよびTerrainワークフローのストリームライン化に役立つツールが追加。上の公式動画のようにTerrainツールとして使いやすくなっている。Unity 2019.3からはTerrain Corriderで縦穴・横穴がつくれるようにもなる。さらに2020年以降にはプロシージャル系の機能が追加されていく予定だ。
Addressable Asset System
Addressable Asset Systemは、アセットバンドルの生成・運営までを公式でサポートするアセット管理システムである。リソースマネージャプロファイラでのロード画面可視化、オンラインからダウンロードするアセットの単位管理などが行えるもので、ゲーム機やモバイル向けの開発では実質必須の機能が、公式ツールとして正式リリースされる。やや時間は経っているが、詳細についてはUnite 2018 Tokyoでの大前氏の講演が参考になる(SlideShare)。
今後はCloud Buildでアセットバンドルのビルドをサポートするほか、CDN(コンテンツデリバリネットワーク)へのデプロイや配布まで任せられるようなサービスの提供が計画されている。このように、開発においてやや面倒な部分を、Unity側がまとめてサポートするような方向に進んでいる。
AR Foundation
AR FoundationはARアプリの開発にて利用できるフレームワーク。Android/iOSではライブラリが異なるため必要な作業工程が多かったのだが、AR Foundationにより一気通貫してビルドできるようになった。AR Foundationを使用したUnityプロジェクトのサンプルはこちら(GitHub)。
またARアプリ開発にてシーンビューを活用する際には、どうしてもプログラム駆動になりがち。そうならないようにシーンビューを使うためのARオブジェクトを提供することで、より気軽にARアプリがつくれるようになるとも期待されている。フェイストラッキング、2Dイメージトラッキング、ARKitオブジェクト認識、ARKit環境プローブなどが入り、アーティストでも触れやすい。今後はエディターシミュレーションや、フェイストラッキングのエディターリモートサポートが追加されていく予定だ。
Burst Compiler
Unityで高パフォーマンスを出したい場合には、Job Systemによりコードを書くことになるのだが、こちらのパフォーマンスを上げるためのBurst Compilerが正式リリースされている。このBurst CompilerではDeterministic codeが使えるというのも、大きな特徴。Deterministic codeは計算結果を一定にするために使われ、float型計算時の揺らぎを無くしてくれる。ゆえに物理挙動が必ず同じ結果になる。異なるプラットフォーム間でも計算結果は同じ。Deterministic codeを使うとパフォーマンスは多少落ちるが、物理エンジンを動かすときにも使えるレベルであるという。
Profile Analyzer
Profile Analyzerは、複数フレームにまたがる分析、2つのキャプチャーデータの比較分析ができるプロファイラである(参考:Unity Blog)。まだプレビュー段階ではあるが、開発に使っても良いレベルになっているという。なお、これまでUnityのプラファイラは300フレームまでしか記録できなかったのだが、上限が2000フレームにまで上がっている。
Runtime Animation Rigging
こちらもプレビュー段階の機能。アニメーション化されているスケルトンに対して実行時にプロシージャルなモーションをセットアップできるようにするもの。スケルトンのあるキャラクターなどにRig Builderとリグをつけ、リグの制約を決めていくことで使用する。キャラクターのアニメーションとは別途、リグを動かすことでもアニメーションを組めるのが特徴。複雑なアニメーションでもリグのキーフレームは1本だけになるので、アーティストとしても使いやすく、プログラム制御も楽になる。詳細はUnity Blogを参照。
New InputSystem
Unityの公式インプットシステム。Package Managerに含まれるようになったが、まだプレビュー段階であり万全ではない。特徴としては、どのアクションをどのキーに割り当てるかといった設定を、複数のプラットフォームにまたがり行えることが挙げられる。
なおUnityのインプットについては、ゲームと入力のフレームレートが同じになってしまうという問題があるのだが、新しいインプットシステムではセンサーからあがってきたイベントを全部集めて処理するため、ゲームと入力のフレームレートが分離した形で作れるようになるという。
UIElements
Unityエディターの拡張を容易にする新しいAPI。HTML/CSSに近いUXML/USSによりレイアウトやスタイルを決められるようになる。UIElement debuggerというデバッガーも搭載されているほか、Unity 2019.2では高速化を実現しており、従来の方法よりも使いやすい。また、現在はツール作成用のビジュアルツールがないのだが、こちらもUIBuilderとして、Unity 2019.3以降にランタイムのサポートが入る予定となっている。これにより、UIを直感的につくれるようになるという。
Unity Quick Search
Unity 2019.1よりプレビュー状態のUnity Quick Searchは、シーン、プロジェクト、メニュー、その他ドキュメントを統合的に検索できる便利な機能だ。検索結果のドラッグ&ドロップもでき、使い勝手が良い。独自のサーチプロバイダを追加することで検索範囲を広げられるので、たとえばツイッターのサーチにつなげることもできる。
AssetDatabaseV2
アセットインポート用のAssetDatabaseはUnity 2019.3よりバージョン2に変わる。大きく変わる点としては、プロジェクトの中に入っているアセットの、現プラットフォームのコンバートしたデータを複数バージョン持てるようになる。これによりプラットフォーム切り替えが高速化する。
オンデマンドインポート
将来的にUnityのインポートの流れを大きく変えるオンデマンドインポート機能が、実験段階ながら提供されている。現状、プロジェクトデータをバージョン管理システムなどからダウンロードしてUnityのプロジェクトを開くとインポートに時間がかかる。オンデマンドインポートでは、作業を始めたシーンのアセットからオンデマンドでインポートを始めるため、インポートの待ち時間が大幅に短縮される。
パッケージマネージャー
Unityのパッケージマネージャーでは、自分のScoped Registryを登録することができる。つまりパッケージマネージャーを使うことで、自社ツールの配布や、バージョン依存関係の解決が可能となっている。Gitにも対応しており、GitHubにあるツールをインストールしたいときは、URLを入力すればすぐに実行できる。今後もこうした一元化の流れは進み、Unity 2019.3からは、アセットストアで購入したアセットもパッケージマネージャーで管理できるようになるとのことだ。
このように今回のセッションでは多岐に渡る機能が紹介された。その中でもUnity 2019に移ったら最初に触れてほしい機能として大前氏が挙げたのは、Visual Effect Graph。そのほかShaderGraphにも触れておくと、アーティストができる範囲が広がるだろうと強調している。そうしたアーティストに寄り添う機能拡充と、Addressable Asset Systemを筆頭とした開発者の手間を緩和するための公式ツール提供。これらがUnity 2019にて注目すべき傾向と言えるだろう。