uLipSyncをTimelineで使う&音声ファイルから口パクアニメーションを自動で作る
uLipSyncをTimelineで使う際にハマったことがあったので、忘れないようにメモしました。
VRM0.xを使う場合、Githubのページからダウンロードしたパッケージをインポートすると、「uLipSync BlendShape VRM」がエラーになっていて使えない場合があります。その回避方法も含めてメモしています。
(これはuLipSyncが悪いのではなく、Unityの仕様だそうです)
全体的な準備
1.PackageManagerから「Burst」をインポートする
2.以下のURLにアクセスし、図の3つのURLをPackageManagerに入力してインポートする

3.Package Managerから下記のURLを入力してインポートする
「https://github.com/hecomi/uLipSync.git#upm」

4.「00. Common」「04. VRM」のサンプルをインポートする

5.VRMファイルや音声ファイル、アニメーションファイルなどを読み込む
6.Package Managerから「PostProcessing」と「Cinemachine」をインポートしておく
7.Assetsフォルダを右クリックして、Create→Timelineを作成し、Hierarchyにラッグ&ドロップする
8.「Window」メニュー→「Sequencing」→「Timeline」を選択し、Timelineウィンドウを出す
9.Timelineウィンドウのカギアイコンをクリックして、表示を固定しておく
10.Timelineウィンドウの「+」アイコンをクリックし、「Animation Track」を選択する
11.トラックのところに再生させたい.animファイルをドラッグ&ドロップする
12.口パク用の音声ファイルをTimelineウィンドウにドラッグ&ドロップする
13.Hierarchyにあるカメラのタグが「Maincamera」になっていることを確認する
14.Hierarchyの「+」アイコンをクリックし、「Cinemachine」→「Virtual Camera」を選択する
15.Maincameraのタグがついているカメラの横にCinemachineのアイコンが出ていることを確認する

16.Timelineウィンドウの「+」アイコンをクリックし、「Cinemachine Track」を選択する
17.HierarchyのVirtual CameraをCinemachine Trackのトラックにドラッグ&ドロップする
18.「Project」フォルダ→「Packages」→「uLipSync」→「Assets」→「Profiles」→「uLipSync-Profile-Sample-Female(またはMale)」をコピーし、「Assets」フォルダのどこかにペーストする

19.VRMキャラクターに「uLipSync BlendShape VRM」と「uLipSync Timeline Event」を適用する(以下の写真は余計なものがひとつ写っていますが、お気になさらず)

20.「Blend Shapes」の項目の「Phoneme」と「Blend Shapes」がVRMのBlendShapeと合っているか確認する(uLipSyncのVRMサンプルシーンのVRMキャラクターPrefabからコピペするのがいちばんいいかも)

21.「uLipSync Timeline Event」の「+」を押し、「None」のところに「uLipSync BlendShape VRM」を適用したキャラクターをドラッグ&ドロップする
22.「Editor And Runtime」の横をクリックし、「uLipSyncBlendShapeVRM」→「OnLipSyncUpdate」を選択する


リップシンクファイルの作成
1.「Window」メニュー→「uLipSync」→「Baked Data Generator」を選択する(公式さんのようにTimeline Setup Helperでリップシンクファイルを作ってもいいのですが、エラーが起こる可能性が非常に高かったため、この方法を取ります)

2.「Profile」に「全体的な準備18.」でコピペした「uLipSync-Profile-Sample-Female(またはMale)」をドラッグ&ドロップする

3.「Audio Clips」の「Size」に1を入力し、「Element 0」に口パクさせたい音声ファイルをドラッグ&ドロップする
4.「Output Directory」の横の「…」をクリックし、口パク用のアニメーションファイルを保存するフォルダを指定する
5.「Generate」ボタンをクリックすると、4.で指定したフォルダに口パク用のファイルができている
6.5.のファイルをTimelineトラックにドラッグ&ドロップする
7.このように口パク用ファイルが配置されるので、音声ファイルと同じ開始時点に移動させる。音声ファイルの長さと口パクファイルの長さが同じになっているので、位置をAudioTrackのファイルに合わせる

Cinemachineでカメラをアニメーションさせる
1.Timelineウィンドウの「+」ボタンをクリックし、「Animation Track」を追加する
2.「None(Animator)」のところに「全体的な準備14.」で作成したバーチャルカメラをドラッグ&ドロップする
3.◎ボタンをクリックして記録状態にし、カメラを動かす
4.録画状態でカメラを動かすと、その状態が記録されてカメラをアニメーションさせることができる
PostProcessingをつける
ポスプロをつけていきます。Timelineでもポスプロは制御できますが、少しハードルが高くなるので、全体的なポスプロをメモしておきます。
1.Maincameraのタグがついているカメラに「Post-process Layer」を適用し、以下のように設定する

2.新規で空のオブジェクトを作成し、「Post-process Volume」を適用する

3.「Profile」の横の「New」をクリックし、それぞれポスプロの項目を設定する