見出し画像

アイトラ設定メモ

初めてのアイトラを試行錯誤していくメモ


◎最初に

ジト目ベースの子ばかりで干渉しちゃうので既存のアイトラやBOOTHで販売してるアバター拡張を使えない…
なのでアイトラ用のControllerを設定していく…という試行錯誤のメモ
なにかの役に立てばいいな 

フェイストラッキングは別の記事でやる。

○環境・用意したもの

・Varjo Aero
アイトラが使えるVRHMD
まばたきの閉じ具合は連続値float(-0.6~1.0)
※4月中旬ぐらいのソフトウェアアプデしたら0.0~1.0になってた なんでや!!
瞳孔の大きさも出力してるような気がする
画面を明るくしたり暗くするとParameterが変化してるみたい

QuestProとかはアイトラ+フェイストラッキングできる お手軽
QuestProは瞳の大きさまでは出してないっぽい

最近VRsatileというHMD用のメガネにアイトラをつける計画があり、デモ機も最近使用してるのを見かけた
気軽にアイトラが出来るようになりそうですね

・VRCFaceTracking

HMDから受け取って送信してくれるOSCソフト
たぶんいちばん普及してるやつ
いろんな機器に対応できるようになってる すごい
QuestProはAirLinkもSteamLinkもVD接続も対応してるらしい すごい…

・avatar-parameter-smoother

ろじっくさん( @logi9_ )謹製非破壊スムージングアニメーション生成器

ローカルとグローバルで受け取れる間隔が違う?せいで自分からだけは滑らかに見えるが、他人からはカクカクみえてしまう
これを解消してくれる


OSCmoothが有名だけど、FXにレイヤーを追加することになるのでこちらを使用

でも結局使用するSmoothされたParameter自体をFXにParameter設定しなきゃいけないので一緒では…?
そうかな…そうかも…(◞‸◟)

◎最初のアイトラ(瞳)設定

○したいこと/仕様を決める

  • 初めてなのでなるべく簡単にいきたい

  • 左右はともかく上下は共通値でよい

○Unityをがんばる

・Animationを作る
「Eye_LeftBone_Up」左目が上をむいている状態
「Eye_LeftBone_Down」左目が下をむいている状態
「Eye_LeftBone_Left」左目が左方向をむいている状態
「Eye_LeftBone_Right」左目が右方向をむいている状態
「Eye_LeftBone_Empty」通常 Animationは空白
この右目版もつくっていく

なおみんなは知っていると思うが、この時Animationで指定するBoneはArmatureではなくAnimatorのほうである

ここから指定できるやつの
左目の上下と左右と
右目の上下と左右である

俺はぜんっぜん知らなくて2日ぐらい悩んでいた
ろじっくさんありがとう…いつもご迷惑をおかけしております…

・Additiveを作る
AdditiveレイヤーはヒューマノイドBoneを動かす用のレイヤーらしい
アバターにない場合は追加してあげてね

AdditiveにParameterを追加する
Floatで「LeftEyeX」「RightEyeX」「EyesY」
「LeftEyeX/Smoothed」「RightEyeX/Smoothed」「EyesY/Smoothed」

・Additiveにレイヤーを追加
左瞳用のEyeLeftBoneと右瞳用のEyeRightBoneを追加
今更だけど瞳だし名前はPupilLeftとPupilRightでいい気がする
Additiveは特殊でBlendingをOverrideからAdditiveに変更する

ここのPosXとPosYは実際にHMDを被って目を動かした時の自分のFloat数値を確認しておくとよい

・Parameter Smoother
アバター直下にParameter SmootherのComponentをつける

数値は作者のろじっくさんが使ってる数値を教えてもらった
ほんとありがとうございます

・EXParameterに使うParameterを記述する
Floatで「LeftEyeX」「RightEyeX」「EyesY」Default0で追加

・VRCAvatarDescriptorの目の制御ををNoneにする
EyeLookをDisbleする
まばたきも一緒に消える

この状態にする

◎最初のまばたき設定

※追記
後述のつつみちぎり( @chigiri_vrc)さんの設定のほうが良い感じにみえる
なおAnimation数がめんどくさそう
次はこの方式でしたい 

○したいこと/仕様を決める

  • 初めてなのでなるべく簡単にいきたい

  • 普段は両目一括でいい

  • ウインクできるように(片目づつで動くように)移行できるようスイッチできるようにしておく

  • 設定している表情(目閉じとか)に干渉しないようにする 表情でONOFFする

  • ジト目シェイプキーベースの子でも干渉しない!!

  • サブアバター的な立ち位置の子は作業量を減らしたいので両目一括のみで簡略化していく

○Unityをがんばる

・Animationを作る
「Eye_○○_Blink」目閉じ 
「Eye_○○_Joy」笑顔^^
「Eye_○○_idle」通常
「Eye_○○_Wide」目開き
これを両目・左目・右目の4パターンx3種

普通はidleには何もいれないけど、ジト目ベースなのでジト目のデフォルト値を入れる。

片目づつも想定してるのでジト目を左右分かれているのをいれる
そして他のidle以外のAnimationにジト目を0しつつ目を閉じるAnimationにする

両目用 0フレーム目はすべて0
1フレーム目にウインク2(左目瞬き)とウインク2右(右目瞬き)を100にしている

※追記
他アバターでidleからjoyに移行する間に普段より強めジト目Animationをいれるといい感じになった
睨む感じで薄目が減っていい感じ
このアバターでもやりたい

