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

2.6K Views

July 18, 19

スライド概要

GTMF2019の講演資料を公開します。

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

Unreal Engine 4の2019年上半期 アップデート情報まとめ Epic Games Japan Support Engineer : 澤田 祐太朗

2.

自己紹介 Epic Games Japan サポートエンジニア 澤田 祐太朗 主にコンソールやレンダリング周りを中心に開発のサポート #UE4 | @UNREALENGINE

3.

Unreal Engine 4 #UE4 | @UNREALENGINE

4.

Unreal Engine 4 Unreal Engine 4 は統合ゲーム開発環境 レンダリング アニメーション オーディオ エフェクト プログラミング #UE4 | @UNREALENGINE Unreal Engine

5.

Unreal Engine 4のソースコードについて 規約に同意して頂き登録を行うとフルソースコードにアクセス可能 開発の最新ストリームを Githubにて公開 https://www.unrealengine.com/ja/ue4-on-github #UE4 | @UNREALENGINE

6.

開発環境 C++かBlueprint #UE4 | @UNREALENGINE

7.

様々な環境に向けてアウトプットが可能 PC Unreal Engine コンソール モバイル #UE4 | @UNREALENGINE

8.

Unreal Studio #UE4 | @UNREALENGINE

9.

Python/Blueprintによる自動化講演 #UE4 | @UNREALENGINE

10.

Unreal Engine 4の 最新アップデート情報について #UE4 | @UNREALENGINE

11.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

12.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

13.

4.22 #UE4 | @UNREALENGINE

14.

“Troll’ from Goodbye Kansas and Deep Forest Films ● ブースにてリアルタイム実行 のデモを展示 興味のある方はぜひブースへ #UE4 | @UNREALENGINE

15.

リアルタイムレイトレーシング動作環境 ---Early Access--- ● 現状必要な環境 ● Windows 10 October 2018 Update適応済みのWindows PC ● DXRをサポートしたNvidiaのGPU #UE4 | @UNREALENGINE

16.

リアルタイムレイトレーシング設定 ● 必要な設定(1) ● Project Settings > Platforms >Windows Default RHI をDirectX12に設定 ● Project Settings > Engine > Rendering Ray Tracingを有効化 #UE4 | @UNREALENGINE ---Early Access---

17.

リアルタイムレイトレーシング設定 ---Early Access--- ● 必要な設定(2) ● Project Settings > Engine > Rendering Support Compute Skincacheを有効化 https://www.slideshare.net/EpicGamesJapan/ cedec2018-ue4-111104578 #UE4 | @UNREALENGINE

18.

リアルタイムレイトレーシングの動作 ---Early Access--- ● 各種設定後再起動すると有効化 ● 代表的な効果として Reflectionが綺麗に ● パストレースや Debug機能がViewport オプションから選択可能 #UE4 | @UNREALENGINE

19.

UE4 Ray Tracing Night @ Tokyo https://connpass.com/event/125250/ #UE4 | @UNREALENGINE

20.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

21.

レンダリングの最適化 ● Mesh Drawing Pipelineの改善 ● 基本的な考え方はメッシュ描画のコマンド(描画に必要な設定情報)をキャッシュし、 効率的に使用したり、コマンドをマージすることでDraw Callを削減

22.

レンダリングの4.21と4.22の比較 ● UE4.21と4.22で Sequencerサンプルで検証 #UE4 | @UNREALENGINE

23.

レンダリングの4.21と4.22の比較 (Stat SceneRendering) UE4.21 UE4.22 Mesh draw calls : 470 Mesh draw calls : 204 半分以下に #UE4 | @UNREALENGINE

24.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

25.

C++ イテレーション高速化 ● Molecular Matters の Live++ライセンスを取得し、 新しい ライブ コーディング 機能(実験的機能)として統合 ● UnrealBuildTool と UnrealHeaderTool が最適化され、 C++ のイテレーション時間が最大 3 倍高速に #UE4 | @UNREALENGINE

26.

ライブコーディング(Live++) ---Experimental--- ● Editor Preferences > Live Coding > Enable Live Codingを有効化 基本的な使用方法 ● VS側でファイルを保存し Ctrl+Alt+F11 #UE4 | @UNREALENGINE

