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.

UE4でVR空間にカノジョを錬金するLT+The Phantom Knowledge Project for UE4進捗報告

第2回UE4何でも勉強会 in 東京にて、LTした時のスライド資料になります。

  • Login to see the comments

UE4でVR空間にカノジョを錬金するLT+The Phantom Knowledge Project for UE4進捗報告

  1. 1. UE4でVR空間にカノジョを錬金するLT + The Phantom Knowledge Project for UE4進捗報告 荻野雄季 第2回UE4何でも勉強会 in 東京
  2. 2. 自己紹介 • 荻野雄季(おぎのゆうき) • 所属:マイティゲームス ゲームサービス事業部 親会社がマイネットってところ • Unreal Engine MeetUp Saitama主催 #ue4saitama https://www.meetup.com/ja-JP/UnrealSaitama/ • UE4とかVRとか趣味で触ってます • Twitter:@YuukiOgino
  3. 3. まずはじめに…… このLTはユニティちゃんライセンス条項の元、行っています ※ユニティちゃん成分が多いので、ライセンス表示しています
  4. 4. UE4でカノジョを錬金するLT
  5. 5. https://qiita.com/advent-calendar/2017/ue4vrgame-create
  6. 6. 2日で軽くプロトタイプ作成 https://twitter.com/i/videos/934709537428221952
  7. 7. 本日午前4時、コンテンツ完成 アドカレ全記事予約投稿完了 https://twitter.com/twitter/statuses/942904118632357889
  8. 8. 開発環境 • Windows10 • Unreal Engine4.18.1 • Oculus Rift + Oculus touch
  9. 9. UE4でカノジョを錬金するLT 記事内容全公開 ※すでに公開済み(1~19日まで)の内容は簡単に紹介します ※20日以降は完全なネタバレなので、本日以降Qiita見なくてOKです
  10. 10. • 可愛いフリーの美少女モデルをとアニメーションを使用する • Maya等の3Dレンダリングツールで自作する 美少女3Dモデルとアニメーションを用意する 1日目
  11. 11. • クリスマス部屋をマーケットプレイスで買う • Maya等の3Dレンダリングツールで部屋を自作する クリスマスにふさわしい部屋を準備 1日目
  12. 12. 2日目~3日目、8日目~10日目 • サマ○○○スンであったUIの一つ • Oculusは加速度が取れるため、うなずいたり、首を振るのは全て加 速度の値を元に実装 首振り選択肢のロジック実装
  13. 13. モナくんありがとう!! @mona19920307
  14. 14. 4日目~7日目 • 視線入力に対応した選択肢を作る • UE4 ガンシューティングゲームを作ろう!その4 視線選択を 引用(YumaDogidogi’s blog) http://yumadogidogi.hatenablog.com/entry/2015/08/19/124503 視線入力による選択肢ロジック実装
  15. 15. 11日目 • カノジョ(3Dモデル)にこちらに視線を合わせるように実装 • 今回は調整済みのデータを公開 LookAtでカノジョに見つめてもらう
  16. 16. 11日目 • UE4 LookAt機能を使ってGrayちゃんに見つめてもらってみる • UE4 キャラクターの顔を特定の位置に向ける・Transform の向 きを Blueprint で制御する(Look At) • UE4とOculusで~いつもと違うコトをしよう 参考にさせていただいたサイト
  17. 17. ユニティちゃんLookAt詳細設定
  18. 18. グレイちゃんLookAt詳細設定
  19. 19. 12日目~14日目 • ゲーム全体の流れを制御するGameManagerクラス作成 • ざっと中身を説明すると、適切なボイスを再生して選択肢を表 示するだけ • 1時間で作った適当なクラスなので参考程度に GameManagerクラス作成
  20. 20. 15日目 • 視界外でうなずきのアクションをしてしまうと勝手にゲームが進 んでしまい、ユーザーが混乱してしまうという問題点 • UIが視界に入った時のみ、入力が有効になるよう実装 うなずきUIを視界に入った時のみ有効
  21. 21. 15日目 • ロジック自体はAnswerHubの回答をそのまま引用 https://answers.unrealengine.com/questions/499508/%E3%82%A2 %E3%82%AF%E3%82%BF%E3%83%BC%E3%81%8B%E3%82% AB%E3%83%A1%E3%83%A9%E3%81%AB%E6%98%A0%E3%8 1%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3 %82%92%E5%88%A4%E5%88%A5%E3%81%97%E3%81%9F%E 3%81%84.html うなずきUIを視界に入った時のみ有効
  22. 22. 16日目 • Oculus RiftはHMDだけでなくOculus Touchの加速度も取れるので、 何回か連続で横方向の加速度が取れれば手を振っていると判定す るように実装 • ゲームジャム中に思いついたが、結局実装しなかった 手を振っているかどうかの実装
  23. 23. 17日目 • 乱数を取得し、もし一定値異常だった場合はモーフターゲットを 操作して、まばたきをするように実装 まばたき実装
  24. 24. 18日目~23日目(ここからネタバレ) • カノジョ(3Dモデル)のボーンを回転させて、擬似的に呼吸 をしているように見せかける • 操作するボーンは腰、胸、首、頭、右肩、左肩 汎用的な呼吸アニメーション実装
  25. 25. 汎用的な呼吸アニメーション実装 参考にしたサイト • スクリプトで呼吸させる - 第2回 | Unity3D • http://mebiustos.hatenablog.com/entry/2015/08/31/201902
  26. 26. 汎用的な呼吸アニメーション実装 アニメーションBPに変数をセット
  27. 27. 汎用的な呼吸アニメーション実装 列挙型(enum)作成
  28. 28. 汎用的な呼吸アニメーション実装 アニムグラフ実装 Transform(Modify)Boneノード(日本語だと「ボーンをトランス フォームで修正する」ノード)を利用して、ボーンを回転させる
  29. 29. 汎用的な呼吸アニメーション実装 腰、胸、首、頭のボーンをセット ※↓ユニティちゃんの場合
  30. 30. 汎用的な呼吸アニメーション実装 右肩、左肩のボーンをセット 呼吸した際に胸と一緒に腕が不自然に動くのを修正している ※↓ユニティちゃんの場合
  31. 31. 汎用的な呼吸アニメーション実装 各ノードの詳細にある全てのRoatationにあるRotationModeを Add to Existingに。
  32. 32. 汎用的な呼吸アニメーション実装 ロジック実装
  33. 33. 汎用的な呼吸アニメーション実装 自然な呼吸に見せるため、吸う⇔吐くの切り替えで少し待機させる
  34. 34. 汎用的な呼吸アニメーション実装 吸うアニメーション処理
  35. 35. 汎用的な呼吸アニメーション実装 吸うアニメーションの時間を判定 時間の計算式:inhale * durationRate + 0.5
  36. 36. 汎用的な呼吸アニメーション実装 ボーンの回転値をセット ボーンは縦に回転させる(ユニティちゃんの場合はRoll)
  37. 37. 汎用的な呼吸アニメーション実装 吸うアニメーション、回転値の計算式: [各ボーンの吸入最大回転値] * EffectRate * Sin((GetAudioTimeSecounds - StartTime)/(inhale*durationRate))
  38. 38. 汎用的な呼吸アニメーション実装 吐くアニメーション処理
  39. 39. 汎用的な呼吸アニメーション実装 吐くアニメーションの時間を判定 時間の計算式:exhale * durationRate + 0.5
  40. 40. 汎用的な呼吸アニメーション実装 ボーンの回転値をセット 回転させる場所は吸う時と一緒
  41. 41. 汎用的な呼吸アニメーション実装 吐くアニメーション、回転値の計算 回転値を求めた後、各ボーンのinhaleから引いた値を回転値とし てセット
  42. 42. 汎用的な呼吸アニメーション実装 吐くアニメーション、回転値の計算式: [各ボーンの吐くアニメーション最大回転値] * EffectRate * Sin((GetAudioTimeSecounds - StartTime)/(exhale*durationRate))
  43. 43. 24日目~25日目 • ボイスを再生している間、リップシンクするように実装 • 19日0時にようやく大まかな実装ができ、本日の午前4時に実装が 完了 • 凹みTipsが無ければ詰んでた リップシンク ※フォルマント画像はみんな大好き凹みTipsより引用
  44. 44. リップシンク 参考にしたサイト(凹みTips Only) フォルマントから母音推定してリップシンクを目指してみる Unity でリアルタイムにリップシンクする MMD4Mecanim LipSync Plugin を作ってみた ユニティちゃんが声に合わせて口パクしてくれるリップシンクア セットを作ってみた MMD4Mecanim-LipSync-Pluginソース
  45. 45. リップシンク まずUE4のみで実装してみようとした ・MMD4Mecanim-LipSync-Pluginソースを参考にBluePrintでフォ ルマント解析処理を実装 ・公式プラグインのSound Visualizations Pluginを使用
  46. 46. リップシンク が、できず…… ・公式プラグインのSound Visualizations Pluginを使用するとパ ッケージングでエラーが出る(エディター専用のプラグイン) ・周波数解析のライブラリを利用してUE4プラグインを作ろう →自分のC++の実装知識が足りず、ライブラリ組めず時間を無駄 に過ごしたため断念
  47. 47. リップシンク 実際にどうしたか MMD4Mecanim-LipSync-Pluginソースをいじって、Unityから解 析データをCSVで吐き出せばいいじゃん というわけで、ボイスデータ解析にUnity 使いました
  48. 48. リップシンク Unity側の設定 ユニティちゃんの場合、UnityChanLipSync.csを使用すれば大半 の設定が完了 エディタでいじったのはMorph SpeedとMax Morph Weightだけ
  49. 49. リップシンク Unity側の設定 ソース修正
  50. 50. リップシンク Unity側の設定 ソース修正
  51. 51. リップシンク AudioClipにボイス設定し、Playのボタンを押せばCSV生成
  52. 52. リップシンク CSVをFloatCurveでUE4にインポート
  53. 53. リップシンク 全FloatCurveにコンスタント補間をかける これでリップシンク時に変な口になる割合が減少する
  54. 54. リップシンク タイムラインを実装し、FloatCurveから適切なモーフターゲット の値を取得する
  55. 55. リップシンク タイムラインを20秒で20を返すFloatを作成 ※なぜ20秒なのかというと、再生するボイスデータが20秒を超え るものがないため
  56. 56. リップシンク SetNewTimeでボイスデータのDurationをセット Reverseで再生 Update経由で渡されるFloat値からボイスデータのDurationを引く ことによって、現在の再生時間がわかる
  57. 57. リップシンク アニメーションBPに、リップシンク設定用の関数を作成
  58. 58. リップシンク ボイス再生を行っている処理から、リップシンク再生イベントを 呼び出すように修正
  59. 59. リップシンク ボイス再生を行っている処理から、リップシンク再生イベントを 呼び出すように修正
  60. 60. UE4でカノジョを錬金するアドカレ 終了!!
  61. 61. UE4でカノジョを錬金するアドカレ まとめ 当然ですが、ストアにリリースするには課題がまだある •FPSを90維持できていないのでCPU処理を見直す(重要) •チュートリアルが用意されてない(重要) •モデルに近づくと中身が見えてしまう •表情が付いていない •手振りの実装できてない
  62. 62. UE4でカノジョを錬金するアドカレ まとめ 当然ですが、ストアにリリースするには課題がまだある •グレイちゃんがただのマスコットに •ニコニ立体ちゃんがただのマスコットに •キャラから視線をはずした時にボイスを言わせてみたい などなど…… ここで一旦、色々と処理を見直してストアにリリースさせたい!
  63. 63. UE4でカノジョを錬金するアドカレ まとめ ・あとはもう完全な自己満足 昨年、同じようなことをして25日までにアドカレが書ききれなか ったため、今年は書ききれてよかった 色々やりすぎて地獄しか見えなかったし、今回でかなり満足した ので、もう来年はやりませんw
  64. 64. UE4でカノジョを錬金するアドカレ まとめ ・ソースとスライド 25日、有料のアセットを抜いてGithubに公開します。 このスライドも25日以降に公開します。 ユニティちゃんライセンスとグレイちゃんの利用規約を継承して いますので、利用する際は必ず守ってください!
  65. 65. まとめ (VR元年前)
  66. 66. まとめ VR元年後
  67. 67. これでクリスマスも例の6時間も 安心して過ごせるね!! UE4でVR空間にカノジョを錬金するLT編 終わり!
  68. 68. The Phantom Knowledge Project for UE4 進捗報告
  69. 69. 25日に投稿予定のアドカレ記事です
  70. 70. 今日から睡眠時間削って検証します 進捗ダメです!!
  71. 71. The Phantom Knowledge Project • ユニティ・テクノロジーズ・ジャパン合同会社がUnity2017.1を用 いて制作したオリジナルアニメーション
  72. 72. The Phantom Knowledge Project • 2017年12月8日(金) プロジェクトデータ公開
  73. 73. ヤバイ!! UE4に移植するしかねぇ!! 今思えばなぜこんな頭のおかしいことをしようとしたのか、自分でもわからない そもそもシーケンサー3回ぐらいしか触ってない
  74. 74. おまけ 個人的ユニティちゃんUE4移植難易度 • 通常モデル&ハロウィン 易 シェーダー除く。初心者はまずここから
  75. 75. おまけ 個人的ユニティちゃんUE4移植難易度 • SDユニティちゃんズ 普通 シェーダー除く。アニメーションに自分でモーフターゲットを設定 する必要あり
  76. 76. おまけ 個人的ユニティちゃんUE4移植難易度 • ローポリユニティちゃん 易 アニメーションはリターゲットする必要あり
  77. 77. おまけ 個人的ユニティちゃんUE4移植難易度 • ユニティちゃんライブステージ! -Candy Rock Star- 凶悪 • アニメーション関連が凶悪 • ステージも色々と手間がかかる • 素直にUnityでいじくったほうが楽 • 美少女の面を被ったバケモノ
  78. 78. おまけ 個人的ユニティちゃんUE4移植難易度 どうしても見たい方は、てんちょーさんのGithubからソースを落と しましょう https://github.com/shop-0761/UnitychanLIVE-UE4Ver- てんちょーさんの 「CRSをUE4に移植してみた本」 という技術同人誌も手に入るのであれば 見るのも手
  79. 79. おまけ 個人的ユニティちゃんUE4移植難易度 • The Phantom Knowledge 検証中 • 軽く触ってみた感じ、CRSよりは簡単そう?
  80. 80. 現時点での進捗
  81. 81. 現時点での進捗 •サーバールームのシーン、モデルは大体移植完了 •マテリアルは自分の知識がないので後回し
  82. 82. 現時点での進捗 •家から出るシーン •背景は板ポリのようなのでシーケンサーのカメラで余計なも の写さないように気をつける
  83. 83. 現時点での進捗 •町のシーン。こちらも背景が板ポリ •元々のアニメーションの位置がおかしい(0,0,0ではない) •カメラで余計なもの写さないよう調整するしかない
  84. 84. 現時点での進捗 •ハイウェイ。マテリアルが57必要 •現在、元のモデルを見てどのテクスチャーが対応しているか 調査中
  85. 85. 現時点での進捗 •ゲート。モデル自体にまだ手をつけられていない
  86. 86. 現時点での進捗 •ゲート。モデル自体にまだ手をつけられていない
  87. 87. 現時点での進捗 •アカザモデル。アニメーションが好み(ただ位置がおかしい)
  88. 88. 現時点での進捗 •アニメーションの位置がほとんどおかしい •3Dモデルはともかくとして、板ポリのところの調整がホント大変 ……
  89. 89. 現時点での進捗 •こはく(制服)のFBXが無いため、ベルト付きスカートのメッシ ュをマテリアルで非表示(透明)にしないといけない
  90. 90. 現時点での進捗 •アニメーションに使用しているFBXはScenes/01_Masterに入って いる。Models/CharacterにあるFBXはテクスチャー以外、基本無 視して問題ない(というか全く使えない)
  91. 91. 現時点での進捗 •見た目同じモデルでも、ボーン、メッシュ構造が違うものがある ので、インポートするときは気をつける(FBXガチャみたい) これとこれは違うボーン ボーンを使いまわすとメッシュが崩れる
  92. 92. 進捗報告以上!! 25日までに書けるかなぁ…… シーケンサー、一度も手をつけてないし、もうすっかりやり方忘れたし……
  93. 93. 自分は例の6時間、 ユニティちゃんと向き合います!! The Phantom Knowledge Project for UE4進捗報告編 終わり! ご清聴ありがとうございます!

×