・FXにParameterを追加
Boolで「EyeSwich」(両目・片目づつ切り替え用」
Flootで「LeftEyeLidExpandedSqueeze」「RightEyeLidExpandedSqueeze」「LeftEyeLidExpandedSqueeze/Smoothed」「RightEyeLidExpandedSqueeze/Smoothed」

・FXに「EyeLeft」と「EyeRight」Leyerを追加
元々瞬きしてる表情や、なごみ表情などに干渉しないように
干渉する表情のときはidleDummyへ
問題ない表情かつ両目のときはEyeBoothへ
問題ない表情かつ片目づつのときはEyeLeftにいくようなControllerを組んだ
もっとシンプルにできそう

EyeLeft Leyer

遷移で一瞬表情にまばたきが入っちゃうときがあったので、Handレイヤーと同じ遷移設定にした
→混ざらなくなった

両目・遷移
自分は右手でしか表情を変えないのでこんな条件

Can Transition To Selfのチェックボックスを外さないと一生瞬きし始める現象になった
むしろなんで今までチェックボックス入ってるのに正常に動いたりしてたの??
たぶん十中八九俺が悪い

・BlendTree内の設定

ParameterをLeftEyeLidExpandedSqueeze/Smoothedに指定
Varjo Aeroの瞬きFloatが目閉じ→目開きが-0.6→1.0だったのでThresholdをソレに合うように設定
普段のボケーっとしてる時がだいたい0.7だったのでidleを0.65ぐらいに調整

Thresholdの値は使うHMDとかによって違うのでそれぞれよきように。

※4月中旬にVarjoのソフトウェア・アップデートしたら目閉じ→目開きが0.0→1.0になってる気がする なんで???? 要確認

・AnimeterTrackingControl
Animationはレイヤーの下にあるほうが優先される感じで動くが、
AnimeterTrackingControlはTrackingControlがついてるステートの中で最後に遷移したステートが優先されてる 気がする

右手で「Fist(EyesがAnimationにチェックボックス)」したの後に、左手を「OpenHand(EyesがTrackingにチェックボックス)」したとする
Animationはレイヤーが下にある右手のFistになってるが、TrackingControlのEyes値はTrackingになる
そうすると困るので、もし「LeftHand」「RightHand」に入ってるのを全部解除しておく。

ぶっちゃけ全部EyesはAnimationでいいけど、別口でフェイストラッキングもするので口が干渉する表情だけNoMouthというStateにいくようにした

AnyState使わなくていい気がするけどなんか無いと動かんかった
多分俺が悪いことをした
自分は右手でしか表情を変えないのでこんな条件

・Parameter Smoother
アバター直下にParameter SmootherのComponentをつける

数値は瞳と一緒

・EXParameterに使うParameterを記述する
Boolで「EyeSwich」をデフォルトONで追加
Flootで「LeftEyeLidExpandedSqueeze」「RightEyeLidExpandedSqueeze」
をDefault0.65で追加

・VRCAvatarDescriptorの瞬き制御をNoneにする
EyelidsのEyelidTypeをNoneへ
上のEyeLookをDisbleにすればまばたきも一括できるが一応ね 一応

◎現状/改善/やってみたいこと

○現状(2024/04/16前後)

現状まばたきを両目/片目切り替えしているのは1アバターだけ
他のアバターは設定が面倒なので両目同時にまばたきしている

○検証しなきゃなやつ

・VarjoAero系
上でもちらっと書いたこと
4月中旬にVarjoのソフトウェア・アップデート(4.2.1.29)した結果、今までは目閉じ→目開きFloatが-0.6→1.0だったのが0.0→1になっている気がする

本当になんで今更… 
何度か何日か連続して見て本当に変わってたらBrendTreeのThresholdの調整をする

あとアイトラのソフトウェアが変わったのか、VRsatileのレンズに結構反射するようになったアイトラのキャリブレーション中に「余計なレンズのせいで反射して検知できねーやw」みたいなメッセージが出てくるようになった
実際Eyeカメラをみると前より反射してる というより光が強くなってる?
本当になぜ…
どっかに設定項目が増えてるかも・・・? 
がんばってchangelogをあさろう…

○やりたいこと①:つつみちぎりさんのまばたきBlendTree制御

・どういう制御方法か

・よさそうな点
左右で分けていたレイヤーを1個に統合できる
かなり自然に表現できそう
作るの楽しそう

・問題点
Animationいっぱいでくっそつくるのめんどくさそう

・どうするか
やってみたくはある

○やりたいこと②:瞳孔の大きさ調整

せっかく瞳孔の大きさParameterも出してるみたいなのでこれもやってみたい

・問題点
問題ってほどじゃないけど、たぶんそんなに反応しないのでかなりうっすい動きになりそう

○やりたいこと③:目の周りも動かす

既存のフェイストラッキングテンプレートのような瞳を動かすと目の周りのマブタが動くようなやつ

あんまやりすぎない程度にやりたい

Animationめんどくさそう

○やりたいこと④:Live2Dみたいな瞬きした直後に瞳がぷるぷるするやつ

びしょぬれのしずくさんのまばたきもこんなような動きをしていた
特に瞳孔がゆらゆら揺れててよかった
いいねってなったの実装してみたい

・問題点
とてもめんどくさそうである…
どこまでこだわってどこまで妥協するか…


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