見出し画像

フェイシャルトラッキング非対応なアバターで非破壊で顔トラ対応をした話

普段使っている子がフェイシャルトラッキングに対応してない
BOOTHでもユーザー謹製の拡張は売ってない
できればBlenderを通したくない…
でもフェイシャルトラッキングしてみたい
そんな話


◎最初に/簡単なまとめ

○最初に

各ツール、ドキュメントでめちゃくちゃ丁寧に解説してくれているのでよく読むように

英語をふわふわ翻訳しながら試行錯誤したという記事です
「多分こうだろうなぁ」と思いながらやってるので注意してください
俺は雰囲気で英語を読んでなんとなくで設定をしている

「ここ間違ってるよ!」ってなったらこっそり連絡ください
@Aomitsu_vrc

○よかった点

非破壊
最近の非破壊のながれサイコー!!!

Blenderを通さなくて良い
シェイプキー作るのが慣れないと大変 正直慣れてても大変

またアバターによってはBlenderに取り込む事前作業で時間かかったり、うまくいかなかったりする(Mixamo製とかMaya製とか…)
作者さんによっては、Blender通してからアバター設定を引っ越しさせるとめんどくさいことになったりするのでそもそもなるべくBlender通したくない

・アバターアップデートが来てもすぐに移行できる
これは上の通じますが、Blenderで改造した後にアバター自体にアップデートが来きて「どうしよう…またあの作業をやるのか…」という腰が重い状況がなくなります

とんでもないAnimationControllerを組まなくてもよい
参考に買ったBOOTH販売しているユーザー謹製拡張のAnimationControllerを見て手組はすぐに諦めました

俺には無理

慣れればすぐ他のアバターで組める
最初はDocumentを翻訳しながらだったのもあり、結構時間かかったが慣れれば何をすればいいのかわかってるので以降は短時間で済む
他のアバターでもすぐできるのはでかい

・アイトラ楽しい
やっててクソ楽しい

○気になった点

有料ツールを使う
個人的にはツール作者さんに還元したいので問題ないけど、他の人はどうかわからないので一応

・細かい調整が効かない
多少は調整できるけど、ここまでこうしたい!とか細かくやりたいならやはりBlenderを通す+自分でControllerを組むべき

・そもそも日本人に顔トラがあわない
言い過ぎではあるんですが、日本人って口をあんまり動かさずに喋る+日本人向けアバターも唇小さかったり薄かったり目立ちにくいので顔トラしてもあんまり顔トラしてる感が薄いです

逆にアイトラはめっちゃはかどります
「目は口ほどにものを言う」です

もしBOOTHで顔トラアセットを買うなら、かなり大げさなぐらいが楽しいかもしれないです(個人の感想です)

・テンプレートがBoolで組んである
Parameter容量削減のためBoolで組んであるテンプレートを使用している
Floatのほうが表現幅が高いらしい
比較したことがないのでよくわからないが…

◎用意するモノ・ツール

実際にやっていくぞ!!!

○フェイシャルトラッキングができるデバイス

これがないと始まらない
自分はVarjo Aero(アイトラ)+VIVE Facial Tracker(フェイシャルトラッキング)構成
QuestProが一番お手軽にアイトラ+フェイシャルトラッキングできると思う

○アバター

フェイストラッキングの対応シェイプキーがある場合「VRCFaceTracking template」導入で一気に終わる

対応していない子を非破壊で対応していった話をなので対応していない子を使っていく
BINACOちゃんかわいいヤッター!!!

自撮りしなさすぎて探すの大変だった

○VRchat Creator Companion(VCC)

すべての前提
2024/04/16
Unity2022.3.6f1
VRChat SDK3.5.2

○Modular Avatar

いつもお世話になっています 
作者はbdさん( @bd_j )
「FaceTra Shape Creator」の前提
VRCFuryと併用するので最新版(2024/04/16現在v1.9.10)を使うこと
古いバージョンは併用出来ない

○Haï's FaceTra Shape Creator

