一年中こたつ出てる

こたつは最高

【VRChat】フェイストラッキング時の表情をいい感じに調整する

はじめに

Quest Proなどを買って、ついにフェイストラッキングができるぞ!となって意気揚々とモジュールを買って入れてみたものの、「なんか違うな……」って思いながら使い続けている人がたくさんいると思ってます。

「なんか表情が大げさすぎて違和感がある…」とか「もっと自然な表情にしたいけど、どこをどう調整すればいいかわからない…」とか…。

自分もその一人でした。Quest Pro買ってさらに可愛くなれるぞ!と思ってたら、あれ?可愛くなくね…?って…。

フェイストラッキングの表情は、モジュール作者の好みや設定が反映されているので、そのまま使うと自分のイメージと合わないことがよくあります。

ただ、あまりノウハウが出回っていませんが、ちょっとした調整でなんとかできるところも多いです!

この記事では、フェイストラッキング時の表情を自分好みに調整する2つの方法を紹介したいと思います。

  • 調整前:かわいくなさすぎる
  • 調整後:かわいい!

フェイストラッキングの表情調整

表情調整の"簡単"な方法は2つあります。
この2つを組み合わせて調整することで、自分好みの表情に近づけることができます。

1. アニメーション直接編集

フェイストラッキング用のアニメーションを直接編集する方法です。
調整したい表情のシェイプキーをアニメーションしているファイルを見つけて調整します。

大げさな動きを緩和させたりするのに向いています。

2. Ad-Hoc BlendShape Mixを使った非破壊調整

NDMFプラグインの「Ad-Hoc BlendShape Mix」を使って、表情シェイプキーをブレンドする方法です。 調整したい表情のシェイプキーに別のシェイプキーを足したり引いたりしてシェイプキー自体の動きを変更します。

自分好みの表情で笑ったりしたいときに向いています。

さらに調整したい場合はフェイストラッキング用BlendTree群を気合でいじります。この解説はちょっと書く気にはなれないのでがんばりましょう…。自分はがんばりました。

実践編

今回は以下のモジュールとアバターを用いて説明します:

実践編:アニメーション直接編集

例として「ニッと笑う表情」を調整してみます。

1. 該当アニメーションの特定

まず、調整したい表情がどのシェイプキーで制御されているか確認します。

VRCFTのドキュメントを見て探すか、フェイストラッキング用に追加されたシェイプキーを片っ端からいじってみて探します。

docs.vrcft.io

口角を上げる表情は主に以下のシェイプキーが関係しています:

  • 笑顔:MouthSmileLeft / MouthSmileRight
  • さらにニッとする:MouthCornerSlantLeft / MouthCornerSlantRight

余談ですが、フェイストラッキングのシェイプキーは左右で分かれてパラメータ制御されているものが多く、今回の場合、MouthSmileではなくLeft/Rightのほうを弄ります。

どんなパラメータが届いて制御に使っているかは、実際にVRChatの中に入ってデバッグ画面を見ながら顔を動かしてみるか、Expression Parameterと巨大なフェイストラッキング用BlendTree群を眺めるなどして確認できます。気合です。

もっと簡単に確認できる方法があるなら教えてほしいです…。

2. アニメーションの値調整
  1. Unityのプロジェクトウィンドウで、フェイストラッキングモジュールのアニメーションファイルを探す
  2. 該当するアニメーションクリップを開く
  3. Animationウィンドウで、上記のシェイプキーを確認
  4. 値が100になっている部分を90や80に下げてみて、表情の強さを調整

モジュールによって構成が違うと思いますが、該当のシェイプキーを0にするアニメーションファイルと100にするアニメーションファイルがそれぞれ存在するはずです。

これを80とかに変えます。

3. 実際に動かして確認

VRChatにアップロードして実際に動かしてみて、自然な表情になるまで調整を繰り返します。

