どうも、コニーです!
この記事では
・VRMでリップシンク(口の動き)を作りたい
・VRMで表情モーションを作りたい
・プラグインとかわからん
という方向けに
プラグインを使わずに表情や口の動きを付ける方法を紹介します!!
画像を使って丁寧に解説していくので、
初心者でも大丈夫です
この記事のゴールはこんな感じです
ステップとしてはこんな感じになっているので、
順番に読んでいけば上の動画が作れます!!
Step0:使う素材をダウンロード
Step1:口の動きを作る
Step2:表情モーションを追加する
それではやり方を見ていきましょう!!
本記事はニコニ立体ちゃんライセンス利用規約に基づいて制作しています
【Step0】今回使う素材(モデル)
先に今回使う素材とそのダウンロードリンクを貼っておきます
VRMモデル『ニコニ立体ちゃん』
今回動かすVRMモデルはアリシアちゃん、通称ニコニ立体ちゃんです
公式のリンクはこちらです
UniVRM
VRMをUnityにインポートするためのツールです
unitypackageでダウンロードしておきましょう!
お持ちのものがあればそのバージョンで大丈夫です
【Step1】Unity上でVRMのリップシンクを作るやり方
それではさっそくUnityでVRMのリップシンクを作っていきましょう!
やり方を一言で表すと
『VRMにもともとついているブレンドシェイプを再現して動かす』
VRMにはブレンドシェイプという
口の動きや表情を表すためのテンプレートみたいなものが設定されています
これはこれで便利なのですが、動画を作る上ではめっちゃ使いづらいので自作しようというのが今回のやり方です
全体の流れとしては
(1)準備
(2)アニメーションクリップ作成
(3)アニメーションの編集
という感じです
「VRMのインポートやTimelineの準備などはもう知っているよ」というかたは③から読み進めてOKです!
①VRMをインポートする
まずはサクッとVRMをインポートしましょう!
ダウンロードしてきたUniVRMとVRMファイルを
UniVRM→VRMという順に読み込みます
UniVRMはunitypackageファイルを、VRMは.vrmとなっているものを探します
そしてそれぞれUnityのプロジェクトウィンドウにドラッグ&ドロップします
このときそれぞれフォルダを作ってファイル分けしておくと見やすいですよ!
VRMファイルをヒエラルキーに移して原点に配置します
カメラは図のように設定しましょう(後ほどいじります)
②Timelineを準備する
次にTimelineの準備です
ヒエラルキーでCreateEmptyを選択し、Timelineを動かすようのオブジェクトを作ります
そのオブジェクトを選択しながらTimelineウィンドウからTimelineを作りましょう
ここらへんは普通のTimelineの導入なので、もしわからない場合はUnityのチュートリアルを見てください
Timelineウィンドウがない場合は画面上のツールバーにあるWindowから作れます
③Timelineにモデルをセットする
次にTimelineにアリシアちゃんをセットします
ヒエラルキーのアリシアちゃんをTimelineウィンドウにドラッグ&ドロップします
「AddAnimationTrack」を選択して図のようになったらOKです!
④アニメーションクリップを準備する
さてここからが今回の主題、アニメーション制作です!
今回は「あ」と口を開けるアニメーションを作っていきます!
先にゴールをお見せするとこんな感じです
Unityを再生しなくてもTimelineに沿って口が変化しているのがわかりますね!
まずはプロジェクトウィンドウでAnimation用のフォルダを作ります
めちゃめちゃたくさんのアニメーションクリップを作ることになるので、フォルダを作らないと悲惨です!笑
そしてフォルダ内で「Mouth_A」という名前のアニメーションクリップを作成してください
アニメーションクリップは
右クリック>Create>Animation
で作れます
⑤VRMのブレンドシェイプの中身を確認する
次に「あ」と口を開いた状態を再現するのに必要なブレンドシェイプを確認します
プロジェクトウィンドウで「BlendShape」と検索し、一番最初に出てくるやつを選択します
これはVRMのブレンドシェイプを追加したり編集したりできるファイルです
そのモデルに設定されているブレンドシェイプが一覧でわかるので、「これ作りたい!!」というのを探すときに便利です!
今回はシンプルに「A」(「あ」の形のもの)を選びます
ブレンドシェイプを選ぶとプレビューが見れます
表示されていないときはインスペクター右下にある『BlendShape』バーを引き上げると見れると思います
そして「A」を選択したままBlendShapeListをクリックします
表示されるのがVRMのブレンドシェイプがいじっている対象です
今回だと「bs_face.mouth_a」というやつですね!
名前はいかついですが、これは制作者が悪いです笑
そういうもんと受け入れてください
⑥アニメーションを作る
いよいよ先ほどのブレンドシェイプを使ったアニメーションを作っていきます
まずはTimilineウィンドウのアリシアちゃんのトラックで右クリック
「Add From Animation Clip」を選択して、「Mouth_A」を選んでください
アリシアちゃんが埋まってしまいますが、ダンスモーションをつけると直ります。
カメラのY座標を0.4にして、いったん無視してください。
⑦アニメーションクリップの編集
追加されたMouth_Aクリップをダブルクリックして編集画面に移ります
まずはAddPropartyをクリックしてこのクリップで操作する対象を選びます
今回は先ほど登場した「bs_face.mouth_a」を選びます
場所が結構複雑で
mesh>face>SkinedMeshRenderer>BlendShape.bs_face.mouth_a
という感じになっています
VRMのモデルごとにファイル構造が違いますので、場所はモデルごとに違います
しかし大体「Face」の下のSkinedMeshRendererにあるので参考にしてください
ここからは普通のアニメーション作成と同じです
キーフレームを打って0~100の間でアニメーションさせます
今回はわかりやすく、口を閉じた状態から開いてまた閉じるという動きを作りました!
ちなみに表情モーションも同じやり方で作れます
⑧複数クリップを作ってつなげる
④~⑦の作業を必要なクリップ分作り、つなげていきます
それぞれ作って編集していくと結構な数になります
割と面倒な作業ではありますが、一番あなたの腕が光るところなので頑張ってください!
それができたらリップシンクの完成です!!!
ここまで作った自分をほめて、そして動画をみてニヤニヤしてください笑
【Step2】Unity上でVRMの表情モーションを作る方法
ここからは
Step1で作った口の動きに表情モーションを追加していきます
Step2のゴールとなる状態はこんな感じです
どうですか?
かなりかわいくないですか!?(笑)
無表情で口パクしている状態に比べて随分とかわいさが増したと思います
このステップで重要なのは1つだけ!!
UnityのOverrideトラックを使うことです
この機能をうまく使うことで簡単に先ほどの動きが実装できます
UnityのOverrideトラックについて
それではさっそくOverrideトラックについて解説していきます
まず「Overrideって何?」ということなんですが、
Overrideとは上書きするという意味です
なのでOverrideトラックというのは
Timelineにすでにあるトラックを、上書きしてアレンジするよ~というものです
今回だと
口の動きに表情アニメーションを上書きして付け足す
という感じになります
アニメションをレイヤーで管理するといったら伝わる方もいるかもしれません
なんとなくわかりましたか?
後は実際の手順をみてみると納得感が出ると思います!!
表情モーションの作り方の流れ
Overrideトラックについてなんとなく掴めたところで、
実際に口+表情アニメーションをさせる手順を見ていきましょう!
今回は
①アバターマスクを作る
②Overrideトラックを作る
③Overrideトラックにアバターマスクを設定
④アニメーションを作る
という順番でやっていきます
「アバターマスクって何?」と思ったかもしれませんが、
これは「どのパーツを上書きしますか?」っていうのを決める作業です
簡単なので記事を見ながら一緒にやっていましょう!
①アバターマスクを作る
まずはアバターマスクを作っていきましょう!
先ほども言いましたが
アバターマスク=上書き場所の指定
です
Overrideトラックをどのパーツに反映させるかを指定することができます
実際のやり方ですが
プロジェクトウィンドウで
「右クリック>Create>AvatarMask」
を選択します
アニメーションクリップを作った時と同じですね!
そして名前は「Mask_Face」としてください
アバターマスクをクリックすると「Humanoid」と「Transform」という2つの項目があります
今回は「Humanoid」の方だけ使うのでそちらをクリックしてください
すると人型の図が出てきますが、
各パーツをクリックして図のように顔だけ緑になっている状態にします
勘の良いかたはお気づきかもしれませんが、
この緑の部分が上書きする場所です
なので
「腕の動きを上書きするときは腕」
「指先の動きを上書きするときは指先」
を緑にすれば複雑なアニメーションも実装できます!
②Overrideトラックを作る
次に例のOverrideトラックを作っていきます
まずはTimelineウィンドウを開きます
そしてStep1で作ったアリシアちゃんのアニメーショントラックを選択します
すると赤丸の横に「:」の3個バージョンみたいなやつがあるので、それをクリックします
(あれなんて言うのかわからない…)
そして「Add OverrideTrack」を選択するとOverrideトラックを作成することができます!
③Overrideトラックにアバターマスクを設定
次に先ほど作成したアバターマスクをOverrideトラックに適用させましょう
Overrideトラックを選択して、インスペクターを見ます
するとAvatarMaskを選べる場所があるので、そこから「Mask_Face」を選択します
これでOverrideトラックに
「この部分を上書きしてね~」
と教えることができました!
③アニメーションを作成
さていよいよ最後の工程です
Step1で紹介したやり方で表情のアニメションを作ってください
1層目は口の動き、
2層目(Overrideトラック)は表情の動き
という風に分けるように作ると作業しやすいです
今回はアリシアちゃんのモデルについていたこちらの表情モーションを追加していきます
余裕がある方はいくつか表情を作ってみましょう!
これを作るやり方はStep1のやり方のまんまなんですが、複数クリップを作るときに一つだけ注意です
それは
アニメーションクリップを作るときモデルのデフォルト状態が他のクリップの影響を受ける場合がある
ということです
要は
「設定していないのに勝手に値が変わっちゃうパーツがある」
ということです!
残念ながら私には原因がわかりません…
なので力技ですが、他のクリップで操作しているものの値を0にして影響をなくすというやり方が手っ取り早いと思います
同じ理由で何も表情をつけたくない場合は、
Overrideトラックで操作しているすべての対象の値を0にするクリップを作るといいでしょう
もっといいやり方が見つかればまたご紹介します
Step2の完成版
ともあれできたTimelineがこちら!!
そしてそれを動かしたのがこちらです
ちゃんと表情が変化してかわいくなってます!
リップシンク作成方法まとめ!!
お疲れさまでした!
これで「Unity上でVRMのリップシンクと表情モーションを作るやり方」をマスターできたはずです!!
軽くですが今回のまとめです
・VRMのブレンドシェイプをアニメーションで再現
・操作対象はFaceの下にあり
・クリップ作ったらあとは気合
・Overrideトラックで上書き
1曲分のリップシンクを作るのは割と面倒くさい作業です
ですがこのクソ長記事を読み切ったあなたなら、きっと1曲完成させることができると思います笑
あなたのVRMをもっと表情豊かにしてあげてください
またUnityで簡単に使えるエフェクトもあるので、
それを使うとより魅力的になると思います
この記事があなたの役に立てば幸いです
ではまた!!