非破壊で顔トラ用のシェイプキーを作ってくれる神ツール
作者はHaï'( @vr_hai )さん 
Unity上でアバターなどに対していろんなライティング環境がみれる「Lightbox Viewer」や、間近では補助ボーンがないアバターでもそれっぽい「Generate Twist Bones」などいつもお世話になっています 助かってます

そんな作者さんの有料プランに入ると使えるツール
手に入れ方はPatron(月€5~)かPixivFanbox(月¥1000~)

自分は管理がし易いのでPixivFanbox
PixivFanboxはDiscordにて自己申告しなければロール付与されないが、自分はDiscordにいるけど発言するのが恥ずかしくて申告できていない…
ごめん…

○VRCFury

海外版Modular Avatarみたいなツール
Modular Avatarと併用するので最新版を使うこと(2024/04/16現在v1.834.0)
下のTemplateの前提

○VRCFaceTracking template

Adjerry91さんのフェイシャルトラッキングのTemplate
形式に対応したシェイプキーがあればアバターにPrefabを入れてアップロードすれば終わり

○VRCFaceTracking

OSCツール
詳しい説明は省くが、いろんな機種に対応してくれている
これを使う前提でいく 
他ツールで出来るかはしらない

◎FaceTra Shape Creator設定

Modular Aveter前提なのでちゃんとVCCからProjectに入れておく
使用バージョンはV0.8.0
各項目基本的に「Select Vertex…」から頂点を選択しに入るか、
シェイプキーを指定したり、ギズモでどれだけ動くかどこまでの影響度かを設定していく


ギズモ系を使うやつのそれぞれ最初はReset Position and rotationを押さないととんでもないことになっている
とりあえず設定するときは押すこと

○ドキュメントと動画

基本Documentと読みながら設定していく
英語なのでDeepLで翻訳しながら頑張っていく
めちゃくちゃ丁寧に解説してくれているのでよく読むように

バージョンは古いが動画もあるのでそれも参考にしていく

○事前作業

Projectタブで任意のフォルダを作り、「右クリック」→「Create」→「Haï」→「FaceTra」を選択
複数アバターがあるなら任意の名前に変更しておく

これはアバターごとに作っておいた
同じアバターなら大丈夫そうだけど軽量版にしたのに流用したらバグった
たぶん横着した俺が悪い 念の為別々にしている

アバター直下にEmptyを作り任意の名前に変更し、「Add Component」から「Haï's FaceTra Shape Creator」選ぶ
「Aveter Root」に使用するアバターを
「Face Mesh」にアバターの顔オブジェクトを
「Face Tra File」に上で作ったファイルを設定する

事前に口の中と右の瞳ぐらいの位置に0.01倍してMeshRendererのチェックを外したCubeを配置しておく
そうするとFキーを押してそこに視点の中心点が置かれるのでちょっと楽
結構全体をみたり戻ったり…を繰り返したりするのであると便利

Cubeを選択してFキーで唇に拡大できる
右目にも置いてあげる

これで事前作業は終わり
次からシェイプキーを作るための作業に入っていきます

○Points編

「Select Vertex…」から頂点を選択していくのが多い
Documentsはこのあたり

・Mouth Commissure
唇の端
左右どちらかの端を選択するだけでよい

・Mouth Center
唇の真ん中
自分は下唇の真ん中先端を選択している

・Cheek
ほっぺ
膨らましたり笑顔の時に持ち上げる基準
唇の横ちょっと上ぐらい らしい

・Nose
鼻の先端

・Jaw Puller
顎の先端

○Dividers編

ドキュメントはこのあたり

・Eye Dicider
上瞼と下瞼の割合を決める
自分はアイトラは諸事情で自分でやっているので正直適当である
おっとり目であったり、睨み系の目の形だったりするならもっと丁寧に調整が必要そう
ギズモで角度を変えたりして調整する
Cubicを伸ばしたり縮めたりして影響度を調整する

・Mouth Dicider
上唇と下唇の割合
まず既存のシェイプキーを追加する 動画では
ギズモで角度を変えたりして調整する
Cubicを伸ばしたり縮めたりして影響度を調整する