例えば、それぞれのアニメーションファイルをこのように編集した場合、すこしやわらかい表情に仕上がります。

  • すべて100
  • それぞれちょっとずつ減らしてみる

ちょっとした差ですが、積み重ねでかなり変わります。

実践編:Ad-Hoc BlendShape Mixで楽々調整

ツール概要と導入

Ad-Hoc BlendShape Mixとは?
kb10uyさんが作成しているZatoolsのコンポーネントの一部です。
zatools.kb10uy.dev

Zatools自体はEyePointerを非破壊で楽々導入するために使ってる人も多いと思います。
zatools.kb10uy.dev

kxn4t.hatenablog.com

Ad-Hoc BlendShape Mixはアバターのビルド時にBlendShape(シェイプキー)の値を合成するNDMFプラグインで、Blenderで編集することなく、Unity上で非破壊的にシェイプキーを調整できるコンポーネントです。

端的に言えば、シェイプキー同士を合成して調整できるコンポーネントです。

導入方法

  1. Zatoolsのサイトにアクセス
  2. VCCにリポジトリを追加
  3. プロジェクトに「Zatools: kb10uy's Various Tools」を追加
具体的な使用例
1. 準備

顔のメッシュオブジェクトに「Zatools Mix BlendShapes on Build」コンポーネントを追加します。
※コンポーネント名が異なるので注意

2. よくある調整パターン

■大げさな動きを抑える
Ad-Hoc BlendShape Mixでは指定したシェイプキーに係数を指定してどれくらいの割合で影響させるかを設定することができます。
これはプラス方向だけじゃなくてマイナス方向にも作用させられます。

たとえば、コピー先とコピー元で同じシェイプキーを設定し、係数として「-1」を設定するとそのシェイプキーはまったく動かないシェイプキーになります。

先程の例「ニッと笑う表情」の場合はこのように設定することで同じような調整が可能です。

■表情の補完
特定のシェイプキーに別のシェイプキーの動きを足し込んだり引いたりすることもできます。

例:笑顔の時に口を少し横に広げたい場合:
このように笑顔の時に、口を広げるシェイプキーを60%追加してみると、ニッとしてる感が増します。

結構変わります。

■いじってるシェイプキーを打ち消す
目の垂れ具合や下瞼など形状を変えるシェイプキーを使って、顔面をいじってる人は多いと思いますが、目を閉じたときに変になってしまうことがよくあると思います。

目を閉じるシェイプキーにいじっているシェイプキーをいじってる分引くことで解消できます。

こんな感じにいじっているとき、

目を閉じると閉じきりません。

このように設定して打ち消すことで閉じきることができます。

左右で分割されていないシェイプキーをどうにかしたい

v3.2.0で分割して適用できるコンポーネントが追加されました!

ここでは使い方の説明は割愛します。サイトの方を見てみてください。

zatools.kb10uy.dev

応用というか

いままで紹介してきたAd-Hoc BlendShape Mixの使い方ですが、フェイストラッキングに限らず、ジェスチャーによる表情アニメーションでも同じ効果を得ることができます!

表情アニメーションファイルを変更することなく、非破壊で修正できるため、顔つきを変えるたびにすべての表情アニメーションファイルをいじる虚無みたいな時間が減ると思います。

まとめ

フェイストラッキングの表情は、アニメーションファイルを直接変更したり、Ad-Hoc BlendShape Mixを使うことで調整できます。
また、Ad-Hoc BlendShape Mixはフェイストラッキングに限らず、表情調整に非常に便利に使えます!

フェイストラッキング時の表情調整ノウハウがあまり出回っていない気がしたので、頑張れば調整可能だということが広まればと思い、今回書いてみました。

表情は個性を表現する大切な要素です。ぜひ自分好みの表情に調整して、かわいいフェイストラッキングを見せつけてフレンドを怖がらせましょう!

参考

その他ニッチなおすすめ記事

kxn4t.hatenablog.com

kxn4t.hatenablog.com

kxn4t.hatenablog.com