27.

Live++例 ---Experimental--- ● Game側の実装でMyActorを作成 ● TickでStatic変数tempNumをひたすらインクリメント LOGを出力 #UE4 | @UNREALENGINE

28.

#UE4 | @UNREALENGINE

29.

#UE4 | @UNREALENGINE

30.

実行できるようになるまでの時間比較 ---Experimental--- Hot Reload 7.53 sec Live++ 5.09 sec ● 上記は何度かタイマーで計測して平均した、およその時間 ● これまでの機能であるHotReloadよりも速い ● Live++の場合実行中でも変更可能なメリットも #UE4 | @UNREALENGINE

31.

Live++のオプションの注意点 ---Experimental--- ● Engine側のモジュールやPluginのコードを含めると動作が不安定に #UE4 | @UNREALENGINE

32.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

33.

アニメーション周りの最適化 ● Skeletal Mesh Reduction ● Animation Budget Allocator #UE4 | @UNREALENGINE

34.

Skeletal Mesh Reduction #UE4 | @UNREALENGINE

35.

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

36.

Skeletal Mesh Reduction [4.22-] ● LOD Settings -> Number of LODsでLODの数を設定

37.

Skeletal Mesh Reduction [4.22-] ● LOD Pickerから調整したいLODを指定し設定項目を表示 ・Screen Size ・描画領域がこの割合になった時に 該当LODを描画 ・Bones to Prioritize ・リダクション時に プライオリティを上げたいBoneを設定 ・Weight Of Prioritization ・プライオリティ(品質)を保持する割合 ・Bones to Remove ・Skeletonから参照するボーンを 削除するリスト

38.

Skeletal Mesh Reduction [4.22-] ● LOD Info内のReduction Settingsを展開 ・Termination Criterion ・リダクションの基準とするもの ・Percent Of Triangles ・どのぐらいの割合で基準となるものを 減らすか ・Max Bones Influence ・影響させるボーンの数 ・Lock Mesh Edges ・メッシュの端のトポロジを保つ

39.

Lock Mesh Edges LOD0 6040 triangles LOD1 2030 triangles (Enable Lock Mesh Edge) LOD1 2030 triangles (Disable Lock Mesh Edge)

40.

LODの設定について [4.22-] ● 以前はPlatformグループ毎の設定でしたが、(PC、Console、Mobile) 4.22からPlatformごとにMinLOD(最低のLOD)を設定できるように ● 不要なLODモデルをパッケージに 含まないようにするためには、 以下の設定が必要 ”r.SkeletalMesh.StripMinLodDataDuringCooking 1”

41.

アセットリダクションについて Static Meshに関してやアセットのコンソール向け最適化に関する情報は 過去の勉強会で公開を行った資料で紹介しています。 https://www.slideshare.net/EpicGamesJapan/fortnite-97791917 https://www.slideshare.net/EpicGamesJapan/ue4-95238296

42.

Animation Budget Allocator #UE4 | @UNREALENGINE

43.

Animation Budget Allocator[4.22] ---Experimental--- Skeletal Mesh ComponentのTick制御を動的に制限する機能 プラットフォームごとに(ゲームスレッドでの時間配分)を決めて その時間の中で実行を行う 以下のような処理を切り替える、 ・Tick処理を止める、 ・Master Pose Componentに切り替える ・アップデートの間の処理を補完、 または補完しない

44.

Animation Budget Allocator ● Pluginの有効化 ● Skeletal Mesh Componentの置き換え ● Animation Budgetの有効化 ● Significanceの定義(関数設定)

45.

Pluginの有効化 [Plugins]->[Programming]->[Animation Budget Allocator]

46.

Animation Budgetの有効化 ● Game ModeなどでEnable Animation Budgetノードを実行 ● 全体を管理するAnimation Budget Allocatorを作成 ● a.Budget.Enabled 1を設定し有効化 ● 制御を行うためのフラグ

47.

Skeletal Mesh Component Budgetedの置き換え ● Animation Budget Allocator登録したいSkeletal Meshを Skeletal Mesh Component Budgetedに置き換える Pluginに含まれているコンポーネントです