・Mouth Left/Right Divider
唇を4分割したときの調整
片側の唇だけ動かす時(ニヒルっぽい動かし方)の影響度のために設定

・Nose Projection
オプション
唇やほっぺを動かす時に鼻周りの影響度を減らせる
作ってみて変に鼻が動くとき使うといいかも
自分はちょっとだけ設定している

・Neck Separator
オプション
顔メッシュと首メッシュがわかれてなくて顎動かした時に巻き込まれたとき用の対策
自分は設定していない

○Vertex Filters編

・Upper Teeth Selection / Lower Teeth Selection
上側/下側の歯メッシュを指定
歯のメッシュどこかを指定すれば同じメッシュは一括で指定される
歯が1個1個個別の場合は「Add+」から1個1個を指定していく

・Tongu Selection
舌のメッシュを指定
舌ピアス等がある場合は「Add+」からピアスを指定
下顎を開けて下唇を動かしたときに一緒に下も動くようにするためのものでもある
そのため、舌トラッキングが対応してない場合でも必要あり

・Pupil Selection
瞳孔の指定
直接メッシュを指定してもいいが、「Pupili BlendShapes」から瞳を大きくするシェイプキーなどを指定してあげると「ハイライト」や「白目」や「ぐるぐる目」等も一括指定してくれる

○Special編

ドキュメントはこのへんから

・Mouth Press directio
上唇が盛り上がる(押し出される)方向?
正直よくわからないけど唇と鼻の中間ぐらいを指定するっぽい

・Tongue Puller
舌の押出方向?
基本、舌の先端の頂点を選択で大丈夫だと思う

先端を指定したけどもうちょっと上のほうがいいかも…

・Blush Modifier Selection
ニコーって頬が持ち上がったときにチーク(頬染め)メッシュも一緒に持ち上がるようにするやつ
v0.8で追加された 
ニコーってなったときに、頬染めメッシュを貫通していたのが気になっていたので本当にありがとう
頬染めシェイプキーなどを指定してあげる

○Shapes編

いよいよシェイプキーを作っていく編
ドキュメントはこのへんから

上リンクでも書いてあるが、Unified Expressionsというテンプレート形式のシェイプキーを作っていくので下のリンクも見ておくと「今何のシェイプキーをつくってるんだ」というのがわかりやすくなるかもしれない
あくまでかもしれない

・Eye Lock UP / Eye Lock Down
目が上/下を向いているときの周辺の顔の動き
オプションで瞳自体にBoneが無い時用にシェイプキーを追加できるみたい
(多分)(自信がない)
上まぶたを広げるシェイプキー+下まぶたを上げるシェイプキーを指定して調整していく

上だけ下だけのシェイプキーが既存にない場合はUseCustom Shapeのチェックマークを外す
これで上下全体でうごく瞼シェイプキーでも上で設定したEye Diciderのおかげで上だけ下だけ動くようになっている
すごい…

あんまり瞳上方向が強いとア○顔っぽいかも…要調整

・Eye Lock In / Eye Lock Out
瞳が内側のとき/外側のとき の設定
ビナコちゃんは瞳の左右が一緒に動いてしまうシェイプキーなのでMeta-Shapeでそれぞれ指定してあげていく
たぶんこれも瞳にBoneが入ってない場合だと思う… 多分 自信はない

・Eye Closed
目閉じの指定
自分の場合常時ジト目0.9人間なのでジト目ー0.9をいれておく
※アイトラは諸事情で別口で動かしてるのでこれで正常に動くかみてない
多分合ってる たぶん…
違ってたらすまん…

デフォルトでジト目2が入ってるが大丈夫そう

・Eye Squint
たぶん目を細めているときの状態
自信はない

・Eye Wide
逆に目を見開いている状態 この項目から上を推測している

・Eye Dilation
瞳がおっきく 

もっと大きくてもいいかも

・Eye Constrict
瞳を小さく

なんとなく控えめに

・Brow Down
まゆげを下に。
簡単で助かる

