UE4の物理アセット・クロスの荒ぶりを何とかする方法について (UE4.21版)
はじめに
この記事はUnreal Engine 4 その2 Advent Calendar 2018の20日目の記事です。
qiita.com
何を書こうか色々悩んだのですが、今年も物理と仲良くする(意味深)方法について書こうと思います。なお、去年の記事は以下の通り。(え、もうアレから一年経ったの!?)
「UE4.18で生まれ変わった物理アセットエディタ(Physics Asset Editor)について」 と 「物理と少し仲良くなる方法について」
その1:http://pafuhana1213.hatenablog.com/entry/2017/12/13/000000
その2:http://pafuhana1213.hatenablog.com/entry/2017/12/13/000100
その3:http://pafuhana1213.hatenablog.com/entry/2017/12/13/003018
実験に付き合ってもらうのはいつものこの方々。左のOwenくんはクロス担当、右のグレイマンは物理アセット担当です。
なお、今回は物理アセット・クロスの設定を極力変えずに既存の機能で何とかすることを目標とします。何故なら去年の内容と被りますし、作業コスト高いですし、職人芸になりがちですし、、説明が大変だからです!(ドン!
物理の荒ぶりに対して、我々はどう立ち向かえばいいのか?
基本方針は以下の3つです!
- 荒ぶりの原因になる挙動を無視させる
- 物理をリセットして荒ぶりを消す
- 荒ぶり前に物理を停止し、その後再開する
これらの対応を入れることで、(色々と許容しないといけない場合あったりしますが)、だいたいの物理の荒ぶりを回避できます。
具体的にどうすればいいのか、これから順に説明します。
UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < CPU・GPUプロファイリング編 >
本内容は複数の記事で構成されています。検索などでこの記事に直接飛んできた方はまず以下の記事をご確認ください。
pafuhana1213.hatenablog.com
はじめに
みんな大好きプロファイリングについての話です。
iOS開発では、Instrumentsというプロファイリング用のツールが用意されています。ここではをUE4で開発をする際にどのようにしてInstrumentsを使うかについて説明します。
…実機上で各statコマンドを活用することもお忘れなく。
UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < ログ確認・抽出編 >
本内容は複数の記事で構成されています。検索などでこの記事に直接飛んできた方はまず以下の記事をご確認ください。
pafuhana1213.hatenablog.com
はじめに
ゲーム中にPrintStringなどで出力したデバッグ情報の確認やクラッシュ時の原因調査など、ログファイルはすごく便利で得られるものも多いです!
ということで、まずはログの確認、ファイル取得から。
UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < はじめに編 >
はじめに
この記事はUnreal Engine 4 Advent Calender 2018の13日目の記事です。
qiita.com
おかげさまでUE4モバイル案件が増えてきたということもあり、ネット上にあまり情報がないiOS開発時の実機デバッグ・プロファイリング方法についてまとめてみました。
…社内外含めて情報全然ない!がんばた!
注意
なお、全て実機上でのデバッグ・プロファイリングについてです。UE4エディタ上で行う際はモバイルプレビュア機能をご活用ください。ただしあくまで疑似再現なので、ちゃんとデバッグ・プロファイリングするときは実機でしましょう!
api.unrealengine.com
また、stat関連とログ取得以外に関しては必ずMacが必要になります。
mac miniポチった pic.twitter.com/EUe5yyV3FO
— おかず (@pafuhana1213) October 31, 2018
Mac Mini(2018)、少なくとも個人開発レベルでは、リモートビルド・プロファイリングする上で不便に思ったことはないです。オススメです。はい。
Macと仲良くできるかはまた別問題だけどな!
開発環境構築について
皆さん大好きな証明書、プロビジョニングファイル、リモートビルドを含む開発環境の構築に関しては、わんちゃん( @WanchanJP )さんの神記事に全てが載っているのでご確認くださいまし…(本当に…本当にありがとうございます!)
soramame-games.com
Oculus社のリップシンクライブラリ「Oculus LipSync ( OVRLipSync )」をUE4で使う方法について その2 (Grayちゃんでリップシンク!編)
はじめに
この記事はこちらの記事の続きです
pafuhana1213.hatenablog.com
前回はOVRLipSyncのサンプルについて解説しました。しかし、サンプルに含まれるモデルはOVRLipSyncの仕様に超特化したものなので、そのまま他モデルに適用することはできません。
そこで、他モデルでOVRLipSyncを使うにはどうすればいいのかについて解説します。なお、今回の解説では皆大好きなGrayちゃんのモデル・ボイスをお借りしています。
3Dモデル:Grayちゃんモデルデータ – rarilog
ボイス:Grayちゃんボイスが、より扱いやすくなりました - Grayちゃん OFFICIAL WEBSITE
— おかず (@pafuhana1213) November 25, 2018
OVRLipSyncプラグインの導入
まずは公式サンプルプロジェクト( OVRLipSyncDemo )に含まれるOVRLipSyncプラグインを別プロジェクトで移植します。今回はGrayちゃんの3Dモデルに含まれるGrayChanProjectに移植します。
1. OVRLipSyncプラグインをコピペ
OVRLipSyncDemoにある Pluginsフォルダ を GrayChanProjectのルートフォルダ(GrayChanProject.uprojectがあるフォルダ)にコピペします
2. マイクを使うために設定追加
GrayChanProjectのConfigフォルダにある DefaultEngine.ini に 以下の文字列を追加します。これでマイクが使用可能になります。なお、事前に録音した音声しか使わない場合はこの設定追加は不要です。
[Voice] bEnabled=True [OnlineSubsystem] bHasVoiceEnabled=False
Grayちゃんボイスで口パクしてみる
今回はマイク音声ではなく、事前に収録された音声であるGrayちゃんボイスを使ってみます。マイクを使用する場合でもBPによる実装内容は殆ど変わりないからです。準備周りはサンプルからコピペしましょう!
音声データのインポート・変換
まずは使用する音声データをUE4にインポートし、右クリックメニューからOVRLipSync Frame Sequenceを生成します。(詳細は前回の記事で)
必要なコンポーネントの追加・セットアップ
次に、ThirdPersonCharacterにOVRLipSyncPlaybackActorコンポーネントとAudioコンポーネントを追加します。
そして、OVRLipSyncPlaybackActorコンポーネントには先程作成したOVRLipSync Frame Sequenceを指定します。
また、Audioコンポーネントにはインポートした音声データ(SoundWave)を指定し、さらに勝手に自動再生されないように Auto ActivateをOFFにしておきます。
口パク(モーフターゲット)制御の実装
最後に、OVRLipSyncが解析した口パクをGrayちゃんモデルに渡す処理をBPで実装します。
まずは、ボイスとOVRLipSyncによる解析を開始する処理を書きます。今回は簡単に 1キー を押したら処理を開始するようにします。
次に、OVRLipSyncによる解析結果が更新される On Visemes Ready イベントにてGrayちゃんのモーフターゲットを制御する処理を実行します。
前回の記事で紹介した通り、OVRLipSyncはVisemsという音声解析を元にした口の形状パラメータの配列を返してくれます。
公式ドキュメント:Viseme Reference
そして、今回使用するGrayちゃんモデルには母音( a, i, u, e, o )用のモーフターゲットが用意されています。
ですので、Visemsの10番目から15番目のパラメータを各Visemに対応するモーフターゲットに渡す形になります。ちなみに、パラメータの順番はこんな感じ。
上記のように配列から一つずつ値を取得する感じで実装しても良いのですが、せっかくなのでシンプルに実装してみました!
コピペ用: https://blueprintue.com/blueprint/p-z2c6ys/
これで準備完了です。実行して 1キー を押すと 「はじめに」で載せた動画のように音声に合わせて口パクします!
最後に
これでサンプル以外のモデルでもOVRLipSyncを用いた口パクができるようになりました。しかし、改良の余地はまだまだまだまだあります。例えば、口をもっと大きく開くように補正処理をかけたり…
口パクパラメータ補正版 pic.twitter.com/epw1rZpyVo
— おかず (@pafuhana1213) November 25, 2018
アニメ的な表現を再現するために更新間隔を調整したりなどなど…色々あります!(ググると色々…モニョモニョ…)
是非色々カスタムしてみてください!
補足
シーケンスレコーダーによるベイク処理を使って、OVRLipSyncによる口パクをアニメーションアセット化したい方がそれなりにいるかと思います。
(シーケンスレコーダーについては、126ページ以降)
しかし、Set Morph Targetでモーフターゲットを制御する場合はベイク処理の対象外になります。そのため、ベイク処理の対象にするためには、Animation BPのAnim Graphにて Modify Curveノードを使って各モーフターゲットの値を制御する必要があります。ご注意下さいまし。
おわり
Oculus社のリップシンクライブラリ「Oculus LipSync ( OVRLipSync )」をUE4で使う方法について その1 (サンプル解説編)
はじめに
2018/10/14のアンリアルフェスにて、UE4でVTuberをする方法について講演しました。
その中で「Oculus LipSyncはいいぞ!」ムーブをキメました(p94以降)が…具体的にどのように導入・使用するのかについて触れなかったので記事にまとめようと思います。
Oculus LipSyncについて
Oculus LipSync ( 以下、OVRLipSync ) はOculus社が提供しているリップシンク(口パク)ライブラリで、2018/10/5にリリースされた v1.30.0 でUE4に対応しました。そして、2018/11現在(v.1.30.0)ではUE4.20に対応しており、サンプルプロジェクトも用意されています(v.1.30.0、UE4.21でも一応動きました)。
このライブラリを使うことで、マイク音声または事前に収録した音声データ( SoundWavアセット )からリップシンク情報を取得することができます。つまり、セリフに合わせたキャラクタの口パクアニメーションを簡単に作ることができます!
( 表情用のMorph TargetをキャラのSkeletalMeshに用意する必要はありますが… )
サンプルでは、OVRLipSyncが検出した口形素( Viseme )をSkeletal MeshのMorph Targetに渡すBPが用意されています。Visemeは音声から唇の形状を分類したもので、全部で15パターン用意されています。( ただ一般的によく用いられるのは母音(a, i , u, e, o)なので、全てのパターンを使い分ける必要はないかと思います。)
Visemeに関するドキュメント:Viseme Reference
以降は、サンプルに含まれるBPについて簡単にですが解説します。
公式ドキュメント
https://developer.oculus.com/documentation/audiosdk/latest/concepts/book-audio-ovrlipsync-unreal/
https://developer.oculus.com/documentation/audiosdk/latest/concepts/audio-ovrlipsync-using-unreal/
https://developer.oculus.com/documentation/audiosdk/latest/concepts/audio-ovrlipsync-precomputed-unreal/
https://developer.oculus.com/documentation/audiosdk/latest/concepts/audio-ovrlipsync-sample-unreal/