【Blender】歌に合わせて口パクさせる方法
「SNOW DANCE」のミュージックビデオをお手本にした3DCGを作成しました。
ミュージックビデオなら、歌声に合わせて口をパクパクさせてみたい。ですよね。いろいろ調べた結果、ほぼ自動的に口パクさせることができましたので、その方法をシェアします。
歌に合わせて口パクさせる方法
Blender初心者の私。とりあえず、口パクとかリップシンクとかのキーワードで検索するところから始めました。
参考にした記事
検索した結果、YoutubeのカサハラCGチャンネルにいい情報を見つけました。この件に限らず、カサハラCGさんにはかなりお世話になりました。
ざっくりまとめると…下記のような手順です。
- オブジェクトに口を開け閉めするシェイプキーを設定する。
- 音声ファイルを、ビデオシーケンサーに登録する。
- 音声のレベルを、シェイプキーパラメータのFカーブにベイクする。
各段階が全部知らないことばかりで、私が自力で調べても絶対見つけられないヤツでした。本当に助かります。
シェイプキーを設定する
シェイプキー?
シェイプキーは、オブジェクトに対して登録する情報です。一つのオブジェクトがいろいろな形状に変化する場合に、それぞれの状態を「シェイプキー」と呼ぶようです。
オブジェクトにはシェイプキーごとに、基本の形状からどのくらい変化しているかを示すパラメータを設定できます。
シェイプキー活用の代表例としては、まぶたの開閉があります。
まぶたを閉じている状態のオブジェクトの形状をシェイプキーとして登録します。
まぶたを開けている状態を基本として、完全に閉じている状態は「1」。
半分閉じている状態は「0.5」として表現できます。
シェイプキーのパラメータは、アニメーションのキー要素として設定できます。
まぶたの例では、パラメータを 0→1→0→1と変化させれば、目がパチパチ開閉するアニメが実現できます。
ドリクマに口の開閉シェイプキーを登録する
さて、ドリクマの口をパクパクさせるには、口の開閉のシェイプキーを登録しなければなりません。
しかし、ドリクマの口周りは、丸い鼻の下に”人”とだけ書いてあるデザインです。
まず、口の開け閉めをどうデザインするのか…少し悩みました。
結果、口を最大開けた場合に”人”の下に弓型のくちびるが出現して”△”のようになるようにデザインしました。
くちびるのパーツを作成し、口を閉じている状態では、顔の中に埋没して見えない配置にしておきます。

口を開けるにしたがって、くちびるのパーツが回転して張り出し、最大値で”△”になるように調整しました。

そして、口を閉じた状態を基本形、口を開けた状態を mouth_open としてシェイプキー登録しました。
音声ファイルをビデオシーケンサーに登録する
歌唱だけの音声データを入手する
口パク用には、「SNOW DANCE」の曲の音声データをそのままビデオシーケンサーに登録しても意味がありません。
なぜなら、歌声以外にもいろいろな楽器の音が含まれているので、その影響が口パクに出てしまうからです。
つまり、楽曲データから歌唱部分だけを抜き出す必要がありました。
もしかしたら、AIで抽出できたりする?もしかしたら無料でできたりする?と期待して検索してみたら、なんとありました。すごいご時世です。
それが、ボーカルリムーバー!
このサービスに、MP3ファイルをアップすると、AIで分析してボーカルと各楽器に分離した状態のファイルを取得できます。
もちろん、作成した音声ファイルを共有するのはNGとなりそうなのでブログでは共有できません。お手元のファイルで一度試してみてください。私は、結構びっくりしました。
ビデオシーケンサーへの登録
ビデオシーケンサーへの登録は、カサハラCGチャンネルの手順通りに行えました。
動画はミュージックビデオの音声合わせにして作っていたので、タイミングが一致するように歌唱抽出音声データの配置を調整しました。
余談ですが、どうやら、ビデオシーケンサーは、Blenderの機能の中でもそれほど使われていない機能らしいです。もし、使ってなかったらすこしハードルが高くなりそうですね。私はたまたま、元ネタと比較するための動画作成用にビデオシーケンサーを使っていたので、すんなりとできました。
シェイプキーのパラメータのFカーブにベイクする
いよいよ、口パク実現の最終段階です。
ドリクマのmouth_openシェイプキーのパラメータのFカーブにベイクする
カサハラCGのレクチャー通りに、先に作成したドリクマオブジェクトのmouth_openシェイプキーのパラメータのFカーブに、音声ファイルをベイクしてみました。
ベイクというのは、Blenderでよく使われる用語です。あるデータを変換したデータを確定することみたいです。ベイク=焼成するようなイメージですかね?物理演算シミュレーション結果のベイクなどでも使われています。
アニメをレンダリングして確認してみました。音声のボリュームがパラメータに反映されるので、大きな声だと多い口、小さな声だと小さな口…となって、ちょっと違和感がありました。
そこで、Fカーブに対してモディファイアを適用して、小さな声でも、それなりに口を開くように調整しました。このあたりもカサハラCGチャンネルで紹介されている内容の応用です。
これで、歌唱に合わせて、ドリクマが口をパクパクしてくれるようになりました。
口を閉じたままのドリクマもミッフィーみたいでかわいかったのですが、口パク追加したほうがよくなったなぁと思ってます。
よかったら、できあがりをYoutubeで確認してみてください↓
考察
作業を通じて感じたことなど。
音声ファイルの活用ができなかったらどうなっていた?
今回、音声ファイルをもとに、1曲まるごとの口パク設定をまるっと終えることができました。
もしも、このノウハウがなかったら、ボーカルに合わせて手動で口の開閉のキーを打つ必要がありました。タイミングを合わせて、口の開け方もちょっとずつ変えて…を手作業でするのは、かなり大変でしょう。
ちゃんと調べてから作業に入って、本当によかったなと思います。
将来ためしてみたいこと
今回は、音声の大小に合わせて口を開け閉めしていました。ドリクマだからそれでもあまり違和感はないのですが、これがリアルな人間のキャラクターだったら、かなり違和感ありそうですね。
母音のあいうえおのそれぞれで口の開き方は違いますし、マ行やパ行などは発音時に口が閉じる必要があるので、このあたりの再現も必要なはず。
ここまでくると、口パクではなくリップシンクと呼ぶべきですが、このあたりを自動化することはできるのか、試してみたい気がします。
きっとどこかにノウハウ転がってると思うんですが。
まとめ
「SNOW DANCE」のミュージックビデオをお手本にした3D CGアニメの制作にあたって、歌唱に合わせた口パクを実現した手法について共有しました。
YoutubeのカサハラCGチャンネルさんを参考にして、下記の手順を行いました。
- 口の開閉のシェイプキーを登録する。
- 音声ファイルをビデオシーケンサーに配置する。
- 音声ファイルをシェイプキーのパラメータのFカーブにベイクする。
追加して、下記の作業が必要でした。
- ドリクマ向けの口の開閉のデザイン。
- 音楽ファイルから音声だけを抜きだす。
口パクをきっかけにシェイプキーについて学ぶことができたので、瞳の位置と、まぶたの開閉についてもシェイプキーを設定しました。
手動でのキー打ちが必要でしたが、視線とまばたきを変えるだけでも、キャラクターの魅力がグッと上がったので、面白いものですね。
そのうちにきっと、表情のキャプチャとシェイプキーへの反映もAIでできるようになりそうな気がします。すでにWonder Studioでは、もうできているのかな?
コメント