48.

Skeletal Mesh Component Budgetedについて ● このコンポーネントでは、Animation Budget Allocatorに 自分自身を登録したり、解除を行う こちらを参考に独自のSkeletal Mesh Componentを 作成してもよいかと思います

49.

Significanceの定義(関数設定) ● どのアニメーションが重要か、定義を行う。 ● デフォルトだとAllocatorへの登録順 ● 定義されているDelegateに関数を設定し、 Skeletal Mesh Component Budgeted内の以下フラグを有効化する

50.
[beta]
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;
}

51.

DelegateにSignificance関数を設定 ● SetEnabledなどで重要度の(Significance)関数を設定する

52.

Animation Budget Allocator主要なパラメータ ● a.Budget.MaxTickRate ● 許容最大TickRate(フレーム単位)。これが設定されていると、予算を超える可能性があります が、個々アニメーションのクオリティを保つことができます。(デフォルト:10) ● a.Budget.BudgetMs ● 登録されているSkeletal MeshのTick時間の予算。Default 1ms

53.

a.Budget.BudgetMsの比較 制限なし a.Budget.BudgetMs 1 Skeletal Mesh 100体のAnimation付きSkeletalMeshをSpawn

54.

a.Budget.BudgetMsの比較 制限なし a.Budget.BudgetMs 2 Skeletal Mesh 100体のAnimation付きSkeletalMeshをSpawn

55.

Animation Budget Allocatorのデバッグ表示 ドキュメントが誤っており、現状defineで WITH_TICK_DEBUG 1 に設定するとDebug表示 .¥release-4.22¥Engine¥Plugins¥Runtime¥AnimationBudgetAllocator¥Source¥AnimationBudgetAllocator¥Private¥AnimationBudgetAllocator.h

56.

Animation Budget Allocator まとめ ● 現在Early Accessの機能 ● 大量のキャラクターを表示させたい時 ● Tickを減らせるのでGame Threadに対して有効 ● Skeletal Mesh Reductionsや、 Dynamic Resolution と組み合わせると効果的

57.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

58.

Audio Systemに関する改善 ● New Audio Engineについて ● Time Synthについて ● Sound Concurrency のレイヤー化 ● Sound アセットインポート機能の改善 #UE4 | @UNREALENGINE

59.

New Audio Engineについて Audio Device Audio New Audio Engine Audio Mixer ● 4.22で当初New Audio EngineがデフォルトになるとPreview版の告知には書かれていましたが、 リリース版でのデフォルトは従来通りとなっています #UE4 | @UNREALENGINE

60.

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

61.

UseAudioMixerについて ● 新規プロジェクトでUseAudioMixerをTrueにするConfigを自動で追加する仕組みが導入 ● bUseAudioMixerForAllPlatformsはデフォルト無効化されているのでこれをTrueにするか または、AudioMixerEnabledPlatFormsのArrayに対応したいプラットフォームを追加 #UE4 | @UNREALENGINE

62.

Time Synthについて ● 音声クリップをサンプルベースで正確な位置で開始、停止、連結を提供する ことに重点を置いた、新しいオーディオ コンポーネント #UE4 | @UNREALENGINE

63.

Time Synth Pluginの有効化 ● Plugin > Audio > Time Synthを有効化し再起動 #UE4 | @UNREALENGINE

64.

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

65.

Time Synthで再生するサウンドについて ● Content Browserの右クリックから Sound > Time Synth Clipを作成 作成したTime Synth Clipを開きSound Waveを登録 #UE4 | @UNREALENGINE

66.

Time Synthで再生するサウンドについて Sound Waveを登録後、Clip Durationからサウンドファイルの長さを指定 #UE4 | @UNREALENGINE

67.

Time Synth ComponentにEventを設定 ● Add Quantization Event Delegateによってイベントを追加 以下例では、1小節、1拍子ごとにイベントを呼ぶように設定 #UE4 | @UNREALENGINE

68.

Time Synth Componentの実行 ● この状態で実行すると、 それぞれ同期した状態でイベントが呼ばれる イベント上で別のClipを再生したり Clipを停止することでリズムに合った サウンドの再生が可能となる イベントでは現在の小節や拍子の番号を取得可能 #UE4 | @UNREALENGINE

