VRMとVIVEFacialTrackerでVtuberごっこしてみた
どうも皆さんこんばんは グッチーです
新年度になりましたね。実感がわかないですが社会人2年目に突入しました
去年よりはいろんな方面で成長はしているはずですがまだまだ知識・技術力不足だなぁと思う今日この頃です
今年(度)はあれこれインプット・アウトプット増やしてこうと思って事始めとしてだいぶ前に購入していたVIVEFacialTrackerを使ってみましたので導入手順とかをまとめておこうと思います
本題に入る前に
まずは何故今までこのFacialTrackerで遊んでこなかったのかというお話をしようと思います
typecがそもそもうちのパソコンに刺さらなかったのでVIVEproeye買うまでフェイシャルトラッカーはおやすみです
— グッチー (@guchimoriVR82) 2021年6月13日
この通りです。後述しますがVIVEFacialTrackerはVIVEProEyeと併せて使うことが前提になっているためトラッカーから伸びてるTypeCケーブルがべらぼうに短いです。
それはまだいいんですがTypeCをさすことのできるPCを当時持っていなかったというのが大きかったです。
そのためそもそもトラッカーを利用することができず今更遊んだというわけです
VIVEFacialTrackerとは
では本題に参りましょう。VIVEFacialTrackerとは顔(主に口回り)のトラッキングを行うことができるトラッカーです。
リップシンクのように発声に合わせて口が動くのではなく口回りの動きをトラッキングを可能にするのであくびなど発声を伴わない口の動きをとることもできますし、リアルの動きがアバターの顔にリンクするのでアバターがより人間らしい表情をしてくれます
ただこちらのFacialTrackerですが「フェイシャル」と言ってるのにかかわらず口元の動きしかトラッキングしてくれません。目の動きや瞬きなどはとることができません。そういったところまでトラッキングしたい場合はVIVEProEyeというトラッカーを出しているHTC社が発売しているHMDを利用する必要があります
そもそもこのVIVEFacialTrackerはVIVEProEyeと併せて使うことを前提に作られているようで本来の使い方としてはこのトラッカーから伸びているTypeCケーブルをHMDに接続し、付属のテープでHMDに固定して利用できるようになっていました。
とはいえPCに接続さえできれば単体でも動作するので興味のある方は購入してみてください
通販以外にもHMDが購入できるリアル店舗にも置いてあることがありますのでいろいろ探してみてください(私は購入を思いついた日にその足で日本橋のツクモに買いに行きました)
今回やったこと
今住んでいる部屋はお世辞にもVRを、ましてやVIVE製品特有のベースステーションを配置してトラッキングエリアを構築できるような広さをしていないのと購入する資金がないのでVIVEProEyeを利用せずトラッカー単体での動作になりますのでご了承ください
動作環境
今回利用した環境です
- Windows10 64-bit
- Unity 2020.3.26f
- SteamVR 1.21.12
- SRanipalSDK 1.3.3.0
- SRanipal Runtime 1.3.2.0
- VRoidStudio v0.13.1 (必要な場合のみ 詳細は後述)
下準備
SDKとSR_Runtimeの入手
まずはこのトラッカーを使うための環境構築からです。
以下のサイトからこれらが入ったファイルをダウンロードしてきます
こちらのサイトに飛ぶとクイックスタートが書かれたPDFを閲覧ができますのでそれに従って設定していけばOKです
内容をざっくりまとめておくと
1. このサイトに飛んで
hub.vive.com
2. これらのファイルをダウンロード
3. VIVE_SRanipalInstaller_1.3.2.0.msiを実行してRuntimeをインストールSDKはZipファイルを展開する
4. SRRuntimeを起動
5. Unityプロジェクトを開く(もしくは作成)
6. SDK-v1.3.3.0\SDK\02_UnityにあるVive-SRanipal-Unity-Plugin.unitypackageをUnityプロジェクトにインポート
これでフェイシャルトラッカーを使ってトラッキングをする準備は整いました。
サンプルシーンで遊んでみる
では早速サンプルシーンで遊んでみましょう
Assets/ViveSR/Scenes/Lip/LipSample_v2.unity
前述の準備を行った後にこちらのシーンを再生するとトラッキングを試すことができます。シーンを再生したらトラッカーのセンサーがある方の面を口元に近づけていろいろ動かしてみましょう。
思っている以上に近づけないと反応しなかったりするので注意です。
顔のトラッキングがしたいだけならここまでで完了です。お疲れさまでした。
次の項からVroidStudioで作成した自分のアバターを操作していく方法を紹介していきます
VRM導入編
今回の記事ではVRMファイルのインポート方法などについては省略します
UniVRMを使っていい感じにするのが定番化と思います
やらなければならないことまとめ
先にやらなければならないことだけまとめておきます。こちらのフェイシャルトラッカーですがセンサーの値を用いてブレンドシェイプの値を操作しています。
対象となるブレンドシェイプは決まっているため自分の用意したモデルにそのブレンドシェイプが存在しない場合追加する必要があります。
逆に既に対象となるブレンドシェイプが用意できている場合には以下の操作は不要ですので飛ばしてください
対象となるブレンドシェイプは以下の画像の通りです
VRoid製VRMファイルにブレンドシェイプを追加する
追加するにあたりいくつか注意事項があります
- 今回専用ツールを使います。有料のツールになりますのでご了承ください
- トラッキングを可能にするためにはVRoidStudio v0.11.3/v0.12.1/v0.13.1のいずれかで作成したVRMファイルが必要です 正式版のVRoidStudioでは頂点数の関係でツールを利用できません
以下のツールを使ってブレンドシェイプを追加していきます
方法は以下のサイトを参考にしてください
サンプルシーンにVRMをインポートしたときにできるPrefabを配置しメニューバーからHANA_Tool/Readerを選択しReaderを起動します。
SkinnedMeshRendererにFaceオブジェクトをD&DしSRanipalから始まるファイルを選択します。この時に選択するファイルはVRMファイルをエクスポートしたVRoidStudioのバージョンによって切り替えてください
ReadBlendShapesをクリックすると実行されてブレンドシェイプが追加されます
私はこのあたりの知識が乏しいのでツールを購入し利用させていただきましたが、
ブレンドシェイプの追加に詳しい方はツールを使わなくても可能なのかなと思いました。
テスト用のコンポーネントをPrefabに刺してチェック
ブレンドシェイプが追加できたらそのアバターのPrefabにテスト用のコンポーネントをさしていきます
SDKに入っているコンポーネントを利用していきます。VRMMetaなどのコンポーネントが刺さっている親オブジェクトを選択しAddComponentからSRanipal_AvaterLipSample_v2というコンポーネントを追加します
そうしたらLipShapeTablesのElementを一つ増やします。
するとSkinnedMeshRendererを設定するよう促されますのでFaceという名前の子オブジェクトをD&Dします
するとブレンドシェイプの一覧が表示され割り当てが確認できます。VRM標準のブレンドシェイプが残っている場合それらも表示されますが何の値も入ってなくて大丈夫です必要なところが正しく入っていれば動作します。以下の画像のようになってればOK
SDKのサンプルシーンは再生するとMainCameraの正面に鏡が移動してくるようになってるみたいなのでそれを利用して動作確認を行います。
MainCamera/AvaterSample以下にあるサンプル用のオブジェクトを消して、配置したPrefabのGameObjectを代わりに置きます
カメラの位置に顔の真ん中が来るように位置を調整します(なぜがこのシーンのMainCameraは変な方向を向いています)
この時カメラより前にアバターがいるとMainCameraに映ってしまいますので注意してください。
そしてシーンを再生すると…
いい加減VIVEFacialTrackerで遊び始めた
— グッチー (@guchimoriVR82) 2022年4月9日
VIVEProEyeを買うお金も遊べる大きさの部屋もないのでトラッカー単体で遊んでみた
導入自体は簡単だったので後でブログ記事にでもします pic.twitter.com/9xzbyAQ0wN
アバターが私の口に合わせて動いてくれました!
バストアップくらいで切り取ってゲーム画面やコメント欄(っぽいもの)を表示しておけば気分はVtuber!
今後
いい感じに動かすことができたので後はカスタマイズするだけですね
記事執筆時点では何もしていませんがよりリアルにするならオートブリンクを実装するとかが手っ取り早そうな気がします。
あと今回はサンプルコードを使って顔の動きを実装していますのでそれを参考に独自実装をしたほうがいい気もしますね。軽く調べた感じだとセンサーの値をとってこれるようなのでそれを使えばいいのかな?
記事にはしていませんが実はFinalIKを使った首から下の挙動については検証済みなのでそれと組み合わせてお手軽全身Vtuberごっこができそうですね
細かい設定はなんもしてないしモデルのウェイトとかなんもいじってないからところどころおかしいけどこれで俺もVtuberの真似事ができる pic.twitter.com/9CwgrGzY5E
— グッチー (@guchimoriVR82) 2021年11月13日
私の持っているHMDはOculusRift でHMDと両手のコントローラを使った3点トラッキングなのでかなり動きがぎこちないです。
おしまい
というわけで結構前に購入したVIVEFacialTrackerで遊んでみたという記事でした。
VRChatとかは最近出来てないですがそういった自分だけのアバターを動かせる環境を自作するというのも面白いかもしれませんね。
というわけで超久々の技術紹介記事でした!
それでは今日はこの辺で(`・ω・´)