ぼっちプログラマのメモ

UE4とかVRとかについて書いたり書かなかったり。

UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < CPU・GPUプロファイリング編 >

本内容は複数の記事で構成されています。検索などでこの記事に直接飛んできた方はまず以下の記事をご確認ください。
pafuhana1213.hatenablog.com

はじめに

みんな大好きプロファイリングについての話です。
iOS開発では、Instrumentsというプロファイリング用のツールが用意されています。ここではをUE4で開発をする際にどのようにしてInstrumentsを使うかについて説明します。

…実機上で各statコマンドを活用することもお忘れなく。

www.slideshare.net

続きを読む

UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < CPU・GPUデバッグ編 >

本内容は複数の記事で構成されています。検索などでこの記事に直接飛んできた方はまず以下の記事をご確認ください。
pafuhana1213.hatenablog.com

はじめに

ゲームの動作や不具合を調査・デバッグする上でBreakPointは必要不可欠です。ということで、UE4 & iOS開発時にどのようにしてBreakPointを使うのかについて紹介します。なお、Xcodeを使用する関係でMacが必須なのでご注意ください ( MacMiniはいいぞ )。
f:id:pafuhana1213:20181213024154g:plain

続きを読む

UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < ログ確認・抽出編 >

本内容は複数の記事で構成されています。検索などでこの記事に直接飛んできた方はまず以下の記事をご確認ください。
pafuhana1213.hatenablog.com

はじめに

ゲーム中にPrintStringなどで出力したデバッグ情報の確認やクラッシュ時の原因調査など、ログファイルはすごく便利で得られるものも多いです!
ということで、まずはログの確認、ファイル取得から。

続きを読む

UE4 & iOS開発時の実機デバッグ・プロファイリング方法 まとめ 2018 < はじめに編 >

はじめに

この記事はUnreal Engine 4 Advent Calender 2018の13日目の記事です。
qiita.com

f:id:pafuhana1213:20181213023820j:plain
おかげさまでUE4モバイル案件が増えてきたということもあり、ネット上にあまり情報がないiOS開発時の実機デバッグ・プロファイリング方法についてまとめてみました。
…社内外含めて情報全然ない!がんばた!

各記事のご案内

…予想以上に内容が膨らんだので記事を分割しました。

  • ログの確認
    • 実行中のログ確認
    • 実行後のログ確認

pafuhana1213.hatenablog.com

pafuhana1213.hatenablog.com

  • CPU, GPUプロファイリング
    • Instrumentsを使って、CPU・GPU処理の負荷を確認

pafuhana1213.hatenablog.com

注意

なお、全て実機上でのデバッグ・プロファイリングについてです。UE4エディタ上で行う際はモバイルプレビュア機能をご活用ください。ただしあくまで疑似再現なので、ちゃんとデバッグ・プロファイリングするときは実機でしましょう!
api.unrealengine.com

また、stat関連とログ取得以外に関しては必ずMacが必要になります


Mac Mini(2018)、少なくとも個人開発レベルでは、リモートビルド・プロファイリングする上で不便に思ったことはないです。オススメです。はい。

Macと仲良くできるかはまた別問題だけどな!

検証環境

開発環境構築について

皆さん大好きな証明書、プロビジョニングファイル、リモートビルドを含む開発環境の構築に関しては、わんちゃん( @WanchanJP )さんの神記事に全てが載っているのでご確認くださいまし…(本当に…本当にありがとうございます!)
soramame-games.com

最後に (各記事をご確認頂いた後にどうぞ)

手探り感が凄いですが、UE4iOS開発をする際のデバッグ・プロファイリング方法について簡単にまとめてみました。
ただ、Macを使った開発をまだ勉強中ということもあり、「もっといい方法があるよ!」と思う方がいるかもしれません…

そういう方は…ぜひ教えてください!
なんでもしますから!

はい

以上です。あとは各記事をご確認ください。
明日は @dgtanaka さんの「なんか書きます」です!
いつも非常に有益な記事を公開して頂いているので今回も楽しみです!

Oculus社のリップシンクライブラリ「Oculus LipSync ( OVRLipSync )」をUE4で使う方法について その2 (Grayちゃんでリップシンク!編)

はじめに

この記事はこちらの記事の続きです
pafuhana1213.hatenablog.com

前回はOVRLipSyncのサンプルについて解説しました。しかし、サンプルに含まれるモデルはOVRLipSyncの仕様に超特化したものなので、そのまま他モデルに適用することはできません。
そこで、他モデルでOVRLipSyncを使うにはどうすればいいのかについて解説します。なお、今回の解説では皆大好きなGrayちゃんのモデル・ボイスをお借りしています。
3Dモデル:Grayちゃんモデルデータ – rarilog
ボイス:Grayちゃんボイスが、より扱いやすくなりました - Grayちゃん OFFICIAL WEBSITE


OVRLipSyncプラグインの導入

まずは公式サンプルプロジェクト( OVRLipSyncDemo )に含まれるOVRLipSyncプラグインを別プロジェクトで移植します。今回はGrayちゃんの3Dモデルに含まれるGrayChanProjectに移植します。

1. OVRLipSyncプラグインをコピペ

OVRLipSyncDemoにある Pluginsフォルダ を GrayChanProjectのルートフォルダ(GrayChanProject.uprojectがあるフォルダ)にコピペします

2. マイクを使うために設定追加

GrayChanProjectのConfigフォルダにある DefaultEngine.ini に 以下の文字列を追加します。これでマイクが使用可能になります。なお、事前に録音した音声しか使わない場合はこの設定追加は不要です。

[Voice]
bEnabled=True

[OnlineSubsystem]
bHasVoiceEnabled=False

