Unreal Engine 4の2019年上半期
アップデート情報まとめ
Epic Games Japan
Support Engineer : 澤田 祐太朗
#UE4 | @UNREALENGINE
自己紹介
Epic Games Japan
サポートエンジニア
澤田 祐太朗
主にコンソールやレンダリング周りを中心に開発のサポート
#UE4 | @UNREALENGINE
Unreal Engine 4
#UE4 | @UNREALENGINE
Unreal Engine 4
Unreal Engine 4 は統合ゲーム開発環境
オーディオ
レンダリング
アニメーション
プログラミング
エフェクト
Unreal Engine
#UE4 | @UNREALENGINE
規約に同意して頂き登録を行うとフルソースコードにアクセス可能
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
リアルタイムレイトレーシング動作環境
● 現状必要な環境
● Windows 10 October 2018 Update適応済みのWindows PC
● DXRをサポートしたNvidiaのGPU
---Early Access---
#UE4 | @UNREALENGINE
リアルタイムレイトレーシング設定
---Early Access---
● 必要な設定(1)
● Project Settings > Platforms >Windows
Default RHI をDirectX12に設定
● Project Settings > Engine > Rendering
Ray Tracingを有効化
#UE4 | @UNREALENGINE
リアルタイムレイトレーシング設定
---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
● まとめ
レンダリングの最適化
● Mesh Drawing Pipelineの改善
● 基本的な考え方はメッシュ描画のコマンド(描画に必要な設定情報)をキャッシュし、
効率的に使用したり、コマンドをマージすることでDraw Callを削減
#UE4 | @UNREALENGINE
レンダリングの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++例
● Game側の実装でMyActorを作成
● TickでStatic変数tempNumをひたすらインクリメント
LOGを出力
---Experimental---
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
#UE4 | @UNREALENGINE
実行できるようになるまでの時間比較
Hot Reload 7.53 sec
Live++ 5.09 sec
---Experimental---
● 上記は何度かタイマーで計測して平均した、およその時間
● これまでの機能である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
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
(Disable Lock Mesh Edge)
LOD1
2030 triangles
(Enable 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
#UE4 | @UNREALENGINE
Animation Budget Allocator
Animation Budget Allocator[4.22]
Skeletal Mesh ComponentのTick制御を動的に制限する機能
プラットフォームごとに(ゲームスレッドでの時間配分)を決めて
その時間の中で実行を行う
以下のような処理を切り替える、
・Tick処理を止める、
・Master Pose Componentに切り替える
・アップデートの間の処理を補完、
または補完しない
---Experimental---
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を設定し有効化
● 制御を行うためのフラグ
● Animation Budget Allocator登録したいSkeletal Meshを
Skeletal Mesh Component Budgetedに置き換える
Skeletal Mesh Component Budgetedの置き換え
Pluginに含まれているコンポーネントです
● このコンポーネントでは、Animation Budget Allocatorに
自分自身を登録したり、解除を行う
Skeletal Mesh Component Budgetedについて
こちらを参考に独自のSkeletal Mesh Componentを
作成してもよいかと思います
● どのアニメーションが重要か、定義を行う。
● デフォルトだとAllocatorへの登録順
● 定義されているDelegateに関数を設定し、
Skeletal Mesh Component Budgeted内の以下フラグを有効化する
Significanceの定義(関数設定)
● Player(カメラ)近くのアニメーションを重要度が高い、とするサンプル
Significance関数のサンプル
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;
}
● SetEnabledなどで重要度の(Significance)関数を設定する
DelegateにSignificance関数を設定
● a.Budget.MaxTickRate
● 許容最大TickRate(フレーム単位)。これが設定されていると、予算を超える可能性があります
が、個々アニメーションのクオリティを保つことができます。(デフォルト:10)
● a.Budget.BudgetMs
● 登録されているSkeletal MeshのTick時間の予算。Default 1ms
Animation Budget Allocator主要なパラメータ
a.Budget.BudgetMsの比較
制限なし a.Budget.BudgetMs 1
Skeletal Mesh 100体のAnimation付きSkeletalMeshをSpawn
制限なし a.Budget.BudgetMs 2
a.Budget.BudgetMsの比較
Skeletal Mesh 100体のAnimation付きSkeletalMeshをSpawn
Animation Budget Allocatorのデバッグ表示
ドキュメントが誤っており、現状defineで
WITH_TICK_DEBUG 1 に設定するとDebug表示
.release-4.22EnginePluginsRuntimeAnimationBudgetAllocatorSourceAnimationBudgetAllocatorPrivateAnimationBudgetAllocator.h
● 現在Early Accessの機能
● 大量のキャラクターを表示させたい時
● Tickを減らせるのでGame Threadに対して有効
● Skeletal Mesh Reductionsや、
Dynamic Resolution と組み合わせると効果的
Animation Budget Allocator まとめ
#UE4 | @UNREALENGINE
内容
● リアルタイムレイトレーシング
● レンダリングの最適化
● C++ イテレーション高速化
● アニメーション周り機能追加
● Audio Systemに関する改善
● その他のアップデート
● 今後のUE4
● まとめ
#UE4 | @UNREALENGINE
Audio Systemに関する改善
● New Audio Engineについて
● Time Synthについて
● Sound Concurrency のレイヤー化
● Sound アセットインポート機能の改善
#UE4 | @UNREALENGINE
New Audio Engineについて
● 4.22で当初New Audio EngineがデフォルトになるとPreview版の告知には書かれていましたが、
リリース版でのデフォルトは従来通りとなっています
Audio Device
New Audio Engine
Audio
Audio Mixer
#UE4 | @UNREALENGINE
Audio Systemの指定方法について
● AudioDeviceModuleNameとAudioMixerModuleNameは
WindowsEngine.ini等Configで設定
● au.IsUsingAudioMixer ?で現在の設定を確認
LoadModule
AudioDevice
ModuleName
LoadModule
AudioMixer
ModuleName
UseAudioMixer
True
False
False
Configの[Audio]のUseAudioMixer
または、起動時の-AudioMixer引数
#UE4 | @UNREALENGINE
● 新規プロジェクトでUseAudioMixerをTrueにするConfigを自動で追加する仕組みが導入
● bUseAudioMixerForAllPlatformsはデフォルト無効化されているのでこれをTrueにするか
または、AudioMixerEnabledPlatFormsのArrayに対応したいプラットフォームを追加
UseAudioMixerについて
#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.22EngineSourceRuntimeEnginePrivateSoundConcurrency.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
4.22でHololensのリモートストリーミングをサポート
PC側でレンダリング等を行いストリーミング映像がHololens上で表示される
4.23にてHololens 2 へのネイティブ対応を予定
Hololens リモート ストリーミングのサポート
https://www.unrealengine.com/ja/blog/unreal-engine-4-support-for-hololens-2-released-in-early-
access?sessionInvalidated=true
#UE4 | @UNREALENGINE
弊社Axelによるブログ記事でスタートアップガイドを公開
Hololens リモート ストリーミングスタートアップ
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.23EngineBinariesWin64UnrealInsights.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
公開の予定
まとめ
まとめ
Unreal Engineではゲーム開発をより良くするために
日々開発を進めております
告知
#UE4 | @UNREALENGINE
Unreal Academy
#UE4 | @UNREALENGINE
CEDEC2019 2019年9月4日(水)~6日(金)
#UE4 | @UNREALENGINE
Unreal Fest East 2019
2019 / 10 / 6
パシフィコ横浜

[GTMF2019]Unreal Engine 4の2019年上半期 アップデート情報まとめ