iFacialMocap(NVIDIA版) + WebcamMotionCapture (+ VSeeFace)でパーフェクトシンクな顔と手を動かす!
2024/3/22追記
先日、Webcam Motion Captureがアーリーアクセスのβ版(1.10.0)で全身のトラッキングに対応し、バストトップだけでも体の動きがかなり改善いたしました!(体感)
また、Webcam Motion CaptureでiFacialMocap(NVIDIA版)の表情情報を受け取る方法がわかりましたので、最後に追記してあります。そちらもご覧になってください。
具体的には、VseeFaceを通さなくてもパーフェクトシンクができ、二の腕が開かなくて、もうこれでいいんじゃない?位になっています。
以下の方法でVseeFaceを使った場合との比較(体感)も書いてありますので、ぜひ読んでくださると助かります。
はじめに
Leap Motionでいいじゃん!
そうだよ!でも高いじゃん!!でも手、動かしてみたいじゃん!!
この方法では、720円(固定)+199円(サブスク)からできます。
気軽にお試しできますので、あなたもパーフェクトに顔と手を動かしてみませんか?
また、私自身もっとこれしたいのにできない!というのも多く、よくわかっていない部分もあります。もっと良い方法をご存知でしたら是非コメントで教えてください。
なお、だいぶ前に導入したものを思い出しながら書いているので、初回設定時点とはぜんぜん違うものになっている可能性があり、それを思い出せないでいる可能性もあります。できるだけ導入時に参考にしたページを貼りますので、そちらも参考にしてください。
用意するもの
ウェブカメラ
なんでもいいです。私はエレコムのUCAM-C750FBBKというものを使ってるらしいですが、もう少しフレームレートが良くて画角が広いもののほうがストレスフリーで使えると思います。
SplitCam
仮想カメラデバイス?というのでしょうか。複数のアプリに一つのカメラ映像を送りたい場合、こういったアプリを挟まないとできません。
私は他のものは導入に失敗したので使えませんでしたが、多分ManyCamなど他のものでもできると思います。
iFacialMocap Powered by NVIDIA Broadcast
前提としてNVIDIA Broadcastのインストールが必須です。忘れずに入れてください。今すぐダウンロードボタンでダウンロードできるようです。
NVIDIA GeForce RTX 2060以上のGPUが必要なので注意してください。
iFacialMocapはマイクロソフト版のアプリです。720円。出たばかりの頃はセールをしていました。おそらくiPhoneのアプリでもVSeeFace側の設定は同様のやり方でできると思いますが、iPhoneを持ってないのでわかりません。
Webcam Motion Capture
VMC送信機能を使用します! 必ずサブスク(もしくは買い切り)版を導入してください。サブスクでは月額199円。買い切りでは6,980円です。
買い切りはサブスクを以前行っているのであれば、すでに支払ったぶんは安く買うことができます。ずっと使い続けるとき買い切りでもLeap Motionよりは安いですが、精度などを考えてどちらがいいかはご自身で選択なさってください。
送信しないでアプリだけのお試しは無料でできるので、どんなもんかはぜひお試ししてみてください。
精度や認識のスピード的にはおそらくLeap Motionには勝てませんが、ちょっと手を動かしたいなら十分です。
アップデートはかなり頻繁に行われているので、徐々に使い勝手も良くなっています。
VSeeFace
すべてのものを受け取る側として使用します。
表情読み取りも優秀で、言わずと知れたナイスアプリですが、今回はパーフェクトシンクさせるので表情は全く使いません……。
パーフェクトシンク対応させたVRMアバター
iFacialMocapでせっかくやるならパーフェクトシンク対応した表情を使いたいですよね!でもこれが一番めんどくさいので、パーフェクトシンクさせた顔でなくても良いなら、表情はVseeFace側で拾って大丈夫です。
上記の記事を参考に、アバターの表情を作っていきましょう。
私のアバターはパーフェクトシンク対応のアバターではないので、対応した動きがもとからあった下記のような設定しかしてませんが、笑う、驚く、大口を開ける、やや渋い口になるくらいのことができます。(そもそも中の人が表情を動かすのが下手なのでVseeFaceでうまく設定ができなくてパーフェクトシンク使ってるのでこれで十分)
各アプリの導入と設定
ウェブカメラを差して認識させましょう。
USB端子の種類はあってますか?(一敗)
すべてのアプリをインストールできたら次に進みます。
Splitcam
以下の動画を参照してください。
使用するのはカメラのみなので、Web Cameraのレイヤーが作れて、右のでかい画面に自分の顔が写ってちゃんと動いていれば大丈夫です。
解像度を下げることによって映る範囲が広がることがありますので、いい感じの解像度に調節してみてください。
SplitCamは以降つけっぱなしです。今後使用する際忘れずに立ち上げてください。
iFacialMocap Powered by NVIDIA Broadcast
まず忘れずにNVIDIA Broadcastは導入しましたか?
NVIDIA Broadcastのカメラ設定は一応SplitCamにしてください。(今見に行ったら全然違うカメラでも動いてたので多分設定変える必要ない…?)
iFacialMocapをWindowsアプリから立ち上げると、ちっちゃい黒い画面が出てくると思います。
「Open Advanced Setting>>」を開き、設定を以下の画像のとおりに変えてください。問題なければ隣に肌色のおっさんの小さいウインドウが出てきて、自分の顔に合わせて百面相してくれるはずです。
最後に左側のめちゃでかConnectを押せばブレンドシェイプ情報を送信してくれます。忘れずに押してください(n敗)
↑最初の導入時参考にしたページです。VMCに送るためのやり方が書いてあるので少し違いますが、表示させるまではだいたい一緒です。
Webcam Motion Capture
立ち上げると、ログイン画面が出てくると思うので、購入時に設定されたメールアドレスやパスワードを入力します。
まずは、小さい方のウィンドウのWebカメラ設定をSplitCamにします。
うまく接続すると、大きい画面の方でVroidのAvatarsampleAちゃんが手を動かしたり顔が変わったりするようになります。
ここから体の設定を行います。まずは「トラッキングの詳細設定」を開き、上部のトラッキングの有効/無効のチェックをすべて外します。
手を下ろす速度は好きな値にしてください。
また、左側の体フィルターの値は0.8くらいがおすすめです。
(低いと早く動くけどブレが発生し、高いとゆっくり動くけどブレが出ません。お好みで調整してください)
ここまでの調整で体は手のみ動くようになっていればOKです。一度ユーザー設定に登録しておくことをおすすめします。
続いて表情情報を送らないように設定します。方法としては2種類あります。好きな方を選んでください。
1.「表情の設定」を開き、スマホアプリで表情トラッキングにチェックを入
れ、waidayoなどの使わない表情アプリを選択します。
2.「外部アプリに送信」にチェックを入れたあと、Blend Shapeを送信のチェ
ックを外します。
どちらか片方で大丈夫ですが、心配なら重ねがけしても大丈夫です。
こうすることで表情情報が入らなくなり、VseeFace側で合成したときに顔の情報がWebcam Motion Captureからは届かなくなります。
うっかりさんにおすすめは1番のやり方です。2番のやり方は、うっかりBlendShapeにチェックをいれたまま送信してしまうと、Blinkが二枚重ねになり変な表情になります。慌てて切っても切った瞬間に送られた薄ら笑いがその配信中消えないなんてことになるので……。
なおこの表情設定はどちらの方法も現在(2023/12/27)ユーザー設定の中に登録されません。起動後毎回変える必要があるので、忘れないように毎回変えてください。
最後に、「外部アプリに送信」にチェックを入れ、送信開始ボタンを押しておしまいです。私はUIを消したり、背景を透明にすると軽くなるかな?と思ってやってますが効果のほどは不明です。
VSeeFaceの設定
導入と、顔と体の基本的な設定
ここからはVSeeFaceの導入及び設定です。
立ち上げると出てくる最初の画面の右上、「ウェブカメラ」設定をSplitCam Video Driverにします。
中央のアバターを登録するを選び、作成したパーフェクトシンク対応のアバターを読み込んだあと、スタートを押します。
右上の設定を押し、その左に出てくる一般設定を選択します。
以降、顔をiFacialMocapで動かす、手をWaebcam Motion Captureで動かす、体はVSeeFaceで動かすのに必要な設定のみ書いていきます。その他の設定は自由に変更して頂いて構いませんので、ご自身の好きなように変更してください。
自動まばたきのチェックを外す
模擬視線トラッキングのチェックを外す
「顔のトラッキング」のチェックを外す
表情の検出をなしにする
「iPhone/ARKitからトラッキングを受信」にチェック
トラッキングアプリをiFacialMocapに設定、IPを設定します(デフォでは127.0.0.1ですが、変えてる場合はiFacialMocapのAdvanced Setting画面下の方「3DCG Software IP Adress」と同じ値にしてください)
顔を受信、頭の動きを受信、目を受信にチェックをします(好きな設定にできます。後述)
「OSC/VMCプロトコルで受信する」にチェック
LAN IPの下のところはポート番号です。デフォなら39539、WebcamMotionCaptureのポート番号に表示されている番号を入力してください
VSeeFaceトラッキングを使用にチェック
頭と首、背骨と胸、下半身のトラッキングにチェックをします。その他のチェックは外します。(好きな設定にできます。後述)
ここまでで顔はパーフェクトシンクで音声リップシンクなし、手はWebcam Motion Captureで動き、体はVSeeFaceで動く、という設定にできたと思います。おつかれさまでした!!
できてなかったら……大体はiFacialMocapのConnectを押し忘れてるとか、Webcam Motion Capture側で送信し忘れたり、余計なブレンドシェイプを送ってるか、あとは説明が悪かったか……です。
説明が悪いぜ!と思ったら、筆者に連絡をとってください。調べて加筆します。(X→@sasano_saber)
その他の細かな設定
*ハイブリット音声リップシンクを使用する
iFacialMocap/FaceMocap3D…の設定のハイブリット音声リップシンクにチェックを入れる
上の方に「音声リップシンク」の項目が出るので、チェックを入れる
OSC/VMCプロトコルの設定の顔のトラッキング内の「ブレンドシェイプのトラッキング」にチェックをする
VSeeFace側のマイク設定を忘れずにおこなってください。
音声リップシンクで口が動くようになり、あまり口を開けないモソモソ喋りでもアバターではしっかり口を開けておしゃべりしているように見えます。カワイイ!
一部大口を開けながら喋ると破綻するときもあるので、アバター側を調整するか、一般設定上部にある「合計が1.0を超える値になる口のブレンドシェイプを正規化する」にチェックを入れるなどして対策をしてください。
*VSeeFace側のiFacialMocap設定、
VMCプロトコル設定のチェックした設定の意味と調整
長いし箇条書きになります。
顔を受信:表情ブレンドシェイプの受信。切ると顔が動かなくなります。
頭の動きを受信:頭の動き受信。切ると頭が動かなくなる……はずですが、OSC/VMCプロトコル設定の方の頭・首にチェックを入れていると、VSeeFace側のトラッキングで動きます。こちらをつけていた場合はこちらが優先されるようです。お好みで
目を受信:目の動き受信。切ると目が動かなくなりますが、OSC/VMCプロトコル設定のVSeeFaceの目のボーンのトラッキングをオンにし、アバターに目のボーンがあれば、VSeeFace側のトラッキングで動きます。お好みで
ハイブリット音声リップシンク:上述。音声リップシンクの設定ができるようになります。
リップシンクかiFacialMocapの中一つだけで口を開ける:たぶん書いてあるとおりどっちかの動きが優先されるのだと思いますが、正直違いが分からなかったです。
基本的にはVSeeFaceトラッキングを使用でチェックしたところはVSeeFaceのトラッキングになるという感じです。そのまんまですね。
ブレンドシェイプ・ボーンの平滑化:強くすると、動きがゆっくりになりなめらかになります。Webcam Motion Capture側で調整したので、0でいいと思います。
表情を使用:パーフェクトシンクを使いたいときは絶対に切ってください。VSeeFaceのトラッキングを使いたいときはつけてください。
顔のトラッキング:チェックをつけると出てくる次の3つのうち、使いたいものがあればつけてください。なければ切ってください。
ブレンドシェイプのトラッキング:音声リップシンクを使用する際はチェックをつけてください。使い方によっては耳を動かしたりもできる……のでしょうか?
目のボーンのトラッキング:前述の通り、目のボーンがあればアイトラッキングして動くようになります。iFacialMocapのアイトラッキングを使用する際は切ってください。正直、目のトラッキングはブレンドシェイプを作らずにこれでも十分であると感じます。
あごのボーンのトラッキング:おそらくjaw系のブレンドシェイプと干渉すると思いますので、つけないほうがよろしいと思います。
頭と首のトラッキング:絶対つけたほうがいいです。切ると首が動かなくなり、頭の傾きに合わせて体もそのまま傾くようになります。また、Webcam Motion Capture側の頭の設定を使用する場合は切ってください。
指のトラッキング:Webcam Motion Captureで動かすので切ります。
手首のトラッキング:Webcam Motion Captureで動かすので切ります。
手から肩までのトラッキング:Webcam Motion Captureで動かすので切ります。(つけるとTポーズになります)
背骨と胸のトラッキング:Webcam Motion Capture側の設定を使用することもできます。その場合は、Webcam Motion Captureのトラッキングの詳細設定から上半身にチェックを入れ、その下の設定からお好みの設定をしてください。
下半身のトラッキング:基本的にはつけたままがいいと思います。Webcam Motion Captureの上半身設定を使用する場合も、下半身の設定はないのでつけておいたほうが良いかと思いますが、好みで消してください。
頭(頭と首)、視線(目のトラッキング)、上半身(背骨と胸)の設定は、Webcam Motion Captureのものを使用することができ、Webcam Motion Capture側でつけたものは、VSeeFace側では切るとすれば適用されます。
上半身は特に両アプリでかなり動きの違いがありますので、好みの方を使用してください。ただし、iFacialMocapを使用する場合はWebcam Motion Capture側の視線をオンにして送ると、目が二倍動きますのでお気をつけください。
パーフェクトシンクでなくVSeeFaceの表情設定で動かす
手は動かしたいけど、別にパーフェクトシンクじゃなくてもいいやと言う人は、顔のトラッキングをオンにし、表情の検出を有効化してください。
そしてiFacialMocap導入およびiFacialMocap設定(iPhone/ARKitからトラッキングを受信のところ)をまるっと省いてください。
Webcam Motion CaptureおよびOSC/VMCプロトコルの設定は表情を使用をオンにし、他はそのまま書いてあるとおり行ってもらえればと思います。
表情の登録に関してはVSeeFaceのホームページや下記の動画などにもっと詳しく乗っているので、そちらを参照してください。
2024/3/22追記 iFacialMocap+Webcam Motion Capture(1.10.0)でパーフェクトシンクを動かす
なんならiFacialMocapなしでもパーフェクトシンクできます。後述
Webcam Motion Captureのダウンロードは以下の公式のツイートから行けるアーリーアクセス用のページよりダウンロードできます。
Webcam Motion Capture側の設定
全身設定オンがおすすめですが、少し体全体のプルプルが激しくなります。
腰まで画角に入っていないとプルプルするようです。
上半身モードでは首を横に向けるとややプロペラ回転気味に体が回るのはまだ完全には直ってません。
トラッキングの詳細設定もお好みでどうぞ
上半身のプルプルが気になる方は上半身トラッキングを切ると良くなりますが、体の回転(とくに横の傾き)が制限されて首を傾げるとちょっと怖い感じになります。
後述のiFacialMocapと同時に使う場合は視線のトラッキングを切ってください。
体フィルターは下げるとプルプルがひどくなりますので、高めがおすすめですが、高すぎる(0.85以上くらい)と手のトラッキングが鈍くなるので0.7~0.8くらいがおすすめです。
また、Webcam Motion Captureのみでパーフェクトシンクができるようになりました!
結構ちゃんと設定しないと大変そうなので私は使用してないのですが、わりとこれだけで十分だとおもいます。ちゃんと設定しないとウインクができないですが…!
iFacialMocapで表情を拾う場合の設定方法
まずはiFacialMocap側から
Advanced Settingを開き、Send Versionを「V2」にします
Webcam Motion Capture側は、表情設定からトラッキングモードをパーフェクトシンク、スマホアプリにし、iFacialMocapを選びます。
IPアドレスはiFacialMocapのAdvanced Settingの下のほうにあるものを入力してください。デフォでは127.0.0.1だと思われます
口の動きの制御はWebカメラでは実際の口の動きに近く、マイクではiFacialMocap側と混ざりハイブリット音声リップシンクと同じようになりますが、かなり大きく動きますので、使う場合は口フィルター大きめ、最小音量も大きめがおすすめです。
以上でWebcam Motion CaptureのみもしくはiFacialMocapとの同居方法はおしまいです。
VseeFaceを通して使用した場合と比較すると、どうしても体のプルプルや回転するときの動きが急で気になってしまうのですが、体全部を同一のアプリで動かすので、動きに一体感が出ているのが良い点だと思います。
(できれば体の動きと腕・手の動きの閾値を別々にできたらうれしいな~)
ハイブリット音声シンク状態ではVseeFaceと違い口の動きの制限が難しく、どうしても大きめに動くので、アバター側の調整必須と思われましたが、低い声・最小音量大きめにすると少し抑えられました。お試しください。
個人的には以前のバージョンで体が垂直にプロペラ回転する動きが嫌すぎてVseeFaceに送るという手段をとっていたので、それが改善されてきただけでも大変ありがたく、また手の精度も徐々にあがっていますのでかなり良い仕上がりになってきたと思います。さらなるバージョンアップに期待、です!
以下の動画ではしゃぎながら1.10.0をいろいろとお試ししているので、全身の上半身使用だけじゃなく全身はどうやって映るの?って思われた方はぜひ見てみてください(宣伝)。生配信しながらなのでちょっと長いです。
おまけ
パーフェクトシンクしたいけどアバターがブレンドシェイプ全部対応してないよ~!
私もニャスカちゃんを使用していますが、全部のブレンドシェイプに対応していません。なので全部の顔の動きには対応していません……。そこは諦めましょう。
1番最初に貼った画像ですが、パーフェクトシンクするには明らかに量が少ないと思います。
eyeLookやbrowDownなどはLeftしか作ってませんが、これはアバターの元のブレンドシェイプが左右まとめて動くようになっているので、左だけ設定することにより二倍動くことを防いでいます。もともと眼球とかは片方だけ動かすのは無理ですし、中の人は眉を片方だけ動かすのはできませんし問題ないということです。
こんな感じで、できない動きのものは作らないということもできます。はいぬっかメモさんを参考にできるだけ再現するように各ブレンドシェイプをいじり、できないとこは諦める、とするだけでも十分かわいく動かせると思いますので、ぜひやってみてください!(tongueOutは設定してもなぜか動きません。なんでや)
ちなみにこんな便利アイテムがあるらしいです。使ったことはないので使用感はわかりませんが……。
諦めきれなくて各ブレンドシェイプに対応した動きを新しく作るのは、Blenderなどのモデリングツールを使用しないといけないと思いますので、それはそういう記事を探してください。
以上になります。
記憶を掘り出しながら書いていますので、違う点などあると思います。
うまくできなかったよとか全然違ったんだけど!とかありましたら、コメントに書くか、筆者のX(@sasano_saber)に教えに来てください。どうにか書き直します。
記事中に一瞬出てきたかわいいかわいいアバターとお洋服はこちらです。
ニャスカちゃんはいいぞ!