・Brow Inner UP
まゆを中央側だけ上げる
そんなシェイプキーもちろんないので頑張って組み合わせていく
たぶんこんな感じ…

・Brow Outer UP
マユの外側だけ上げる
もちろんそんなシェイプキーないので組み合わせていく
無理かもしれん…

全体的に上がってしまったが仕方ない

・Nose Sneer
現在のバージョンでは使えない みたい

正直なんのことかわからないがGoogle検索すると鼻で笑っているような、鼻の片側を上げている感じの画像がでてくるのでたぶんそれ

自分たちが使うような傾向のアバターではあまり関係がなさそうな表情な気がする

・Cheek Squint
にこーってした時の頬の持ち上げ具合
ドキュメントは少し進んでここから

たぶんReset Position and rotationを押さないととんでもない位置にギズモがいることになっている
(Origin)が原点位置
もう1個が持ち上げる方向
キューブで影響度を広げたり狭めたりする

一緒に下まぶたも持ち上げるシェイプキーを追加してあげた

・Cheek Puff
ぷくーってなってるほっぺ
結構難しい

正面ばかりでなく、上からや横から、やや斜め後ろから見たりして調整していく
正直VRC上で鏡越しだとちょっと分かりづらいので、大げさのほうがいいかも…
上方向のキューブが影響度の広さ
横方向のキューブが膨らみ度である たぶん

ほどほど調整するのが難しい…

・Cheek Suck
頬のへこみ だとおもう Puffの逆方向っぽいので…
Puff以上に分かりづらい
分かりづらいし、頬をヘコますなんてしなさすぎてわからなくなる
適当にやる
上方向のキューブが影響度の広さ
横方向のキューブが凹み強度 たぶん

もうわかんないので適当である

・Jaw Open
口と顎をガッツリ開けている状態
ドキュメントはちょっと戻ってたぶんこのへん

いっぱいReset Position and rotationを押す

顎の先端のギズモで開きぐらいと影響度を整え
下唇のギズモで開きぐらいと影響度を整え
上唇のギズモで開きぐらいと影響度を整え
ついでに唇の左右のも整える
大変である

更に舌や下歯が一緒に動くよう「Include~」系にチェックをいれつつ、シェイプキーで位置の調整をしていく

・Mouth Closed (combined with Jaw Open)
たぶん口は閉じ顎だけ伸ばす状態
口の位置をデフォルトより全体的に少し下げてみる
動画の方では少し口を開けていたので少し開けてみる
開けなくてもいいかも…?

・Mouth Ape Shape (Special)
わかんない
動画(16分33秒あたり)でも何も設定せずにさらっと流していくのでわからない
それにたぶんSpecialって書いてあるし設定しなくても問題なさそう

さるのくち…? 威嚇してるようなめっちゃ大きな口開けた状態だろうか?


・Jaw Left/Jaw Right
顎を左へ動かしたり右へ動かしたり…する動作
ドキュメントはここ

自動で反対側も作ってくれるので右側だけでよい
顎だけではなく唇も若干動かしておく

・Jaw Forward
顎を前にだす動作
ドキュメントは上と一緒
正直人形アバターだとそんなにわかんない
ケモの子だと実感しやすそう

・Lip Suck Upper
上唇を軽く口の中に丸めるような動作
動画でそんな感じにしてるのでたぶんそう

ドキュメントは特に書いてない 動画だと大体18分34秒ぐらいから

もうよくわかんなすぎてちょっとだけ上げている

・Lip Suck Lower
逆に下唇を軽く口の中に丸めるような動作

調整していくとだんだん違いがわからなくなってくる

Lip Funnel
口を開けた状態でくちを尖らせた状態
歯が一緒にきてくれないけどいいんかな…って思いながら調整

・Lip Pucker
口を閉じた状態で尖らせるような表情
大げさな方がわかりやすいかも

・Mouth Upeer Up/ Mouth Lower Down
上唇を持ち上げる 下唇を下に下げる
動画ではスルー
UEのドキュメントでは「MouthUpperUp○○/MouthLowerDown○○系」があるのでたぶんそれの元
設定いらんのかもしれない… 一応設定しておく

