FaceEmoとフェイストラッキングの共存
とりあえず共存するだけなら、顔トラで動かしてるシェイプキーを「除外シェイプキー」に追加すればいい
表情アニメーションから、除外シェイプキーに該当するキーを削除するか、警告を表示する機能が必要かも
MAやFuryで導入する層よりも市販ツールで導入する層の方が多数派なので、なんらかの自動化は必要
顔トラのDirectBlendTreeを検出して、それに含まれるアニメーションのキーを列挙する?
Jerry's Templatesでも販売FXでも OSCmを使っているのでそこで検出?
フェイストラッキングで使用しているシェイプキーの抽出
ARKit等のシェイプキーを使用している場合は簡単に抽出できるが、既存のシェイプキーをやりくりしていたり、新しく追加している場合はどうするか?
VRCFTテンプレートのジェスチャー表情無効化との連動
表情干渉対策
目閉じ
FaceEmoだけで制御する場合、デフォルト表情やまばたきとの干渉は完全にコントロールできたが、アイトラについてはどう考えればいいか?
目閉じの限界値を表情ごとに設定する場合、自動表情合成に対してはどの表情の値を適用すればいいのか?
顔トラの口変形に対して口変形キャンセルを適用するのか?
どのパラメータが0より大きい場合にキャンセルすればいいのか分からない
上級者向けにはなるが、口変形キャンセルに移行するためのパラメータを指定させるのが無難か
FXから拾う?
自由入力もできるといい
市販のFXの場合、HandsLayerで目トラ・顔トラの有効・無効を切り替えている
少し目を閉じている場合、EyeTracking_GestureControlを0.2や0.35にしている
EyeTracking_GestureControlが小さいほど目トラの影響が大きくなる
口トラは0か1だったが、ウェイトの使い方は同様なので中間値をとることもできそう
Jerry's Templatesの場合は0と1のどちらかになる
DirectBlendTreeを見ても、EyeTracking_GestureControlに相当するパラメータが存在しない
舌トラもLipTrackingActiveで停止できる?
目トラの制御は、まばたき設定と共通化できそう
「目の開き具合」のようなパラメータ名にする?
「目の開き具合」だと何に使われるか不明瞭なので、「まばたきウェイト」的な名前がいいか
数値で入力するだけだとわからないので、プレビュー画面は必要
まばたきレイヤーをBlendTreeにする場合、WD ONのバグが障害になるか?
ステート遷移をなくして、まばたき無効の場合はパラメータ0にしてやればいい?
その場合、FORCE_BLINK_DISABLEについての処理を検討する必要がある
ExMenuでトグルする瞬間はなめらかに遷移する必要がないと考えると、ステート遷移にしてもいいかも
従来は0.75秒でENABLEからDISABLEに遷移していた
BlendTreeを使って、forceでウェイトをかけた後にcnでウェイトをかければいい
exit timeを使って、キーが0のときに遷移するようにしてやればバグの影響を回避できる
ランダムまばたき
あまり定番の構成はなさそう?
・3~8秒のランダム間隔でまばたき
・20%の確率で2連まばたきをする
・表情変更時は発動せず干渉しない
・各視点ローカル処理で同期まばたきではない
まばたき間隔は4~10秒(4 / 0.4~1.0)でランダム
まばたき間隔が8秒以上(less 0.5)の場合は2回まばたき
CACは5秒間隔
仕様案
最短間隔と最長間隔をユーザーが指定
まばたきアニメーションの前後に一定のウェイトを入れる(バグ回避)
最長間隔 - 最短間隔 - 前後ウェイトを5で割って、*1 から *5 のステートを作る
まばたき終了後、ランダムでいずれかのステートに遷移
まばたき再生ステートへの遷移は、force_disableがfalseの場合のみ
ユーザー作成のアニメーションでもランダム機能は使用可能とするが、再生時間は特にいじらない
前後にウェイトが入っていなくても無視
アニメーションの再生が終わってから最短~最長間隔だけ待つ
デフォルト表情の目の開き具合を、他の表情に反映する方式については検討が必要
仕様案
各表情でまばたきウェイトを設定しない場合、デフォルト表情のまばたきウェイト設定を引き継ぐ
設定した場合は上書きし、デフォルト表情のまばたきウェイトを変更しても反映しない
統一したい場合は設定をオフにする
まばたき時の表情変化プレビューは、従来の表情サムネイルの右側に表示する
表情ごとに表示をON・OFFするのではなく、一括でON・OFFする
デフォルトで表示OFFとする
最初から表示されていると、何のプレビューだか分からない
まばたき表情プレビューと同様に、口変形キャンセルもプレビューするか?
まばたきのプレビューと口変形キャンセルのプレビューは並置しない方が良い
口変形キャンセル表情プレビューの意義は、すべての表情で口がデフォルトの形に戻っているかチェックすることにあるため、口変形キャンセル無効の表情が混じってしまうとややこしい
口変形キャンセル無効の表情はサムネイルを表示しないようにするのであればアリかも
まばたきプレビューも同様の仕様でいいのでは?
プレビューを表示する場合は、同じ画面で口変形キャンセルのシェイプキーも設定できるようにする
画面がゴチャつくので、やっぱり別画面の方がいいかも
まばたきプレビュー詳細仕様
まばたき無効の場合は表示しない
ただし、フェイストラッキング設定が有効な場合は仕様を変更する
目トラを有効にした場合、まばたきを常にOFFにする
目トラを使っていて、まぶたのトラッキングを切っているケースは考えづらい
目トラを有効にした場合、まばたきウェイトを無視してプレビューを表示する
ただし、まばたきウェイトを目トラに同期している場合はまばたきウェイトを無視しない
パラメータ名を共通化する場合、顔トラのHandsLayerの影響を受けてしまうのでは…?
これはよくない
内部ではパラメータ名を別々にして、まばたき用と目トラ用のパラメータを同時にParameterDriverで変更する
この場合でも、目トラ用のパラメータがHandsLayerで変更されてしまう問題は残る
ビルド時に目トラ用パラメータを触るParameterDriverをすべて削除する?
ExMenuで操作するパラメータの場合は外部で変更することが想定されているので問題ないが、Animatorだけのパラメータの場合はそのあたりを考慮する必要がある
当該パラメータを変更しているステートを列挙して警告する?
ParameterDriverの場合はいいが、AAPの場合はどうする?
そもそもAAPで変更するケースはあるか?
口トラの制御はboolが分かりやすいか?
市販FXでは口が開いている場合は口トラ無効、それ以外は有効としている
リップシンクも絡んでくるので、floatで設定する場合はプレビューに困りそう
目トラ・口トラの有効・無効はboolにして、まばたき用パラメータを反映するかどうかをオプションにする?
それとも、まばたき・リップシンクの設定を目トラ・口トラに流用する?
まばたきのbool設定を削除してfloatに一本化した場合はどうするか?
ウェイトが0より大きい場合は目トラを無効にする?
口トラ使用時、口のTrackingControlは基本的にTrackingだが、舌出しの場合はAnimationにすることに注意
これ対応できなくない?
市販FXでは、v2/TongueOut が0.5より大きいときにAnimationにしている
従来は表情再生レイヤーで口のTrackingControlを変更していたが、レイヤーを独立させる必要がある?
TrackingControlについての処理を拡張することを考慮して、目のTrackingControlも別レイヤーにする?
レイヤー数は負荷に影響するのが悩みどころ
パラメータ名は v2/TongueOut か、 OSCm/Proxy/v2/TongueOut でいいのか?
対応を間違えた場合、「なぜか突然リップシンクが動かなくなる」ケースが発生する
口トラ有効も分岐条件に加える?
フェイストラッキングの強化
表情パターンに合わせたフェイストラッキング設定をFaceEmo側で設定する
キツくない?
目トラ・口トラの有効・無効は、顔トラ側のパラメータを使うのが良さそう?
EyeTrackingActive (bool)
LipTrackingActive (bool)
制御用パラメータはアバターのFXから検索する?
MAの方も検索する必要はあるか?
内部値になっている場合は連携できない
これは内部値にしてない
パラメータ名を自由入力にして、アバターのFXに該当するものがなければ警告表示が妥当か
MAで内部値になっている場合もその旨警告する
FacialExpressionsDisabled や GestureExpressionDisabledは使わなくてもいいか?
FacialExpressionsDisabledはそもそも使われてない疑惑がある
バイパスしてもいいかも
*ExpressionDisable*でマッチングする?
TrackingControlの制御
顔トラのFXでの制御は無効化する?
非MAの顔トラの場合はいいが、MAの顔トラの場合は無効化できない
マイナーだから除外していいか?
疑似アイトラの扱いどうする?
常にAnimationでよかったりしないか?
目トラが有効な場合、市販FXではAnimationにしている
既存の視線移動ギミックを使う場合はTrackingにする必要があるか?
ExMenuでの目トラ口トラ切り替えを残す場合、表情レイヤーでパラメータを変更するのはダメ
目トラと口トラのシェイプキーが既知であれば、それらをリセットするアニメーションを再生するのはアリ
顔トラ用シェイプキー検出
exparamから目トラ口トラ用パラメータ(synced bool)を検出
fxからdtbを抽出
目トラ口トラ用パラメータでブレンドされているmotionを抽出
motion内のキーを抽出
blendshapeだけでいいか?
目トラ用オプション
まばたきウェイトを目トラに同期
同期先のパラメータはユーザーが選択
特定のワードで検索して、スコアが高い順に表示
ParamDriverで変更されている場合は警告
口トラ用オプション
舌出し有効時にリップシンク無効化
オプション有効時のみ、TrackingControlのレイヤーを独立?
レイヤー削減と場合分けの削減のどちらを優先すべきか?
参照先のパラメータは目トラと同様にユーザーが選択
閾値もユーザーが指定
一部の口トラ用パラメータが一定の値より大きいとき、口変形キャンセルを有効にする
siromori eye pointerはaim constraintで目のボーンを動かしているため、tracking controlやblendshapeの影響を受けない
表情合成の際、まばたき設定や目トラ・口トラ設定の合成ポリシーをどこかでまとめて定義しておく
まばたき有効・無効を合成する場合は無効を優先、など
MAやFuryでフェイストラッキングを導入する人へのフォローは必要か?
自動設定は必要ないのでは?マニュアルに設定方法を書いておけばいい
アニメーション上書きで目トラ・口トラを無効化する場合、FXの結合順に注意する旨の記述が必要
Furyの場合は常に後から結合されてしまうのでは?
導入方法についてアンケートとる?
UI上での名称
疑似アイトラ
「視線トラッキング」から変更
アイトラッキング
リップトラッキング
目と口のTrackingActiveをboolからfloatに変えれば重みとして扱えるのでは?
ExMenuもboolのトグルにする
フェイストラッキングの設定ツールを自作して、無理なくFaceEmoと共存できる形にするのが(コストを無視すれば)ベスト