トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

uLipSyncで事前録音した音声からTimelineでVRMモデルを口パク

uLipSyncを久しぶりに使う

bibinbaleo.hatenablog.com

2年ぶり!

準備

Unity2022.3.7

uLipSync 3.0.2

PackageManagerでいれた

https://github.com/hecomi/uLipSync.git#upm

github.com

サンプルもタブから入れる。CommonとVRMとTimeline

VRM

サンプルシーンを動かす

VRM1.0

実行したら動いた

VRMにAudioSourceと、uLipSyncのスクリプトと

ExpressionVRMというファイルがついてる

VRM0.Xのほうは、ExpressionVRMじゃなくてBlendShapeVRMがついてる

自分のモデルがVRMバージョンどっちかわからない。

0.Xのほうでやったら動いた

uLipSyncUpdateのところで参照するものを自分自身のBlendShaprVRMモデルに変える

 

試しにExpressionVRMコンポーネント(VRM1.0用)を付けたらこれは1.0じゃないって言われた。最近VroidMobileで作ったばっかりのモデルなのに1.0じゃないんだ

 

音声録音

Windowsのボイス録画ソフトを使う

Windows11からサウンドレコーダーという名前になった。前はボイスレコーダーだった気がする。

デフォルトだとm4a形式で録音された。これはUnityに取り込めない。

設定でレコーディング形式をmp3に変更できた。

これで適当にしゃべった

そしてサンプルのAudioSourceのAudioClipに入れたら、ちゃんと喋った通りに動いた

Timeline

Timelineのサンプルのほうは、事前に計算したデータを使っている。

uLipSync用のトラック追加

Trackの中のClip?の設定。ここにBakedDataを入れる

モデルにもタイムライン用のコンポーネントがついてる

Bakeデータは、右クリックCreateから空のBakedDataを作って

そのインスペクタ内でプロファイルとAudioClipを選んでBakeして作れる

そしてタイムラインに組み込んだら自分の音声で動いた!

VRMではこんな感じ

 

Animationデータ

今の本番環境だとuLipSyncアセットがエラーが出てなぜか動かないし、動いたとしてもWebGLビルドの時にもエラーが出てた気がするから、別のきれいなUnityProjectでAnimationデータとして口パクを書き出せないかな~と思ったらなんとその機能もあった!すごい!

tips.hecomi.com

AnimationBakeサンプルで見れる

本当にアニメーションになってる!シーンのモデルについているuLipSyncコンポーネントを消しても動く!

自分で作るにはここからウィンドウを出して

いろいろセット

したけどエラーが出てCreate output directoryで止まってしまう

エラーにはThe variable skinnedMeshRenderer of uLipSyncBlendShapeVRM has not been assigned.と書いてある。

uLipSyncBlendShapeVRMにはskinnedMeshRendererをセットするとこないんだけどな~

使えないのかな;;

あとこのプログレスウィンドウを消すすべがUnityごと消すしかないのがつらい

元からついていたVRMモデルで試してもダメで、Unityちゃんで試したらできたのでやっぱりuLipSyncBlendShapeVRMのせいっぽい

 

追記

VRMでのやり方の記事を書いていただけました!!

tips.hecomi.com

uLipSyncBlendShapeVRMははずして、uLipSyncBlendShapeをつけ、Faceを選び以下のようにする

一回これ試したとき、BlendShapesに新しい項目を追加しても、BlendShapeのところに何も出てこなかったので、使えないのかなと思ったが、項目追加した後にもう一度Face以外のBodyとかにしてFaceを選びなおしたらいろいろ候補が出てくるようになった

これで作ったらエラーをはかずAnimationClipができた!

できたAnimationClipをTimelineに設定したらうごいた

Animatorの中に生成された口パクAnimationを設定しても動く

別プロジェクトへ

同じモデルに対して別のUnityプロジェクトで口パクアニメーションを作って、本番用のUnityプロジェクトにAnimationClipだけ持ってきて動くのだろうか?

動いた!!!!

しかも別のモデルでもVRM同士だからなのか同じBlendShape名?だからなのか適用した!やった~

もともと本番プロジェクトのほうのキャラは手動のキー打ちで口パクとか表情を付けていたので、口に関するキーは消して、持ってきた口パクアニメーションをTimelineに追加したら完全にぱくぱくした!