69.

Sound Concurrency のレイヤー化 #UE4 | @UNREALENGINE

70.

Sound Concurrency のレイヤー化 ● Sound Concurrencyはサウンドの並列再生に関する設定 ● AudioComponent、SoundBase、SynthComponentに対して複数設定が可能に Max Count:同時再生数 Resolution Rule: 同時再生数を超えた場合の挙動定義 複数設定した場合... Resolution Rule が同時に 実行されるため注意 #UE4 | @UNREALENGINE

71.

Sound Concurrency のレイヤー化 ● 複数条件により評価処理が複雑になっているため 詳しく確認したい場合はEvaluteConcurrency関数を参照 .¥release-4.22¥Engine¥Source¥Runtime¥Engine¥Private¥SoundConcurrency.cpp #UE4 | @UNREALENGINE

72.

Sound アセットインポート機能の改善 #UE4 | @UNREALENGINE

73.

Sound アセットインポート機能の改善 ● これまで対応していたWAVファイルに加えて 「AIFF」、「FLAC」、「Ogg Vorbis」に対応 設定等は必要なく、Content Browser に ドラッグ&ドロップでインポート可能 #UE4 | @UNREALENGINE

74.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

75.

その他アップデート ● バーチャル プロダクション パイプラインの改善 ● Hololens リモート ストリーミングのサポート #UE4 | @UNREALENGINE

76.

バーチャル プロダクション パイプラインの改善 Composure によるリアルタイム コンポジットを大幅に強化 ・OpenColorIO (OCIO) カラー プロファイルへの対応 (実験的機能) ・GPUによるビデオ デコード (実験的機能) ・新しい Media I/O フォーマット ・nDisplay の改善 #UE4 | @UNREALENGINE

77.

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

78.

Hololens リモート ストリーミングスタートアップ 弊社Axelによるブログ記事でスタートアップガイドを公開 https://qiita.com/EGJ-Axel_Riffard/items/58799a1dd1db0e9e7351 #UE4 | @UNREALENGINE

79.

内容 ● ● ● ● ● ● ● ● リアルタイムレイトレーシング レンダリングの最適化 C++ イテレーション高速化 アニメーション周り機能追加 Audio Systemに関する改善 その他のアップデート 今後のUE4 まとめ #UE4 | @UNREALENGINE

80.

UE4 Roadmapについて https://trello.com/b/TTAVI7Ny/ue4-roadmap #UE4 | @UNREALENGINE

81.

4.23 Preview #UE4 | @UNREALENGINE

82.

Unreal Insights #UE4 | @UNREALENGINE

83.

Unreal Insights #UE4 | @UNREALENGINE

84.

Unreal Insights #UE4 | @UNREALENGINE

85.

Unreal Insights #UE4 | @UNREALENGINE

86.

Unreal Insights ¥UE_4.23¥Engine¥Binaries¥Win64¥UnrealInsights.exeを起動しておく #UE4 | @UNREALENGINE

87.

Unreal Insights 起動引数に-cpuprofilertraceの追加が必要(以下例ではStandalone実行の引数に追加) #UE4 | @UNREALENGINE

88.

Unreal Insights ゲーム上で@キーを押し、stat namedevents 1コマンドを実行 #UE4 | @UNREALENGINE

89.

Unreal Insights StatusがLIVEになってることを確認し、Openをクリック #UE4 | @UNREALENGINE

90.

Unreal Insights #UE4 | @UNREALENGINE

91.

Chaos #UE4 | @UNREALENGINE

92.

Chaos Demo ● 4.23でExperimental 公開の予定 #UE4 | @UNREALENGINE

93.

まとめ

94.

まとめ Unreal Engineではゲーム開発をより良くするために 日々開発を進めております

95.

告知

96.

Unreal Academy #UE4 | @UNREALENGINE

97.

CEDEC2019 #UE4 | @UNREALENGINE 2019年9月4日(水)~6日(金)

98.

Unreal Fest East 2019 2019 / 10 / 6 パシフィコ横浜 #UE4 | @UNREALENGINE