・Mouth Left / Mouth Right 
唇を左へ 右へ持ち上げる
ニヒルな笑みです
すこし大げさかな…ぐらい動かしておくとわかりやすくなるのでよいです

・Mouth Smile
笑顔のときの唇

・Mouth Frown
いわゆるムッとした唇:(

上に上げると同時に若干中央を内側に曲げて置くとそれっぽい

・Mouth Stretch
たぶんムーっと横に伸びている唇

・Mouth Dimple
動画だと両唇の端を凹ませつつほんの少し伸ばしている

そんな表情意識したことなさすぎてわからなくなってくる

・Mouth Raiser
????
動画(27分49秒あたり)では唇を中央から全体的に持ち上げて終わっていました

参考動画

UEのドキュメントをみると

>Raises and slightly pushes out the upper mouth.上の口を上げ、わずかに押し出す。
>Right side lips press and flatten together vertically.下の口を上げ、わずかに押し出す

だそうです…

よくわからないので動画と同じようにすこし持ち上げておきました

もうちょっと中央の影響度を上げたほうがよかったかもしれない

・Mouth Press
ちょっと特別な操作なのでドキュメントと動画をよく見ること
ドキュメントはここ


正直いうと適当なのである

・Mouth Tightener
唇を縮めるような動作
わかりやすくて助かる

・Tongue Out
舌出し
ドキュメントはこのへんから

位置と角度を調整

・Tongue UP
舌を上に曲げている状態

・Tongue Down
舌を下にまげてる状態

・Tongue Left / Tongue Right
舌を左右に。
大げさぐらいがわかりやすいかもしれない

○その他(Make eye sockets deeper (Experimental))

アイトラを動かした時に眼孔(白目部分)に当たって瞳が隠れてしまう場合など、設定してあげるやつ

眼孔自体のメッシュを指定すると眼孔自体を深くしてくれる

詳しくはドキュメントとそこにある動画を見てね

以上でHaï's FaceTra Shape Creator編は終了です
本当にお疲れさまでした

◎VRCFaceTracking template編

ここまでくればもうすぐ終わります
VRCFuryとVRCFaceTracking templateを導入

テンプレートはPackage内VRCFT-Templates内のPrefabフォルダにあります

「UE Blendshapes」と書いてあるPrefabをアバター直下にぶち込みます

ちなみにこのテンプレートは小分けにも対応しており、「アイトラだけでいい」「顔だけでいい」場合はPrefabフォルダ内Advanced内BreakoutフォルダにあるPrefabを活用していってください

もうこれでアップロードすれば終わりです

◎トラブルしゅーてぃんぐ的なモノ

顔トラが動かない!!どうして!!!
大体下のことチェックしたら致命的なことをしてない限り動くと思います
それでも動かない…? わかんないかも…

1.EXメニューのオプションOSC

EXメニューのオプションからOSCをON/OFF・リセットしてみます
結構これで直ります
その状態で更にアバターを切り替えたりしても直ったりします

2.OSCソフト(VRCFaceTracking)

そもそも動いていますか?
意外につけ忘れてアレ・・・?ってなることがあります

「VRCFaceTracking」を使ってないおらずUEテンプレートではない場合は動かないかもしれん
正直ほかのOSCソフトのことはわからんので置いておきます

アバターがParameterを受け取ってちゃんと動いている場合、「○Parameters」という表示がでます
これが表示されてない場合アバター側の設定がおかしいです

3.OSCデバック画面

EXメニューのプションからOSC デバック
これでVRC側に受け取っているか見れます
馬鹿みたいにいっぱいあればVRCは受け取っています

4.EXメニューが追加されているかどうか

テンプレートが追加されている場合、EXメニューにいろいろ追加されているはずです
ありますか?
メニューが追加されていない場合アバターにテンプレートPrefabが入ってません。

メニューが入ってて動かない場合「UE Blendshapes」ではなく「ARKit Blendshapes」「SRanipal Blendshapes」テンプレートが入ってる可能性が高いです
実際にその話を受けました。

あとEyeTrackingやフェイシャルトラッキングのメニューがONになっていますか?

5.アバターデバック画面

EXメニューのプションからアバター デバック
最近、以前より使いやすくなりましたね

フェイシャルトラッキングの場合馬鹿みたいにParameter数があるので一目で入ってるのがわかります

なければテンプレートが入ってません

動いてない場合OSCツールから受け取れてないのでアップロードを見直しましょう

◎感想・まとめ

○感想

・表情の調整をUnityだけでいけるのはでかい
VRC中に「もうちょっとこうしたいな…」ってなった場合、
Unityでちょっと修正アップロードVRCで見る…を繰り返せるのは結構楽である

・ミスがわかりやすい
動かない時、テンプレートで動かないことはほぼほぼ無さそうなのでだいたい自分のせい
一番多いであろうAnimatorでのミスがないので、どこでミスったかわかりやすい

・初回は設定大変だけど2個目以降楽
翻訳しながら動画見て「たぶんこういう事だろう…」と推察していくのは時間もストレスもかかる
1回やればストレスは低いし時間も短くなった

・アイトラはすっごいたのしい
自分はアイトラ表現にハマってる
無いアバターだと少し使うのを躊躇ってしまう

またフェイシャルトラッキングだと設定は大変だか目とマブタだけなら設定する負荷は低いので何体かのアバターにアイトラを設定した
Fallbackなどもアイトラ対応させてみた

・フェイシャルトラッキングは「大げさすぎたかな…?」ぐらいがちょうどよい
本質情報
カートゥーンアニメまでは行き過ぎかもしれないがソレぐらい動いてたほうがフェイシャルトラッキング感がある
抑えめに行くと、「既存のリップシンクとあんま変わらないな…」となる

・細かい動作調整ができない
これは上に通じる上に、もうどうしようもないことだが細かく「この時は○○で!」みたいな設定ができない
AnimationControllerの手組を諦めたんだから仕方がない

「もっと柔らかい表現をしたい!!」等は自分で組むか、誰かが配布しているのを探してくるしか無い…

・日本人は口はあんまり動かさない
一番実感しているところ
あんまり口を動かさないで喋るせいでフェイシャルトラッキング感が薄い

・アバター自体の口が小さいとちょっと微妙かも
アバターの口が小さかったり薄かったり…そんな感じでフェイシャルトラッキングやってる感が薄い
かといって海外の唇強調系のアバター使うか言われるとちょっと…
もうこれは文化と嗜好 しょうがない

たぶん唇がわりとしっかり塗ってあったり、口の中と皮膚の色の違いが大きい子がわかりやすい
褐色だとちょっと分かりづらくなるという欠点…

・飲み物が飲みづらくなる
これはVIVE Facial Trackerせいだが口の前にあるせいで飲み物類全滅である
QuestProならいけるんじゃないかな…?

これの対策としてストローを用意
お酒の口当たりが変わる…? 
外すかストローか、どちらかを優先するしかないのだ

なおストローを使うとたまに舌が出てしまう

・有料ツールを使う
自分はHaïさんのツールを結構使っていたので「月額1000円ぐらい全然払うよー!ちょっとでも継続してサポートするぞ!」ぐらいの間隔だが、今始めて知った人はちょっとためらうかもしれない
お財布と相談しよう

ちなみにBOOTHでフェイシャルトラッキング拡張がいろんな人から販売されているが、だいたい1アバター単品2000~3000円である
どうやって作ってるかわからないけど、そのぐらい納得の作業量だと俺は思う

○まとめ

拡張が販売されているアバターでも2000-3000円な上に、対応アバターの種類が限られている
自分のやりたくないところ(Blender部分)をとばしてくれる
細かく調整が効かないとはいえそれはもうしょうがないことである

少し「こうなったらいいな…」はあるけれど、自分の使いたいアバターでフェイシャルトラッキングしたいなら最高のツールだと思う。

この記事が気に入ったらサポートをしてみませんか?