3. OVRLipSyncプラグインが有効になっているか確認

GrayChanProjectを開き、PluginsからOVRLipSyncプラグインが有効になっているか確認します。
f:id:pafuhana1213:20181126001832p:plain

なお、OVRLipSyncプラグインは "EnabledByDefault" : true なのでデフォルトで有効になっているはずです。ですので、この確認はあくまで念の為だったりします。
( 気になる方は、OVRLipSync.uplugin をテキストエディタで開いてみましょう! )

Grayちゃんボイスで口パクしてみる

今回はマイク音声ではなく、事前に収録された音声であるGrayちゃんボイスを使ってみます。マイクを使用する場合でもBPによる実装内容は殆ど変わりないからです。準備周りはサンプルからコピペしましょう!

音声データのインポート・変換

まずは使用する音声データをUE4にインポートし、右クリックメニューからOVRLipSync Frame Sequenceを生成します。(詳細は前回の記事で)
f:id:pafuhana1213:20181126002349p:plain

必要なコンポーネントの追加・セットアップ

次に、ThirdPersonCharacterにOVRLipSyncPlaybackActorコンポーネントとAudioコンポーネントを追加します。
f:id:pafuhana1213:20181126002526p:plain

そして、OVRLipSyncPlaybackActorコンポーネントには先程作成したOVRLipSync Frame Sequenceを指定します。
f:id:pafuhana1213:20181126002853p:plain
また、Audioコンポーネントにはインポートした音声データ(SoundWave)を指定し、さらに勝手に自動再生されないように Auto ActivateをOFFにしておきます。
f:id:pafuhana1213:20181126002920p:plain

口パク(モーフターゲット)制御の実装

最後に、OVRLipSyncが解析した口パクをGrayちゃんモデルに渡す処理をBPで実装します。

まずは、ボイスとOVRLipSyncによる解析を開始する処理を書きます。今回は簡単に 1キー を押したら処理を開始するようにします。
f:id:pafuhana1213:20181126004946p:plain

次に、OVRLipSyncによる解析結果が更新される On Visemes Ready イベントにてGrayちゃんのモーフターゲットを制御する処理を実行します。

前回の記事で紹介した通り、OVRLipSyncはVisemsという音声解析を元にした口の形状パラメータの配列を返してくれます。
公式ドキュメント:Viseme Reference

そして、今回使用するGrayちゃんモデルには母音( a, i, u, e, o )用のモーフターゲットが用意されています。
f:id:pafuhana1213:20181126003856p:plain

ですので、Visemsの10番目から15番目のパラメータを各Visemに対応するモーフターゲットに渡す形になります。ちなみに、パラメータの順番はこんな感じ。
f:id:pafuhana1213:20181126004431p:plain

上記のように配列から一つずつ値を取得する感じで実装しても良いのですが、せっかくなのでシンプルに実装してみました!
f:id:pafuhana1213:20181126011400p:plain
コピペ用: https://blueprintue.com/blueprint/p-z2c6ys/

これで準備完了です。実行して 1キー を押すと 「はじめに」で載せた動画のように音声に合わせて口パクします!

最後に

これでサンプル以外のモデルでもOVRLipSyncを用いた口パクができるようになりました。しかし、改良の余地はまだまだまだまだあります。例えば、口をもっと大きく開くように補正処理をかけたり…
f:id:pafuhana1213:20181126010038p:plain

アニメ的な表現を再現するために更新間隔を調整したりなどなど…色々あります!(ググると色々…モニョモニョ…)
是非色々カスタムしてみてください!

補足

シーケンスレコーダーによるベイク処理を使って、OVRLipSyncによる口パクをアニメーションアセット化したい方がそれなりにいるかと思います。

www.slideshare.net
(シーケンスレコーダーについては、126ページ以降)

しかし、Set Morph Targetでモーフターゲットを制御する場合はベイク処理の対象外になります。そのため、ベイク処理の対象にするためには、Animation BPのAnim Graphにて Modify Curveノードを使って各モーフターゲットの値を制御する必要があります。ご注意下さいまし。
f:id:pafuhana1213:20181126011012p:plain

おわり

Oculus社のリップシンクライブラリ「Oculus LipSync ( OVRLipSync )」をUE4で使う方法について その1 (サンプル解説編)

はじめに

2018/10/14のアンリアルフェスにて、UE4VTuberをする方法について講演しました。

www.slideshare.net

その中で「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)なので、全てのパターンを使い分ける必要はないかと思います。)
f:id:pafuhana1213:20181116232919g:plain
Visemeに関するドキュメント:Viseme Reference

以降は、サンプルに含まれるBPについて簡単にですが解説します。

OC5におけるOVRLipSyncに関する講演

www.youtube.com

続きを読む

Windows + iOS開発で必要な証明書・プロビジョニングファイルを削除する方法

はじめに

Windows上からMacをリモートで使ってiOSパッケージを作成するリモートビルドという機能がUE4にはあります。
そのリモートビルドが急に上手くいかなくなった時とかに試す証明書・プロビジョニングファイルの削除を
何度も何度も忘れるのでメモ。なお、自己責任でお願いします

Windows上での証明書・プロビジョニングファイルの作成手順
Unreal Engine | iOS クイックスタート

リモートビルドについて
Unreal Engine | Windows で iOS をビルドする

プロビジョニングファイルの削除

"C:\Users\\AppData\Local\Apple Computer\MobileDevice\Provisioning Profiles"
のファイルを全削除

証明書の削除

Win+Rを押した後に、certmgr.msc と入力・実行
f:id:pafuhana1213:20181019112922p:plain

Certificates->Personal->Certificates にある iPhone Developer :~ を全削除
f:id:pafuhana1213:20181019113135p:plain

以上