Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

脱Unity!? UE4でVR開発のここが変わった

6,486 views

Published on

2017/10/8(日)に行われたUNREAL FEST EAST 2017における株式会社コロプラ様の講演「脱Unity!? UE4でVR開発のここが変わった」で使用された資料です。
https://unrealevent.eventcloudmix.com/

スライドに埋め込まれた動画に関しましては、以下のURLにてご確認ください。
https://youtu.be/b4y3ie360I4

Published in: Engineering
  • Be the first to comment

脱Unity!? UE4でVR開発のここが変わった

  1. 1. #ue4fest 脱Unity!? UE4でVR開発のここが変わった 株式会社コロプラ
  2. 2. #ue4fest はじめまして
  3. 3. #ue4fest です
  4. 4. #ue4fest コロプラといえば
  5. 5. #ue4fest VR
  6. 6. #ue4fest 2014年から様々なVRゲームを作ってきました
  7. 7. #ue4fest 2014年から様々なVRゲームを作ってきました。
  8. 8. #ue4fest 絵柄もポップなゲームが多い
  9. 9. #ue4fest 綺麗なグラフィックの VRゲームを作りたい!!!!
  10. 10. #ue4fest 「Unreal Engine」というエンジンは グラフィックが綺麗らしい VRゲームで使っている会社も多いらしい
  11. 11. #ue4fest 使ってみよう
  12. 12. #ue4fest 本日話すこと •Unityからの移植テスト •背景制作 •アニメーション実装 •VR向けの最適化 •C++ vs Blueprint •まとめ
  13. 13. #ue4fest 自己紹介 エンジニア 加田 健志(カダ タケシ) 2015年コロプラ入社 サウンドや通信周りを担当することが多い 主な開発タイトル 「TITAN SLAYER」 「Dig 4 Destruction」 「VR Tennis Online」など
  14. 14. #ue4fest Unityからの移植テスト 第一章
  15. 15. #ue4fest 今回の移植対象
  16. 16. #ue4fest ムービー
  17. 17. #ue4fest TITAN SLAYERの紹介 • 2017年4月リリース (Steam/Oculus/Vive Port) • 一人称アクションゲーム • Unity 5.5.0f3 • 剣・銃・弓を使って 巨大なモンスターを倒す • 体を目いっぱい使って戦う
  18. 18. #ue4fest お客様の声 かんぜんにスクワットなので、 翌日太もも筋肉痛になります。 回避は慣れないと大きく動くため、 リアルに体力を使います。 夢中で戦ってたら太もも が筋肉痛になりました。
  19. 19. #ue4fest 移植開始 最初の方針 •Stage1のみ移植 •アセットの差し替えは最小限に •いろいろなUE4の機能を使ってみる 目的 •グラフィックの向上
  20. 20. #ue4fest
  21. 21. #ue4fest さあはじめよう
  22. 22. #ue4fest 開発環境 CPU Intel Core i7 GPU NVIDIA GTX1060 メモリ 32GB/64GB ストレージ SSD VRヘッドセット Oculus Rift CV1 + Oculus Touch HTC Vive +ライトマップ分散ビルド環境を構築 ※複数のPCでビルドできますでしょうか? https://answers.unrealengine.com/questions/48568/index.html
  23. 23. #ue4fest まずは サンプルプロジェクトを見てみる
  24. 24. #ue4fest UE4はVRのサンプルが豊富 •MODING(MOD作成中) • ROBO RECALL • VR FUNHOUSE
  25. 25. #ue4fest UE4はVRのサンプルが豊富 •Learn(ラーニング) • Showdown VR Demo
  26. 26. #ue4fest UE4のVRサンプルを見てみる •New Project -> Virtual Reality
  27. 27. #ue4fest レベルを開く •Content/VirtualRealityBP/Maps/MotionControllerMap
  28. 28. #ue4fest レベルを開く •Content/VirtualRealityBP/Maps/MotionControllerMap
  29. 29. #ue4fest VRモードでプレイ •VR Previewを選択
  30. 30. #ue4fest VRモードでプレイ テレポート移動機能 ものつかみ機能
  31. 31. #ue4fest ほかにもサンプルが豊富 •エフェクト •ライティング •マテリアル •水表現 •シーケンサー
  32. 32. #ue4fest 約1か月後
  33. 33. #ue4fest 移植完了!
  34. 34. #ue4fest あれ? •グラフィック上がった?
  35. 35. #ue4fest 背景制作 第二章
  36. 36. #ue4fest 自己紹介 デザイナー 西村 博司(ニシムラ ヒロシ) 2015年コロプラ入社 背景アーティスト 前職でUE4に触れる機会があり今回は サポートとして参加 主な開発タイトル 「Dig 4 Destruction」 「Fly to KUMA」など
  37. 37. #ue4fest 「背景」は作り直し! クオリティ面で予想と違った! ▶近景にある背景モデルに質感がなくボケている ▶背景モデルはマージされ編集がやりづらい
  38. 38. #ue4fest どうやって改善していくか ▶アンリアルは初めて ▶アンリアルの機能を使い背景作業を行いたい ▶アーティストでも簡単にクオリティを上げたい
  39. 39. #ue4fest 背景制作スタート
  40. 40. #ue4fest 編集しやすい環境作り 問題点 ▶マージされた背景モデルでは編集が出来ない Unreal機能 ▶BSPツールを使いレベルデザインを作成ステージ土台を作る ▶モジュラーアセットに作り直してステージ構築
  41. 41. #ue4fest BSPツール(ジオメトリブラシ) ▶レベル作成に使われる基本的なツール
  42. 42. #ue4fest BSPツールでゲームプロトタイプ ▶配置後でも編集が可能 ▶埋めたり削ったりして形状を作成 ▶凝りすぎない程度にレベルを作成
  43. 43. #ue4fest こんな感じで作成しました
  44. 44. #ue4fest ステージの骨組みが出来た ▶イテレーションが早くゲームプロトタイプを検証 ▶アーティスト作業が不要
  45. 45. #ue4fest モジュラーアセットへ変更 ▶マージされた背景モデルは編集がやりづらい
  46. 46. #ue4fest モジュラーアセットとは ▶使い回しを前提にパーツ分けしたアセット ▶利便性を考えピボット位置やサイズのルールは決める
  47. 47. #ue4fest モジュラーアセット作成工程 ▶BSPで作成したレベルを元にパーツをリスト化 ▶要素がわかる程度のダミーアセットを作成 BSP(ジオメトリブラシ) ダミーアセット 本アセット
  48. 48. #ue4fest モジュラーアセット完成
  49. 49. #ue4fest ステージ構築がやりやすい ▶少ないアセットの組み合わせでステージを作成 ▶スナップ移動を使い効率よく配置 パーツを 合わせて 組み立てる
  50. 50. #ue4fest 質感のクオリティアップ 問題点 ▶近景にある背景モデルの質感がなくボケている Unreal機能 ▶マテリアルエディタを使ってディテールテクスチャを使用
  51. 51. #ue4fest ディテールテクスチャとは ディテールテクスチャ使用使っていないマテリアル
  52. 52. #ue4fest マテリルエディタを使う ▶ノードベースで作れるマテリアル 例:単純なマテリアル 例:複雑なマテリアル
  53. 53. #ue4fest ディテールテクスチャの作成 ▶パレットから「DetailTexturing」ノードを加えて作成
  54. 54. #ue4fest ディテールテクスチャの比較 Before After
  55. 55. #ue4fest 質感のクオリティアップ ▶簡単なマテリアルならアーティストでも作れる ▶ポイントを絞り目的にあったマテリアルを作成
  56. 56. #ue4fest 背景完成
  57. 57. #ue4fest
  58. 58. #ue4fest 背景制作まとめ ▶BSPを使ってステージの骨組みを作成 ▶モジュラーアセットで柔軟な背景構築 ▶マテリアルを作成してクオリティアップ アンリアルエンジンを使って解決!
  59. 59. #ue4fest おまけ:VRエディタを使ってみた ▶実験的に実装されている「VRエディタ」が面白そう
  60. 60. #ue4fest セッティング ▶エディタ設定「Enable VR Mode Auto-Entry」にチェック ▶ゴーグルを被るだけでVRエディタが起動
  61. 61. #ue4fest レイアウト ▶「コンテンツブラウザ」よりアセットを配置 ▶「複製」も簡単
  62. 62. #ue4fest ワールドスケール ▶シーン全体のスケールを変更
  63. 63. #ue4fest 移動方法 ▶テレポート ▶手動
  64. 64. #ue4fest ゲームプレイ ▶編集後そのままゲームをチェック
  65. 65. #ue4fest VRエディタまとめ ▶編集内容を絞れば直感的に作業が行える ▶レベルエディタとVRエディタを使い分ける VR空間で作る 背景制作は楽しい体験!
  66. 66. #ue4fest アニメーション実装 第三章
  67. 67. #ue4fest 自己紹介 エンジニア 佐々木 尚人 (ササキ ナオト) 2016年に新卒としてコロプラに入社 TITAN SLAYERの開発を担当 主な担当範囲は 「描画周りの実装」と「ボスキャラ実装」
  68. 68. #ue4fest アニメーションについて話す理由 Unityと比べて最も差異が 大きかったため
  69. 69. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  70. 70. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  71. 71. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  72. 72. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  73. 73. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  74. 74. #ue4fest 最初の話 アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  75. 75. #ue4fest Animator もうちょっと遷移がごちゃついた図 ステートと遷移のルールに基づいてアニメーションを再生する
  76. 76. #ue4fest Animation Blueprint Animation BlueprintもUnityと同等の機能を備えている
  77. 77. #ue4fest Animation Blueprint アニメーションイベントの受け取りや変数の制御も Animation Blueprint内で行うことができる
  78. 78. #ue4fest AnimatorAnimation Blueprint ≠ アニメーション機能をざっくり比較すると…
  79. 79. #ue4fest アニメーション機能をざっくり比較すると… Animation Blueprint Animator + Animator管理用 スクリプト ≒
  80. 80. #ue4fest 次に話すこと アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  81. 81. #ue4fest 完成イメージ図 完成した時のてつおモーションがどんな感じになるかのgif 待機→攻撃→ダメージ→待機→攻撃→待機
  82. 82. #ue4fest 敵キャラアニメーションで実現したいこと 思考 攻撃 ダメージ アニメーション 終了 ダメージイベント アニメーション 終了 攻撃イベント
  83. 83. #ue4fest Unityアニメーションの設計 思考 攻撃 ダメージ アニメーション 終了 ダメージイベント アニメーション 終了 攻撃イベント 全てのステート
  84. 84. #ue4fest Unrealアニメーションの設計 ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  85. 85. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの作り方の比較 Unreal Engineでの実装例 まとめ
  86. 86. #ue4fest ステートマシン ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  87. 87. #ue4fest ステート編集 ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  88. 88. #ue4fest ステート内部 ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  89. 89. #ue4fest 【Tips】ポーズ拡張
  90. 90. #ue4fest 【Tips】ポーズ拡張
  91. 91. #ue4fest ステートマシン ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  92. 92. #ue4fest ステートマシン ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  93. 93. #ue4fest ステート ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  94. 94. #ue4fest サブステートマシン あ ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  95. 95. #ue4fest 制御用変数
  96. 96. #ue4fest 制御用変数
  97. 97. #ue4fest 【Tips】Enumでのタイプ分け
  98. 98. #ue4fest 【Tips】Enumでのタイプ分け
  99. 99. #ue4fest 【Tips】Enumでのタイプ分け
  100. 100. #ue4fest 遷移(思考→攻撃) ダメージ サブステートマシン 思考 攻撃 思考&攻撃
  101. 101. #ue4fest ダメージ サブステートマシン 思考 攻撃 思考&攻撃 遷移(思考→攻撃)
  102. 102. #ue4fest ダメージ サブステートマシン 思考 攻撃 思考&攻撃 遷移(思考→攻撃)
  103. 103. #ue4fest ダメージ サブステートマシン 思考 攻撃 思考&攻撃 遷移(攻撃→思考)
  104. 104. #ue4fest ダメージ サブステートマシン 思考 攻撃 思考&攻撃 アニメーションの残時間 0.05秒以下 遷移(攻撃→思考)
  105. 105. #ue4fest 【Tips】遷移条件を場合分け
  106. 106. #ue4fest 話の流れ アニメーション機能の説明 アニメーションの設計の比較 Unreal Engineでの実装例 まとめ
  107. 107. #ue4fest
  108. 108. #ue4fest まとめ •UnityとUnrealでは使い方のクセが大幅に違う •UnrealのAnimationは高機能 移植の際は設計レベルでの見直しを!
  109. 109. #ue4fest VR向けの最適化 第四章
  110. 110. #ue4fest VR最適化って何だろう? 処理負荷軽減 プレイヤー 没入感向上
  111. 111. #ue4fest 処理負荷軽減 •フレームレートの低下 → 酔いを誘発 •90FPS •問題が顕在化するのは開発終盤 パフォーマンスを最初から考慮した開発が大事
  112. 112. #ue4fest UE4×処理負荷軽減 •Forward Shading •カプセルシャドウ
  113. 113. #ue4fest Forward Shading •UE4の標準はDeferred Shading •処理負荷軽減のためForward Shadingに変更 •レンダリングパフォーマンスが20~30%アップ
  114. 114. #ue4fest Forward Shading Deferred Shading とは •Forward Shading • 古典的な描画方法 • ライトが増えれば負荷が増える •Deferred Shading • 近年主流の描画方法 • ライトが増えても負荷が増えない • G Buffer
  115. 115. #ue4fest Forward Shading Project Settings > Engine > Rendering にある「Forward Shading」にチェックを入れて プロジェクトを開きなおす
  116. 116. #ue4fest Forward Shading ※Forward Shadingでは一部の機能が制限される ※UE4公式 VR でフォワード レンダリングを使用する https://docs.unrealengine.com/latest/JPN/Engine/Performance/ForwardRenderer/index.html
  117. 117. #ue4fest カプセルシャドウ 簡易的な影に切り替える ROBO RECALLでも使用 通常のシャドウ カプセルシャドウ
  118. 118. #ue4fest カプセルシャドウの設定方法 Skeletal Mesh Editorを開く Lightingの「Shadow Physics Asset」に Physics Assetを設定 Physicsに設定されているものと同じでOK カプセルシャドウ用の別Physics Assetを 作成して影をカスタマイズ可能
  119. 119. #ue4fest カプセルシャドウの設定方法 Skeletal Mesh Componentの詳細 →Lighting ・Capsule Direct Shadow ・Capsule Indirect Shadow にチェック ※Lightingの項目は初期状態では畳まれている UE4公式 カプセル シャドウの概要 https://docs.unrealengine.com/latest/JPN/Engine/Rendering/LightingAndShadows/CapsuleSha dows/Overview/index.html
  120. 120. #ue4fest 処理負荷軽減の結果 100体のキャラクターを出して検証 GPU処理時間[ms] Deferred Sharding 22.29ms Forward Sharding 19.10ms Forward Sharding + カプセルシャドウ 11.00ms 大量のオブジェクトを表示する場合 Forward Sharding & カプセルシャドウの設定は有効
  121. 121. #ue4fest プレイヤー没入感向上 •キャラクターモデル •VR内の手 •サウンド
  122. 122. #ue4fest VR用キャラクターモデルの作り方 近くに見えるものにコストを割く 「巨人と戦う」 → 顔よりも手先や足が近く見えやすい •近づきやすい部分にポリゴン数を割く •自分の手や武器もリッチに •ボーン数は少なめに プレイヤーの目線イメージ
  123. 123. #ue4fest VR内の手 手モデルの表示位置を正確にしたい •モーションコントローラの位置に コントローラモデルを表示する •実際の手の位置を比較 •Oculus Touch/Vive両方 ※Engine Content/VREditor/Devices にコントローラモデル
  124. 124. #ue4fest サウンド •聴覚から没入感を高める • 立体音響 ⇔ 2Dサウンド • 環境音 • BGM •Sound Cue
  125. 125. #ue4fest Sound Cue •Sound Cue ≠ オーディオファイル •オーディオ再生方法の制御 • ランダム再生 • In – Loop再生 • ピッチ変更再生 •オーディオエフェクトの制御 • 減衰 • リバーブ
  126. 126. #ue4fest Sound Cue ランダム再生
  127. 127. #ue4fest アニメーション×Sound フレームを指定して エフェクトやサウンドを制御できる
  128. 128. #ue4fest アニメーション×Sound 足音が近づいてきている 足音もランダムに再生されている
  129. 129. #ue4fest 最適化まとめ •VRは処理負荷がシビア • 開発序盤からフレームレートを意識した開発 • UE4の機能を使って負荷削減 •プレイヤーの没入感を削がないつくり • 近くに見えるものにコストを割く • 手の挙動は慎重に調整 • サウンドにもこだわる
  130. 130. #ue4fest C++ vs Blueprint 第五章
  131. 131. #ue4fest UEを使うときにエンジニアが最初に気になること C++で書くべきか Blueprintで書くべきか
  132. 132. #ue4fest
  133. 133. #ue4fest なるほど、わからん
  134. 134. #ue4fest しかし、UE4のチュートリアルは ほぼブループリントで作られている
  135. 135. #ue4fest うまく使い分けて仲良くなろう
  136. 136. #ue4fest C++ vs Blueprint ブループリント C++ 書き方 ノード コード 扱いやすさ 易しい 難しい コンパイル速度 速い 遅い 差分比較 難しい 易しい 処理速度 遅い 速い ナレッジ数 多い 少ない
  137. 137. #ue4fest C++ vs Blueprint 扱いやすさ •C++では簡単にNULLを踏んでEditorごと落ちる •ポインタを扱うときには注意が必要
  138. 138. #ue4fest コンパイル速度 •ブループリントは変更部分だけのコンパイル •C++はコンパイル前に全ファイルのヘッダ解析を行う C++ vs Blueprint Blueprint C++
  139. 139. #ue4fest C++ vs Blueprint 差分比較 •ブループリントでも差分が見られるが目Grep
  140. 140. #ue4fest C++ vs Blueprint 差分比較 •ブループリントでも差分が見られるが目Grep デバッグプリントがなくなっている
  141. 141. #ue4fest C++ vs Blueprint 処理速度 ベクトル演算を10万回行うコードをC++とBlueprintで比較 処理時間 C++ 1mse以下 Blueprint 313msec
  142. 142. #ue4fest Blueprint ⇒ C++ 自動変換 • Project Settings->Packaging->Blurprints->Blueprint Nativization MethodをInclusiveに変更 • ビルド時にブループリントをC++に変換 • 処理速度が313msecから3msec ブループリントのネイティブ化 https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/TechnicalGuide/NativizingBlueprints/index.html
  143. 143. #ue4fest 結局どう使い分けるか?
  144. 144. #ue4fest • 基礎となる部分はC++で実装 • C++を継承したブループリントをゲームに使用 • 安定した部分からC++に移行 AActor AEnemyBase BP_OrcBase BP_OrcA BP_OrcB C++ ブループリント 基本方針
  145. 145. #ue4fest なぜこのような方針になったか • C++のコンパイルが遅い →テスト実装はブループリント 安定してからC++化 • ブループリントの実行速度が遅い →複雑な計算はC++へ →複雑な計算ノードは他人が見てもわかりづらい • ブループリントで定義した変数・構造体はC++からはアクセスできない →極力C++で宣言 ブループリントからC++へ書き換えは大変
  146. 146. #ue4fest BlueprintのC++への移植 •ブループリントの関数をC++で使うとき •ノードを右クリックし 「Goto Definition」 •C++での定義ファイルが表示
  147. 147. #ue4fest
  148. 148. #ue4fest C++まとめ • C++を使うには少しコツがいる • モックやテストはブループリントで行い 本番実装でC++へ • 基底クラスだけはC++で作っておく →C++の実装は空でもいい • ブループリントのC++変換機能も有効活用
  149. 149. #ue4fest まとめ 第六章
  150. 150. #ue4fest 成果
  151. 151. #ue4fest 比較解説 •キャラクターの質感アップ • より恐怖を感じるように
  152. 152. #ue4fest 比較解説 •キャラクターの質感アップ • 金属もいい感じに
  153. 153. #ue4fest 比較解説 •エフェクト表現がグーンとアップ
  154. 154. #ue4fest 比較解説 •エフェクト表現がグーンとアップ
  155. 155. #ue4fest まとめ 移植を通して分かったUE4の強み • 最初から用意されている機能が豊富 • エンジニアの手を借りずに実装可能 • ブループリント
  156. 156. #ue4fest 使おう
  157. 157. #ue4fest ご清聴ありがとうございました

×