5.1K Views
July 18, 19
スライド概要
GTMF2019の講演資料を公開します。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Unreal Engine 4の2019年上半期 アップデート情報まとめ Epic Games Japan Support Engineer : 澤田 祐太朗
自己紹介 Epic Games Japan サポートエンジニア 澤田 祐太朗 主にコンソールやレンダリング周りを中心に開発のサポート #UE4 | @UNREALENGINE
Unreal Engine 4 #UE4 | @UNREALENGINE
Unreal Engine 4 Unreal Engine 4 は統合ゲーム開発環境 レンダリング アニメーション オーディオ エフェクト プログラミング #UE4 | @UNREALENGINE Unreal Engine
Unreal Engine 4のソースコードについて 規約に同意して頂き登録を行うとフルソースコードにアクセス可能 開発の最新ストリームを Githubにて公開 https://www.unrealengine.com/ja/ue4-on-github #UE4 | @UNREALENGINE
開発環境 C++かBlueprint #UE4 | @UNREALENGINE
様々な環境に向けてアウトプットが可能 PC Unreal Engine コンソール モバイル #UE4 | @UNREALENGINE
Unreal Studio #UE4 | @UNREALENGINE
Python/Blueprintによる自動化講演 #UE4 | @UNREALENGINE
Unreal Engine 4の 最新アップデート情報について #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
4.22 #UE4 | @UNREALENGINE
“Troll’ from Goodbye Kansas and Deep Forest Films ● ブースにてリアルタイム実行 のデモを展示 興味のある方はぜひブースへ #UE4 | @UNREALENGINE
リアルタイムレイトレーシング動作環境 ---Early Access--- ● 現状必要な環境 ● Windows 10 October 2018 Update適応済みのWindows PC ● DXRをサポートしたNvidiaのGPU #UE4 | @UNREALENGINE
リアルタイムレイトレーシング設定 ● 必要な設定(1) ● Project Settings > Platforms >Windows Default RHI をDirectX12に設定 ● Project Settings > Engine > Rendering Ray Tracingを有効化 #UE4 | @UNREALENGINE ---Early Access---
リアルタイムレイトレーシング設定 ---Early Access--- ● 必要な設定(2) ● Project Settings > Engine > Rendering Support Compute Skincacheを有効化 https://www.slideshare.net/EpicGamesJapan/ cedec2018-ue4-111104578 #UE4 | @UNREALENGINE
リアルタイムレイトレーシングの動作 ---Early Access--- ● 各種設定後再起動すると有効化 ● 代表的な効果として Reflectionが綺麗に ● パストレースや Debug機能がViewport オプションから選択可能 #UE4 | @UNREALENGINE
UE4 Ray Tracing Night @ Tokyo https://connpass.com/event/125250/ #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
レンダリングの最適化 ● Mesh Drawing Pipelineの改善 ● 基本的な考え方はメッシュ描画のコマンド(描画に必要な設定情報)をキャッシュし、 効率的に使用したり、コマンドをマージすることでDraw Callを削減
レンダリングの4.21と4.22の比較 ● UE4.21と4.22で Sequencerサンプルで検証 #UE4 | @UNREALENGINE
レンダリングの4.21と4.22の比較 (Stat SceneRendering) UE4.21 UE4.22 Mesh draw calls : 470 Mesh draw calls : 204 半分以下に #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
C++ イテレーション高速化 ● Molecular Matters の Live++ライセンスを取得し、 新しい ライブ コーディング 機能(実験的機能)として統合 ● UnrealBuildTool と UnrealHeaderTool が最適化され、 C++ のイテレーション時間が最大 3 倍高速に #UE4 | @UNREALENGINE
ライブコーディング(Live++) ---Experimental--- ● Editor Preferences > Live Coding > Enable Live Codingを有効化 基本的な使用方法 ● VS側でファイルを保存し Ctrl+Alt+F11 #UE4 | @UNREALENGINE
Live++例 ---Experimental--- ● Game側の実装でMyActorを作成 ● TickでStatic変数tempNumをひたすらインクリメント LOGを出力 #UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
実行できるようになるまでの時間比較 ---Experimental--- Hot Reload 7.53 sec Live++ 5.09 sec ● 上記は何度かタイマーで計測して平均した、およその時間 ● これまでの機能であるHotReloadよりも速い ● Live++の場合実行中でも変更可能なメリットも #UE4 | @UNREALENGINE
Live++のオプションの注意点 ---Experimental--- ● Engine側のモジュールやPluginのコードを含めると動作が不安定に #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
アニメーション周りの最適化 ● Skeletal Mesh Reduction ● Animation Budget Allocator #UE4 | @UNREALENGINE
Skeletal Mesh Reduction #UE4 | @UNREALENGINE
Skeletal Mesh Reduction [4.22-] ● 4.22からSkeletal MeshのReductionに対応 ● 従来はStatic Mesh(ボーン等が入っていないメッシュ)のみの対応 LOD0 41052 triangles LOD1 20524 triangles LOD2 10262 triangles LOD3 4104 triangles LOD4 2052 triangles
Skeletal Mesh Reduction [4.22-] ● LOD Settings -> Number of LODsでLODの数を設定
Skeletal Mesh Reduction [4.22-] ● LOD Pickerから調整したいLODを指定し設定項目を表示 ・Screen Size ・描画領域がこの割合になった時に 該当LODを描画 ・Bones to Prioritize ・リダクション時に プライオリティを上げたいBoneを設定 ・Weight Of Prioritization ・プライオリティ(品質)を保持する割合 ・Bones to Remove ・Skeletonから参照するボーンを 削除するリスト
Skeletal Mesh Reduction [4.22-] ● LOD Info内のReduction Settingsを展開 ・Termination Criterion ・リダクションの基準とするもの ・Percent Of Triangles ・どのぐらいの割合で基準となるものを 減らすか ・Max Bones Influence ・影響させるボーンの数 ・Lock Mesh Edges ・メッシュの端のトポロジを保つ
Lock Mesh Edges LOD0 6040 triangles LOD1 2030 triangles (Enable Lock Mesh Edge) LOD1 2030 triangles (Disable Lock Mesh Edge)
LODの設定について [4.22-] ● 以前はPlatformグループ毎の設定でしたが、(PC、Console、Mobile) 4.22からPlatformごとにMinLOD(最低のLOD)を設定できるように ● 不要なLODモデルをパッケージに 含まないようにするためには、 以下の設定が必要 ”r.SkeletalMesh.StripMinLodDataDuringCooking 1”
アセットリダクションについて Static Meshに関してやアセットのコンソール向け最適化に関する情報は 過去の勉強会で公開を行った資料で紹介しています。 https://www.slideshare.net/EpicGamesJapan/fortnite-97791917 https://www.slideshare.net/EpicGamesJapan/ue4-95238296
Animation Budget Allocator #UE4 | @UNREALENGINE
Animation Budget Allocator[4.22] ---Experimental--- Skeletal Mesh ComponentのTick制御を動的に制限する機能 プラットフォームごとに(ゲームスレッドでの時間配分)を決めて その時間の中で実行を行う 以下のような処理を切り替える、 ・Tick処理を止める、 ・Master Pose Componentに切り替える ・アップデートの間の処理を補完、 または補完しない
Animation Budget Allocator ● Pluginの有効化 ● Skeletal Mesh Componentの置き換え ● Animation Budgetの有効化 ● Significanceの定義(関数設定)
Pluginの有効化 [Plugins]->[Programming]->[Animation Budget Allocator]
Animation Budgetの有効化 ● Game ModeなどでEnable Animation Budgetノードを実行 ● 全体を管理するAnimation Budget Allocatorを作成 ● a.Budget.Enabled 1を設定し有効化 ● 制御を行うためのフラグ
Skeletal Mesh Component Budgetedの置き換え ● Animation Budget Allocator登録したいSkeletal Meshを Skeletal Mesh Component Budgetedに置き換える Pluginに含まれているコンポーネントです
Skeletal Mesh Component Budgetedについて ● このコンポーネントでは、Animation Budget Allocatorに 自分自身を登録したり、解除を行う こちらを参考に独自のSkeletal Mesh Componentを 作成してもよいかと思います
Significanceの定義(関数設定) ● どのアニメーションが重要か、定義を行う。 ● デフォルトだとAllocatorへの登録順 ● 定義されているDelegateに関数を設定し、 Skeletal Mesh Component Budgeted内の以下フラグを有効化する
Significance関数のサンプル
● Player(カメラ)近くのアニメーションを重要度が高い、とするサンプル
float FAnimationBudgetAllocator::SignificanceFunction(USkeletalMeshComponentBudgeted* InComponent)
{
FVector ComponantLocation = InComponent->GetOwner()->GetActorLocation();
if (InComponent->GetOwner()->GetWorld())
{
APlayerController* CurrentPlayerController = InComponent->GetOwner()->GetWorld()>GetFirstPlayerController();
if (CurrentPlayerController)
{
// プレイヤー近くのSignificanceを上げる
return - (ComponantLocation - CurrentPlayerController->PlayerCameraManager>GetCameraLocation()).Size();
}
}
return 0.0f;
}
DelegateにSignificance関数を設定 ● SetEnabledなどで重要度の(Significance)関数を設定する
Animation Budget Allocator主要なパラメータ ● a.Budget.MaxTickRate ● 許容最大TickRate(フレーム単位)。これが設定されていると、予算を超える可能性があります が、個々アニメーションのクオリティを保つことができます。(デフォルト:10) ● a.Budget.BudgetMs ● 登録されているSkeletal MeshのTick時間の予算。Default 1ms
a.Budget.BudgetMsの比較 制限なし a.Budget.BudgetMs 1 Skeletal Mesh 100体のAnimation付きSkeletalMeshをSpawn
a.Budget.BudgetMsの比較 制限なし a.Budget.BudgetMs 2 Skeletal Mesh 100体のAnimation付きSkeletalMeshをSpawn
Animation Budget Allocatorのデバッグ表示 ドキュメントが誤っており、現状defineで WITH_TICK_DEBUG 1 に設定するとDebug表示 .¥release-4.22¥Engine¥Plugins¥Runtime¥AnimationBudgetAllocator¥Source¥AnimationBudgetAllocator¥Private¥AnimationBudgetAllocator.h
Animation Budget Allocator まとめ ● 現在Early Accessの機能 ● 大量のキャラクターを表示させたい時 ● Tickを減らせるのでGame Threadに対して有効 ● Skeletal Mesh Reductionsや、 Dynamic Resolution と組み合わせると効果的
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
Audio Systemに関する改善 ● New Audio Engineについて ● Time Synthについて ● Sound Concurrency のレイヤー化 ● Sound アセットインポート機能の改善 #UE4 | @UNREALENGINE
New Audio Engineについて Audio Device Audio New Audio Engine Audio Mixer ● 4.22で当初New Audio EngineがデフォルトになるとPreview版の告知には書かれていましたが、 リリース版でのデフォルトは従来通りとなっています #UE4 | @UNREALENGINE
Audio Systemの指定方法について LoadModule True AudioMixer ModuleName LoadModule UseAudioMixer False Configの[Audio]のUseAudioMixer または、起動時の-AudioMixer引数 ● AudioDeviceModuleNameとAudioMixerModuleNameは WindowsEngine.ini等Configで設定 ● au.IsUsingAudioMixer ?で現在の設定を確認 #UE4 | @UNREALENGINE False AudioDevice ModuleName
UseAudioMixerについて ● 新規プロジェクトでUseAudioMixerをTrueにするConfigを自動で追加する仕組みが導入 ● bUseAudioMixerForAllPlatformsはデフォルト無効化されているのでこれをTrueにするか または、AudioMixerEnabledPlatFormsのArrayに対応したいプラットフォームを追加 #UE4 | @UNREALENGINE
Time Synthについて ● 音声クリップをサンプルベースで正確な位置で開始、停止、連結を提供する ことに重点を置いた、新しいオーディオ コンポーネント #UE4 | @UNREALENGINE
Time Synth Pluginの有効化 ● Plugin > Audio > Time Synthを有効化し再起動 #UE4 | @UNREALENGINE
Time Synthのセットアップ ● ActorなどにTime Synth Componentを追加してQuantization Settingsを設定 Time Synth Componentの役割 Audio Threadで再生しているサウンドの タイミングを管理し、Eventを発生させる Quantization Settings Beats Per Minute(BPM) : 1分間の拍子 Beats Per Bar : 1小節何拍子か Beat Division : 1拍子の分割数 Global Quantization :Globalでのタイミング ※Event Delay Secondsに関しては現状未実装 #UE4 | @UNREALENGINE
Time Synthで再生するサウンドについて ● Content Browserの右クリックから Sound > Time Synth Clipを作成 作成したTime Synth Clipを開きSound Waveを登録 #UE4 | @UNREALENGINE
Time Synthで再生するサウンドについて Sound Waveを登録後、Clip Durationからサウンドファイルの長さを指定 #UE4 | @UNREALENGINE
Time Synth ComponentにEventを設定 ● Add Quantization Event Delegateによってイベントを追加 以下例では、1小節、1拍子ごとにイベントを呼ぶように設定 #UE4 | @UNREALENGINE
Time Synth Componentの実行 ● この状態で実行すると、 それぞれ同期した状態でイベントが呼ばれる イベント上で別のClipを再生したり Clipを停止することでリズムに合った サウンドの再生が可能となる イベントでは現在の小節や拍子の番号を取得可能 #UE4 | @UNREALENGINE
Sound Concurrency のレイヤー化 #UE4 | @UNREALENGINE
Sound Concurrency のレイヤー化 ● Sound Concurrencyはサウンドの並列再生に関する設定 ● AudioComponent、SoundBase、SynthComponentに対して複数設定が可能に Max Count:同時再生数 Resolution Rule: 同時再生数を超えた場合の挙動定義 複数設定した場合... Resolution Rule が同時に 実行されるため注意 #UE4 | @UNREALENGINE
Sound Concurrency のレイヤー化 ● 複数条件により評価処理が複雑になっているため 詳しく確認したい場合はEvaluteConcurrency関数を参照 .¥release-4.22¥Engine¥Source¥Runtime¥Engine¥Private¥SoundConcurrency.cpp #UE4 | @UNREALENGINE
Sound アセットインポート機能の改善 #UE4 | @UNREALENGINE
Sound アセットインポート機能の改善 ● これまで対応していたWAVファイルに加えて 「AIFF」、「FLAC」、「Ogg Vorbis」に対応 設定等は必要なく、Content Browser に ドラッグ&ドロップでインポート可能 #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
その他アップデート ● バーチャル プロダクション パイプラインの改善 ● Hololens リモート ストリーミングのサポート #UE4 | @UNREALENGINE
バーチャル プロダクション パイプラインの改善 Composure によるリアルタイム コンポジットを大幅に強化 ・OpenColorIO (OCIO) カラー プロファイルへの対応 (実験的機能) ・GPUによるビデオ デコード (実験的機能) ・新しい Media I/O フォーマット ・nDisplay の改善 #UE4 | @UNREALENGINE
Hololens リモート ストリーミングのサポート 4.22でHololensのリモートストリーミングをサポート PC側でレンダリング等を行いストリーミング映像がHololens上で表示される 4.23にてHololens 2 へのネイティブ対応を予定 https://www.unrealengine.com/ja/blog/unreal-engine-4-support-for-hololens-2-released-in-earlyaccess?sessionInvalidated=true #UE4 | @UNREALENGINE
Hololens リモート ストリーミングスタートアップ 弊社Axelによるブログ記事でスタートアップガイドを公開 https://qiita.com/EGJ-Axel_Riffard/items/58799a1dd1db0e9e7351 #UE4 | @UNREALENGINE
内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE
UE4 Roadmapについて https://trello.com/b/TTAVI7Ny/ue4-roadmap #UE4 | @UNREALENGINE
4.23 Preview #UE4 | @UNREALENGINE
Unreal Insights #UE4 | @UNREALENGINE
Unreal Insights #UE4 | @UNREALENGINE
Unreal Insights #UE4 | @UNREALENGINE
Unreal Insights #UE4 | @UNREALENGINE
Unreal Insights ¥UE_4.23¥Engine¥Binaries¥Win64¥UnrealInsights.exeを起動しておく #UE4 | @UNREALENGINE
Unreal Insights 起動引数に-cpuprofilertraceの追加が必要(以下例ではStandalone実行の引数に追加) #UE4 | @UNREALENGINE
Unreal Insights ゲーム上で@キーを押し、stat namedevents 1コマンドを実行 #UE4 | @UNREALENGINE
Unreal Insights StatusがLIVEになってることを確認し、Openをクリック #UE4 | @UNREALENGINE
Unreal Insights #UE4 | @UNREALENGINE
Chaos #UE4 | @UNREALENGINE
Chaos Demo ● 4.23でExperimental 公開の予定 #UE4 | @UNREALENGINE
まとめ
まとめ Unreal Engineではゲーム開発をより良くするために 日々開発を進めております
告知
Unreal Academy #UE4 | @UNREALENGINE
CEDEC2019 #UE4 | @UNREALENGINE 2019年9月4日(水)~6日(金)
Unreal Fest East 2019 2019 / 10 / 6 パシフィコ横浜 #UE4 | @UNREALENGINE