Top > UNREAL FEST 2016 OSAKA
#contents ---- * 概要 [#x5bb8da2] https://atnd.org/events/76761 * 資料 [#wae119cc] - 動画 -- はじめてのAI〜 愛のあるAIを作ろう https://www.youtube.com/watch?v=gT8uuc0DxWk -- スクウェア・エニックスにおける UNREAL ENGINE 4 を用いた人工知能技術の開発事例 https://www.youtube.com/watch?v=BV2GTGbSjq8 -- Kiteの少年と学ぶUE4.11の新シェーダ https://www.youtube.com/watch?v=hZPGEwpg6qw -- Realtime Cinematic Future: シーケンサーの登場 https://www.youtube.com/watch?v=7ktZSKTRno0 - はじめてのAI〜 愛のあるAIを作ろう http://www.slideshare.net/masahikonakamura50/ai-ai-62023284 * 纏め記事 [#ocac2134] - togetter http://togetter.com/li/975139 - ゲームエフェクトデザイナーのブログ (新) -- 「Technical Art of STREET FIGHTER V」レポート : http://effect.hatenablog.com/entry/2016/05/14/230254 -- 「VR×ロボ×美少女! UE4におけるVR向けの絵作りと最適化」レポート : http://effect.hatenablog.com/entry/2016/05/14/233840 - YuukiOgino -- 【UNREAL FEST 2016 OSAKA】 Technical Art of STREET FIGHTER V メモ http://qiita.com/YuukiOgino/items/0e326676ea67bf549ec8 -- 【UNREAL FEST 2016 OSAKA】 VR×ロボ×美少女! UE4におけるVR向けの絵作りと最適化 メモ http://qiita.com/YuukiOgino/items/3aa3f346d3d591b4ec7e - Let's Enjoy Unreal Engine -- アンリアルフェス大阪とヒストリアUE4京都勉強会に参加しました http://unrealengine.hatenablog.com/entry/2016/05/16/220000 * Technical Art of Street Fighter V [#j602f59e] ** 目標 [#p77dd766] *** 高い視認性 [#g58795d7] ハッキリしたシルエット(強そう、痛そう) 表情も大げさ →ゲーム状況をプレイヤーにフィードバックする記号 *** 個性的な絵作り [#uc9bb085] 世界のタイトルと差別化。埋もれないためのNPR ** 実現手法 [#u965c3f0] UE4.7.6を使用している。 *** キャラクター [#t34ea0c3] ライトベクトルとポリゴン法線の内積に一工夫 →UE4はライトベクトルを使って計算していない BPでライトベクトルを使って、マテリアルを使用してみた →今世代ではライトが多い、LightProbeも多い。 →使わない 実際のマテリアル。 - Normalはテクスチャそのまま - ベースカラー。良くあるカラーエディット。 →特殊なことをしていない - タッチの再現 -- ノーマルマップに筆のタッチの再現。2Dベースの再現。 -- ストリートファイター4:ちりめん皺 -- 5ではノーマルマップの解像度が大きくなってフィルターが乗りづらい →タンジェントスペースをオブジェクトスペースに変換してフィルターをかける。 「SNAPart」でフィルターをかけた(※これ? http://www.pandashop.jp/a/special-price/snap-art-4 ) フィルターの荒さを4段階作成して、テクスチャの部位毎に フィルタが細かい→情報量が多い→視線を誘導できる。 - エッジ・色境界の協調 - 色、彩度のコントロール *** 背景 [#l02b5105] ドット絵時代。背景の奥行きを出すために ヒストグラムを出しても暗部しかない - Multi Color Grading 複数のLUTを使用できるように。最大4枚。横2枚奥行き2枚。 ポストプロセスマテリアルで実装。 *** カメラ [#s587faf8] 端に行くと歪む →コリジョンが分かりにくくなる - Fix Projection カメラの歪みを逆に計算して、キャラクターの頂点に適用する。 完全に適用すると立体感が無くなるので、0.5くらい *** ポストエフェクト [#xbb0a60a] エッジの強調 RGBの差がはっきりしたところにエッジを乗せる 左右に任意のピクセルをずらしたバッファを用意。 -n移動と、+n移動して-1して反転した画像を加算。これを上方向にも行いそれぞれを加算。 アウトラインを表示するだけでなく、ノーマルマップと合わせて、タッチに滲みを与える *** ライティング [#za637366] 関節光の協調 + 背景のライト。SkyLight, Static Light + キャラライト。ステーショナリー。キャラクターを強調。2〜3灯。 + 間接光。Indirect Lighting Cache/Enlihten。キャラクターにほしい影色を適用。 (※Enlightenはこれ? : http://3dnchu.com/archives/rt-gi-with-enlighten-and-ue4/ ) ** 質疑応答 [#o46f9424] Q. FixProjectionでVertexShaderで表示をずらすとコリジョンずれるのでは? A. 格闘ゲームは特殊。そもそもコリジョンと表示は別々。コリジョンは2Dベース。なのであまり影響がない。 Q. カラーグレーディング、どの段階で掛けてる? A. BeforeTranslucency。トーンマップを行う前なので調整難しい。 更にこの後、UE4標準のカラーグレーディングがかかることもある。 Q. FixProjectionをコードでやった理由。 A. 当時UE4のバージョンが若かった。マテリアル関数でやるとなんか重かったので、コードで実装した。そのまま引き続き。 Q. UE4を使ってネックになった部分 A. 一杯ある。物理が弱いので試行錯誤した。 物理はストリートファイター4が綺麗。物理のLimitが決めれるけど、UE4はぶっ飛ばす。言う事効かない。 Q. 必殺技とかのエフェクト周りで何か工夫しているか。波打ってるやつとか。 A. Maya上でFluidで作ったのをメッシュ化してる。骨入れてる。追従させてる。ちょっとデータ見つからない。 * はじめてのAI〜 愛のあるAIを作ろう [#vad4105d] ** AI Components [#k02dd98e] - Pawn Senging 感覚を与える。視覚と聴覚を与えて、範囲内にいるアクターを自動的に検知できるようになる。 -- OnSeePawn:見えた -- OnHearNoise:聞こえた - Pawn Noise Emitter -- Make Noise:AI用の音を発生させる。実際に音は鳴らない。 -- OnHearNoise:聞こえた - AI Perception 知覚で検知。 オリジナルの感覚クラスを作成可能。 ドキュメントが無い。 -- AI Sight Config:敵、味方を分けたり。 - AI Perception Stimuli Source ** EQS [#geefe991] EQS Testing Pawnを配置するとスコアを可視化できる。 まだ実験的機能なのでプロジェクト設定が必要。 ** ゲームプレイデバッガー [#x16d9e04] プレイ中にシングルクォーテーション?を押すと出る。 まだ実験的機能なのでプロジェクト設定が必要。 * スクウェア・エニックスにおける UNREAL ENGINE 4 を用いた人工知能技術の開発事例 [#x1dfe05b] ** 大阪スタジオのAIの取り組み [#o95d9bb9] 新しいゲームプレイをする為に技術を選定する。その逆ではない。 *** AI現代化アプローチ [#y15a4454] - 有限状態マシン(FSM)からビヘイビアツリーに -- 保守性 -- シンプルさ(同じ仕組みで100体以上のキャラクターを作れる) -- 柔軟さ(ラピッド・イテレーション) -- UE4のデバッグツールが優秀 - 古典的な位置選択からEQSに ** ブループリント上のAIツール [#abd029e7] *** AIプロトタイピングの問題 [#l5b2b3f5] -- モデルが完成する前に敵と味方のBTを構築する -- レベルが完成する前にBTを。 -- BSP等で構築すると時間かかる - 解決 -- AIテストキャラクター -- BPベースの自動生成部屋 -- StaticMeshKit --- (→モジュラーアセットの事?) *** AIの自動テスト環境 [#k971936b] - QAスタッフ不足 - 新しいAI機能の追加 - 手動テストだと時間がかかりすぎる - ソリューション -- 自動システムテスト環境 -- 再現可能なテスト環境→修正して再テスト可能 -- テストの成功/失敗を完全にカスタマイズできる -- ログ、時間の遅延コントロールなど AIが意図通りに到達しなければ、画面にランプを表示してPG以外でも分かりやすいように AI毎に環境ボックスを用意して、ワールドに一杯配置。一斉にテストを走らせる? ** AI開発オーバービュー [#y96bf47a] + ビヘイビアツリー + EQS -- 攻撃選択 -- 移動選択 -- EQS Based Behaivior + データドリブンの移動/攻撃 - キャラクターAIはプログラマーとデザイナーで構築 *** ビヘイビアツリー [#abd1c9eb] - FSM:ステートを遷移する条件をそれぞれのアクションに記述していく。 -- どういう風に防御ステートに入るかを各アクションに記述する必要がある。 - BT:ROOTから全部流れている。アクションに入る条件を記述する。 大きくなればなるほどビヘイビアツリーの方が分かりやすくなる。 *** 再利用できるビヘイビアアセット [#ze7a566f] - キャラクター特有のアセットを使わない。 -- そのモーションを持っていないキャラクターがそのビヘイビアを使えなくなる。 -- データドリブンの移動とアクションが必要 - どんなキャラクターにも再利用可能 - データドリブン -- 歩く、飛ぶとかをデータ化しておく事で共通のビヘイビアが動かせる *** EQS [#y3133c7b] - 古典的だと -- 隠れる位置等を事前計算していた --- 動的な地形を扱えない -- レイキャストでの地形判定なので、複雑な地形はできない *** コードドリブンからデータドリブン [#fb499d6d] -- パラメーター化された攻撃=コピー&ペーストを減らす -- 汎用的なビヘイビアを構築可能に -- 移動も。歩き、飛ぶなどをデータに。 ** ビヘイビアツリーとEQSの融合・拡張 [#c3ede44a] *** EQSに基づいた動的な振る舞い [#k0fd2915] + Service: ターゲットを更新 + Service: 目的地を更新[EQS] + Task: 目的地に移動 EQSクエリを切り替えるだけで振る舞いを変更できる。 - プレイヤーを囲む - カメラに映る ** ユーティリティ・システムのAI [#mfa38417] - Utility System -- ファジーな意思決定。 -- 変更に適用。 -- 理解しにくい そのアクションを終えてからの経過時間(横軸)と行動力(縦軸)のグラフでどれが最適か 誰を攻撃するべきか等に *** EQSに基づいたメタAI [#df523601] キャラクターの無いAI 複数体の中で、だれが攻撃するべきか - AI Battle Director EQSで誰が一番攻撃するのが面白いか。を計算。それぞれの個体に投げる。 (※チーム管理AI) * VR×ロボ×美少女! UE4におけるVR向けの絵作りと最適化 [#u5114967] UE4.10で製作 ワークフローの中心はマチネ ** VRの没入感を高めるために [#baaea9c1] 背景はPBRでキャラクターはアニメ的なシェーディング - 疑似ライティング -- 光源の角度と法線から疑似的に光の影響を表現 -- カーブアセットで光源の角度や光の色を時間で変動 -- 肌や髪はPBRを使用していない - 目線をプレイヤーに追従 -- two bone IKで実現 -- 常時向けるのではなく、演出に合わせてブレンド率を切り替えて自然な目線 - 画面中央にレティクル(VRの視線ターゲット)に動きが無く、視認性が悪くて機能していない -- レティクルの追従に僅かなディレイをいれた。カメラの後を追う感じ - 自機の全身速度が速すぎてうまく敵に当たらない。 -- 速度が400km/hくらい -- 進行方向の補正 -- 少しだけホーミング(Pojectile Movement Component) - 頭を左右に動かしてミサイルを避けるのが難しい。 -- ミサイルの速度を下げても危機感が無くなる -- ミサイルが近づいたらスローモーションに。(Set Global Time Dilation)視界の色も変えて危険を知らせる。 ** 最適化 [#f037b6f2] 非VR状態で40FPS。これを90FPSに。 - プロファイリング + stat unit + CPUプロファイラ + GPUプロファイラ -- シェーダーの複雑度。大まかなボトルネックの目安。 - CPU負荷を減らす -- ForEachLoop等のArrayElementsの取得を純粋関数を非純粋に。 -- 意味がなかったもの --- ベクトル長の比較でLengthSquaredを使用 --- 引数を参照にしてコピーコストを減らす -- ガベージコレクトタイミングで処理負荷が上がるので、ある程度下げないといけない。- GPU負荷を減らすカリング -- 自前の軽量--- カメラから一定の距離と角度は表示やアニメーションの計算を切る。 -- プリレンダ向けのメッシュのリダクション --- 輸送機:80万*6 → 8万 --- 味方:35万*11 → 15万 --- 敵:20万*たくさん → 6万 --- 味方機が沢山出るのはビルボードに -- アニメーションの計算負荷を抑える --- アニメーション必要がないメッシュはStaticMeshに --- アニメーションするメッシュも必要部分のみ。SkeltalMeshtoStaticMeshの併用。 -- マテリアルのブレンドモードの最適化 --- Deferred Renderingが半透明オブジェクトとは相性が悪い --- 木の重なりが多く、Maskでも重い。→Maskを使わず、ポリゴンで形状を表現。 -- ダイナミックシャドウの調整 --- 近いアクターはCastShadowをON、一定距離以上はOFFに。 * Kiteの少年と学ぶUE4.11の新シェーダ [#xaf9048b] - Shading Modelを変更=レンダリング計算式の変更 ** Eye Shading Model [#ha5ba2d8] Iris - 虹彩 + 眼球全体のSSS + 角膜から虹彩に落ちるコースティクス ** Hair Shading Model [#qd076801] - Scatter - 0.15〜0.5がベスト。 - Backlit, TangentOutputは未使用。廃止予定。 - 髪のSubsurface Shadingを簡易的に計算 - Maskedなのでディザを使用すること。 -- FXAAを使うとノイジーになる * Realtime Cinematic Future: シーケンサーの登場 [#ie90d797] - ショット -- ドラッグ&ドロップで順番変更とかできる。 - テイク -- 同じショットを複製して細かいパターンを作れる。撮影のTakeと一緒、撮りなおし的な。 -- Take4が良くなかったので、Take1に戻すなど出来る。 - ゲームプレイのキャラクター等ををシーケンサーに保存できる。 -- それをゲームプレイしたまま再生したりできる。 - ビデオにエクスポートする機能 - Subway Fightでのサンプルは近日 |