8.1K Views
December 25, 17
スライド概要
Unityでゲームを作る過程で、アセットの設定変更やPrefabの構築、任意のオブジェクト処理などに多くの時間を取られます。そこでエディター拡張による自動化が活躍する訳ですが、専用のスクリプトを構築する必要が出てきたりと、正直面倒・・・そんな不満をお持ちの皆さん向けに、Unity(公式)の開発した汎用アセット操作ツールAsset Graphの使い方やTipsを紹介します!
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
1 山村 達彦 Made with Unity : ADAM AssetGraph 入門
2
予定 ● 前半 ○ Asset Graphの紹介 ○ AssetGraphの機能 ● 後半 ○ デモ(AssetBundleを作る) ○ デモ(設定の変更を作る) ○ デモ(Prefabのセットアップ) 3
AssetGraphって なんぞや? 4
5
アセットのフローを改善するもの ● アセットの操作に特化したシステム ● 手作業のオペレーションを削減する ● 汎用的なノードの組み合わせで複雑な設定を表現 ● C#で容易に拡張が可能 ● 大量のファイル操作に強い 6
アセットの一括生成。 アセットの一括更新。 アセットの一括バンドル化。 グラフィカルに。 7
なんでそんなモンが必 要に? 8
9
10
11
12
A社 B社 C社 13
「TextureからPrefab作る拡張、作れる?」 「お任せあれ」 「この前のアレなんだけど、 ちょっと設定を変えれる?」 「反応無いけど大丈夫? 出来たら連絡ヨロ」 「おーい?」 14
拡張作るはプログラマ? 動作の修正にはプログラマが必要、 もしくは どんな設定にも対応できるような汎用的な実装が必要(大 変) 15
16
● アセット操作をコーディング無しに作成できる。 ノードを作って接続していくだけで、必要なアセットを作成できる ● ビルドするときに、何が起こるのかがわかる グラフィカルに確認できる ● ルールベースでパイプラインを構築できる 名前やパスといったルールで動作を定義できる 17
ちなみに・・・ 18
2年前・・・ 19
AssetBundle Browser AssetBundle Graph Tool AssetBundle Manager 20
21
暗黙的なアセット参照の問題 複雑なアセット管理の面倒さ AssetBundle Browser AssetBundle Graph Tool アセットの登録や依存関係を 視覚的に制御・確認できる AssetBundleの生成を ルールベースで一括処理する 22
「このツールでPrefabとか作りたいんだけど、どうやるん?」 23
! 24
「ABGTでPrefabとかも作れたら便利だな」 「もういっそアセット制御全般に使おうぜ」 「それ、最早 ”AssetBundle” Graph Toolじゃなくね?」 「おk、名前を変えよう」 「Asset Flow Special Graph Toolとかどうよ?」 「ダサい」 「長い」 「臭い」 25
26 Made with Unity : ADAM Asset Graph Tool
Asset Graph Toolの立ち位置 ● オープンソースで展開(Github、Bitbacket) 27
Asset Graph Toolの立ち位置 ● オープンソースで展開(Github、Bitbacket) ● 標準ツールとしてPackman経由で配信予定 Navmesh PostProcessingStack UGUI SRP Unity Package Manager 28
Asset Graph Toolの立ち位置 ● オープンソースで展開(Github、Bitbacket) ● 標準ツールとしてPackman経由で配信予定 ● 作ってるのは日本人 今なら要望には割と答えられるかもしれない We need feedback 29
Asset Graph Toolの立ち位置 ● オープンソースで展開(Github、Bitbacket) ● 標準ツールとしてPackman経由で配信予定 ● 作ってるのは日本人 今なら要望には割と答えられるかもしれない ● 別口の手動ワークフローとして Preset も出る 30
AssetGraphには、 どんな機能があるの? どうやって使うの? 31
機能概要 ● ノードを繋いで処理を行う ● 処理の内容を確認できる ● アセットを監視し、変化したら処理を行う ● 複数のグラフを複数プラットフォーム向けにバッチ処理できる 32
ノードを繋いで処理を行う 33
34
見つける 操作対象を 決める 絞り込む 何かする 抽出する アセットを作る まとめる 設定を書き換える ビルドする 35
見つける スプライトフォ ルダから 絞り込む 何かする Textureを 抽出する 名前を元に まとめる 36 アニメーションを作る
uWalk (01~14) Walk uRun (01~18) Run uBrake (01~18) Brake 37
見つける 絞り込む 何かする u* Breake uWalk (01~14) Run Brake Walk Run uRun (01~18) Brake uBrake (01~18) 38
見つける 絞り込む 何かする u* Breake uWalk (01~14) uRun (01~18) uBrake (01~18) Idle (01~6) Attack (01~6) Run Brake Idle Attack Walk Run Brake Idle Attack 39
40
見つける 操作対象を 決める 絞り込む 何かする 抽出する アセットを作る まとめる 設定を書き換える ビルドする 41
アセットを作る 設定を書き換える ビルドする 42
アセットを作る 設定を書き換える ビルドする 43
アセットを作る 設定を書き換える ビルドする 44
DEMO 45
アセットを変更したらPrefabにも反映 46
操作対象を 決めるノード 47
Textureをインポートして スプライト作って Prefabを作る 48
処理の内容を確認する 49
基本な流れ(処理を確認する) ちゃんと 抽出できる? スプライトフォ ルダから ちゃんと グループ化 できた? 設定は 正しい? Textureを 抽出する 名前を元に まとめる 50 アニメーションを作る
51
処理したアセット 一覧表示 52
何か設定がおかしい アセットがある… 操作したノードをハ イライト ログで確認 53
54
各プラットフォーム向けにバッチ処理 55
バッチ処理 Prefab設定のグラフ Sprite構築のグラフ AssetBundleビルドのグラフ 56
グラフを登録して、 処理を実行する 57
ドラッグ&ドロップ 58
ビルドしたい プラットフォームを 指定 59
$> sh -e buildassetbundle.sh -target WebGL MyGraphNameToRun 60
機能概要 ● ノードを繋いで処理を行う ● 処理の内容を確認できる ● アセットを監視し、変化したら処理を行う ● 複数のグラフを複数プラットフォーム向けにバッチ処理できる 61
62
Asset Graphの拡張 63
● ● ● ● ● ● IModifier IPostprocess IFilter IAssetGenerator IPrefabBuilder IAssetImporterConfigurator 64
65
66
67
68
69
70
71
72 Made with Unity : ADAM 後半に続く
実際に使ってみる (AssetBundleを作る) 73
実際に使ってみる (設定の変更) 74
実際に使ってみる (Prefabのセットアップ) 75
76 Made with Unity : Generative Art まとめ
まとめ ● AssetGraphはノードベースで一括操作するときに便利な機能 ● なんか一括処理とかするやつはコレ使って楽しよう(提案 ● ノードは割と簡単に拡張できる ● 将来的には標準化する予定 ● 求む現場のフィードバック 77
78
79 Made with Unity : Monument Valley 2 by ustwo Games Thank you