Blender ウォッチング

VTuberモデルにウインクさせよう! 好きな表情をVRMに設定する仕組みとは?

「Blender」で設定した表情をエクスポートするVRMに反映させる方法

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

 前回の解説で作成した3Dモデルを実際にVRMに出力して実際に動かしてみた方はお気づきだと思いますが、前々回からサンプルとして使用している慧ちゃんのファイルでは「ウィンク」ができません。

 いい機会なので、今回はインポートされたVRMモデルがどうやって表情付けをしているのか、そしてウィンクできるようにする方法を探ってみましょう。

これで慧ちゃんもウィンクができるように(予定)

作業ファイルと「Blender」について

 作業ファイルには、VTuberモデルの代わりの例としてプロ生ちゃんこと「暮井 慧」をサンプルファイルに使用されていただいています。許諾をいただいたPronama LLC様、VRMモデルを公開されている120様に感謝いたします。

 このサンプルファイルは120様作成のVRMモデルを.blendファイル化した物に少し手を入れているため、公式の.blendファイルとは差異があります。

 使用条件については下記をご覧ください。

「サンプルキャラクターモデル」のblendファイルをダウンロード

 「Blender」のバージョンは前回同様「Blender 2.93LTS」を使用します。

表情付けとシェイプキー

 VRMモデルでは顔の表情の切り替えとアニメーションに「Blendshape」という機能を使っています。

 これは、VRMアプリで使用されている「Unity」(ゲームなどの作成環境アプリ)の機能の1つで、ボーンを使わずにある形状を変形した状態での頂点の位置を記憶しておき、それを操作できるというものです。

 Blenderにも同様の「シェイプキー」という機能があり、VRMインポート時にこの機能で代替するようになっています。

シェイプキーの確認

 とまあ、色々書くよりもサンプルファイルで実際に見てもらった方が早いでしょう。

 ちなみにサンプルファイルではすでに「キャラクター」のオブジェクトが選択中になっており、画面も下図のようにバストショットになっています。もし皆さんの手持ちのファイルで行う場合は同様に選択とビューの調整をしておいてください。

 まず、[プロパティエディター]の下方にある3つの丸が選でつながったアイコンをクリックして[オブジェクトデータプロパティ]にしておき、その中の[▼シェイプキー]パネルを見てください。

[オブジェクトデータプロパティ]の[▼シェイプキー]パネル

 一番上の「Basis」は基本となる形状で、残りが各表情のシェイプキーです。横の数字を上げると、その表情に変形します。

シェイプキーの「困る」の数値を上げて困り眉にしてみる

 マウスホイールまたは横のスクロールバーでリストをスクロールできるので、リストの中央あたりを見てみましょう。すると「ウィンク」という名前のシェイプキーがすでに存在していることがわかります。

 先ほどと同じように数字を上げ、ウィンクすることを確認してみてください。「ウィンク」で右目、「ウィンク左」で左目が閉じるはずです。

「ウィンク」を上げると右目(向かって左側)が閉じる。先に設定した困り眉も一緒に反映されていることに注意

 確認が終わったら、図の[×](シェイプキーをクリア)ボタンで各シェイプキーの数字をリセットしておいてください。

[相対]チェックボックスの右にある[×]ボタンクリックでリセット

シェイプキーとバインド

 このように、すでにウィンク自体のシェイプキーは存在し、Blender内では利用可能なのに、VRMでエクスポートすると利用できなくなるのはなぜでしょうか?

 それは、この「ウィンク」(とウィンク左)のシェイプキーがどの表情に対応するかを関連付ける(バインド)情報が欠けているためです。

 VRMファイルのBlenderへのインポート時、アドオンが様々な設定を「JSON形式」(汎用のデータ形式)で作成し「テキストデータ」として格納します(※)。その中には、この「シェイプキー」をバインドするデータもあり、ここを修正します。

※「VRM Addon for Blender 1.13.0」にて確認。将来的にこのスクリプトや「UniVRM」のバージョンアップにより、仕様が変更される可能性があります。ご了承ください。

JSONファイルの確認

 まず画面左上にある図のアイコンをクリックし、メニューから[テキストエディター]を選択します。

[3Dビューポート]の一番左上のアイコンをクリックし、右側の[テキストエディター]を選択

 「テキストエディター」のメイン画面のヘッダー部分中央にある書類の形をしたアイコンをクリックし、「blendshape_group.json」を選択します。

ヘッダー部分中央にある書類の形をしたアイコンをクリック。間違えて[新規]をクリックしないように注意

 直後は何も見えませんが、一番下の行になっているだけですので、マウスホイールで上へスクロールして文章が見えるようにします。

マウスホイールでスクロールして文章を表示

JSONファイルの編集

 恐らくウィンクへのバインド設定は「Blink_L」と「Blink_R」で、"binds" の項目にそのデータを入れると思われるのですが、指定方法がわかりません。どうすればいいのやら……。

 もう少し上を見てみると、すでに指定されている部分がありました。これを利用すればいけそうです。

定義済みの部分。これを利用して修正

 まずは「"binds":」の定義部分をコピーし、「Blink_L」と「Blink_R」のそれぞれの「"binds": [],」にペーストします。

上の行の完全な「"binds":」定義(赤の囲み部分)をコピーし、下の行の2つの「"binds": [],」(青い選択部分)をそれぞれペーストで上書き

 そして「"index":」の後ろの文字列をそれぞれ該当する文字列に書き換えます。

 この文字列はUnicodeの表記法で、「unicode 変換」などで検索するとヒットするWeb上の変換サービスを使うと簡単に変換できます。試しに上の定義済みの部分「u305fu308cu76ee」をデコードすると「たれ目」になりました。

 同様に「Blink_L」は「"u30A6u30A3u30F3u30AFu5DE6"」(ウィンク左)、「Blink_R」は「"u30A6u30A3u30F3u30AF"」(「ウィンク」)に変換して書き換えればOKです。

囲み部分を書き換え。ダブルクォーテーションやカンマを消さないよう注意

 コピペ後は、いったん.blendファイルを保存後「VRMエクスポート」して確かめてみてください

「3teneFREE」による確認

終わりに

 今回はいつもとは少し方向性が変わりましたが、表情付けのシステムとシェイプキーについて知るいい機会になったと思います。あまり機会はないかもしれませんが、同様にBlenderからエクスポートしたVRMモデルの表情がうまく動作しない場合は試してみてください。