00:00 / 00:00

Persona

トラッキング

Personaは、スマートフォンのアプリがローカルネットワークへ送信するARKitのフェイストラッキングデータを受信します。そのデータを毎フレーム、Live2Dモデルのパラメータ、またはVRMアバターの表情とボーンに適用します

使用するトラッキングアプリの動作要件を満たすスマートフォンを用意し、コンピュータと同じネットワークに接続してください

コンピュータに接続したウェブカメラで顔・手・体をトラッキングしたり、マイクで口を動かしたりすることもできます

複数のトラッキングデータを同時に受信できます。それぞれをトラッキングソースとして登録し、動かすアバターを指定します。複数人が各自のスマートフォンから、ローカルネットワークやVPN経由で1台のコンピュータに接続できます

トラッキングソース

トラッキングコントロールパネルの左側にあり、選択中の項目にかかわらず表示されます。ソースの設定はアプリに保存され、シーンを切り替えても維持されます。上から順にフェイストラッキングポーズトラッキングローカルIPアドレスのカード、ウェブカメラトラッキングリップシンクコントローラーが並びます。フェイストラッキングポーズトラッキングの各セクションには、マスタースイッチ、集約状態、ソース一覧があります。各ソースはカードになっていて、アプリのアイコン、名前、現在の状態、スイッチが表示されます。新規インストール時は、フェイス側にVTube Studio App(サードパーティUDP)、ポーズ側にVMCプロトコルが1つずつ登録されています

カードをクリックするとエディタが開きます:

フィールド効果
種類ソースが使用するプロトコル。読み取り専用で、名前を変更したあとも確認できます
名前付けた名前。空欄ならプロトコル自身の名前が表示されます
トラッカーIP顔ソース専用。指定するとそのトラッカーだけを受け付けます。空欄は任意のトラッカーです
ポートiFacialMocap、VMC、mocopiのソース専用。このソースが受信するポート。他のソースと重複すると拒否され、元の値に戻ります——1つのポートを共有できるのはiFacialMocapのソース同士だけです
アバターこのソースが動かすアバター

各セクションのソースカードの横にあるフェイスソースを追加…とポーズソースを追加…のカードから、そのチャンネルが対応するプロトコルを追加でき、エディタ末尾のソースを削除で削除します

フェイストラッキングを有効化ポーズトラッキングを有効化がそれぞれのセクションの先頭にあり、その隣にチャンネルの集約状態が出ます。この2つが切り替えるのはネットワーク経由のソースで、ウェブカメラには専用のスイッチがあります。ポーズトラッキングはVMCとmocopiのソースを受け付けます。シーンにVRMが1体もなければ、ポーズ側は割り当ての一覧ではなくその旨を表示します——Live2Dには動かすリグがないからです。両セクションの下には、このマシンが応答するローカルIPアドレスのカードがあります。スマートフォンのアプリが送信先を尋ねてきたときに答えるのがこれです

ソースにアバターを割り当てる

アバターを割り当てを開くと複数選択になります。このソースに動かしてほしいアバターにチェックを入れるか、すべて選択でまとめて取ります。数に入るのは、このソースのチャンネルが動かせるアバターだけです——ポーズソースにはVRMしか並びません

ウェブカメラのソースのカードには、代わりにチャンネルごとのの3つのボタンがあります。ウェブカメラトラッキングを参照してください

1体のアバターに割り当てられるソースは、チャンネルごとに1つです。割り当て済みのアバターにはトラッキング元: 〈名前〉と表示されます。チェックを入れるとトラッキングの再割り当てダイアログが開き、対象のアバターを確認してから割り当てを変更できます

1つのソースで複数のアバターを同時に動かすこともできます。割り当てたすべてのアバターに同じデータが適用されるため、1台のスマートフォンで2体の表情を同期できます

アバター自身の詳細にもトラッキングセクションがあり、アバターごとの設定を持ちます。コントローラーで移動と、マイクがいつこのアバターの口を動かすかを選ぶマイクによるリップシンクです(リップシンクを参照)。どのソースで動かすかは、ソースのカードで設定します

全体とソースごとのスイッチ

行の状態は2つに左右されます。ソース自身のスイッチと、そのチャンネルのマスタースイッチ(フェイストラッキングを有効化またはポーズトラッキングを有効化)です。どちらかがオフなら行はoffになり、両方がオンのときだけ自身のライブ状態を表示します

おかげで、1つのソースだけを一時的に止めることも、チャンネルごとまとめて切ることも、ソースを1つずつ触らずにできます

対応プロトコル

各プロトコルの設定手順とデータの送信方式については、以下のページを参照してください。

同じプロトコルのフィードを複数走らせるためにあるのがトラッカーIPです。各ソースにそのスマートフォンのアドレスを指定すれば、フィードは混ざりません。空欄のソースは、同じ種類のどのソースにも指定されていない送信元をすべて拾うので、2台のスマートフォンで2体を動かすなら、IPを入れたソースを2つ用意します

各ソースが提供するデータ

以下の3種類はいずれも、52個すべてのARKitブレンドシェイプの生データと、頭の回転・位置を送信し、VRMのパーフェクトシンクに対応しています。受信したデータからの入力値の算出、まばたきのラッチ処理、目の開きのキャリブレーションはPersona側で行います。プロトコルごとの違いは次のとおりです。

3rd Party UDPiFacialMocap / Facemotion3dLAPLACE Persona Tracker
接続の流れPersonaが要求をブロードキャストし、スマートフォンがUDPでデータを送信Personaが接続要求を送り、アプリがデータの送信を開始スマートフォンで接続先を探索し、応答したコンピュータを一覧表示
設定方法スマートフォン側でサードパーティ向けのデータ送信を有効にする送信先を求められたらコンピュータのローカルIPを入力Connectをタップしてコンピュータを選択。自動検出できない場合はアドレスを直接入力
ポート21412へ要求を送り、一時ポートで受信4998349700を送受信で共用
ウェイトの精度JSONの浮動小数点数0〜100の整数に量子化(1%刻み)Float32
データ形式JSON、1フレーム約2.6 KB。各値を名前で取得テキスト、1フレーム約950バイト。区切り文字で分割して解析バイナリ、1フレーム248バイト。52個のブレンドシェイプを固定長・固定順で格納
フレームの順序シーケンス番号がなく、古いフレームが新しいデータを上書きする場合があるシーケンス番号がなく、古いフレームが新しいデータを上書きする場合があるシーケンス番号で順序を判定し、遅れて届いた古いフレームを破棄
プロトコルの開発元VTube Studioの開発元iFacialMocapの開発元LAPLACE(トラッキングアプリ、デスクトップアプリ、プロトコルを開発)

量子化の影響は、Personaが値を増幅するチャンネルで目立つ場合があります。たとえば、口角を下げる動きのチャンネルは5倍に増幅されるため、1%刻みの値の変化によって表情の動きが段階的に見えることがあります。

LAPLACE Persona Trackerではワンタップでキャリブレーションでき、結果はアプリの再起動後も保持されます。省電力機能で画面を暗くでき、プレビューにはカメラ映像の代わりに顔のワイヤーフレームを表示します。詳しくはLAPLACE Persona Trackerを参照してください。

52個の生データは、それぞれ独立したARKit*入力としてパラメータの割り当てでも使用できます。Live2Dモデルでは、Personaが算出した入力値に加えて、スマートフォンが取得したブレンドシェイプの値を直接利用できます。

ウェブカメラのフェイストラッキングは、カメラ映像から同じ頭の姿勢とブレンドシェイプを算出します。ただしtongueOutはありません

ステータス

各ソースの行と、トラッキングのマスタースイッチの下の行が、実際に何が起きているかを示します:

ステータス意味
offこのソース、またはそれが属するチャンネルがオフ
waiting…有効だが、1.5秒以上データが届いていない
tracking顔が写ったフレームを受信中
no faceフレームは届いているが、スマートフォンが顔を認識できていない

各行にはそのソースの状態、マスタースイッチの下にはチャンネル全体の状態が表示されます。個別の接続状況は各ソースの行で、チャンネルがデータを受信しているかは集約状態で確認できます

ウェブカメラのソースも同じ値を使いますが、有効なタスクのいずれかが顔・手・体を検出していればtrackingになります。詳しくはウェブカメラトラッキングを参照してください。フェイストラッキングポーズトラッキングの集約状態は、ネットワーク経由のソースだけを数えます

トラッキングがモデルに届くまで

トラッキングデータはパラメータに適用される前に3つの段階を通ります:

  1. 受信——データを受け取ったソースが自身のプロトコルを解析し、ニュートラルなフレームにします。頭の回転、頭の位置、ARKitのブレンドシェイプです。以下の2段階は、そのソースに割り当てられたアバターごとに1回ずつ走ります
  2. 導出——そのフレームがVTube Studioの入力語彙へ変換されます。モデル作者が普段扱うのと同じ信号名——FaceAngleXEyeOpenLeftMouthSmileBrowsなど——です。52個の生のARKitチャンネルはその隣にそのまま並び、それぞれがARKit*入力になります。ラッチもキャリブレーションもゲインもかかりません
  3. マッピング——パラメータの割り当てごとに、1つ以上の入力がそれぞれの重みで合算され、入力範囲・出力範囲・レスポンスカーブ・パラメータごとのスムージングを順に通ってCubismのパラメータへ書き込まれます

頭の回転、頭の傾き、目の開きとまばたき、視線、眉、頬のふくらみ、口の開き、口の形、そして笑みやしかめ面がすべて駆動されます。モデルが持たないパラメータはスキップされ、あるフレームに含まれていなかったパラメータは直前の値で固定されるのではなく解放されます

独自のマッピングを持つモデル

モデルが.vtube.jsonを同梱している場合、Personaは組み込みの既定値ではなくそのモデル自身のマッピングを使います——パラメータの対応づけ、範囲、ゲイン、スムージングのすべてです。作者が意図的に左右の目を入れ替えたり、目の開きの範囲を倍にしたり、パラメータ名を変えたりしたモデルは、PersonaでもVTube Studioとまったく同じように動きます

.vtube.jsonを持たないモデルは、実際のARKitの記録データに対して調整された組み込みのマッピングを使います

VBridgerのパラメータ

VBridgerはパラメータの一覧ではなく、ユーザーが自分で式を書くエンジンです。出力名ごとに、52個のARKitシェイプについての式が1〜3本定義されています。標準的に使われる同梱プリセットはVBridger_AdvancedARKit_V3.0で、そこに並ぶMouthPuckerMouthFunnelMouthShrugMouthPressLipOpenと6つのBody*は、VTube Studio自身の入力リストにはありません——あちらではプラグインが作るカスタムパラメータとしてのみ存在し、実際に作っているのがVBridgerです

そのためPersonaはこれらの名前を入力として扱いません。.vtube.jsonから割り当てを読み込むときに、VBridger自身がそれらを計算している重み付きの和へ展開されます。式はこのプリセットに基づいています。MouthPucker(mouthDimple_R + mouthDimple_L) × 2 − mouthPuckerで、すぼめる側が負。6つのBody*は対応するFaceAngle*/FacePosition*と同じ式です。展開されたあとはただの重み付き入力なので、エディタ上に並び、自分で書き換えられます

MouthOpenJawOpenは別々の入力です。前者は唇がどれだけ開いたか、後者は顎がどれだけ下がったか——VBridgerのリグがParamMouthOpenYParamJawOpenとして対応付けるのと同じ組み合わせです。JawOpenARKitJawOpenをそのまま複製したものなので、どちらの名前も同じ値を読み、バインディングではどちらの名前も使用できます

モデルの位置移動

カメラに近づいたり遠ざかったりすると、リグのパラメータではなくモデル全体が動きます。頭の水平・垂直位置に合わせてスライドし、寄り引きに合わせてスケールします。これはVTube Studioの組み込みの挙動と同じで、既定の量やスムージングまで揃えてあります。モデルごとの設定は.vtube.jsonModelPositionMovementセクションで指定します

VRMアバター

これらのフェイスソースでVRMアバターも動かせます。違うのは最後の段階だけです。VRMにはCubismのパラメータがないからです

52個のARKitブレンドシェイプをすべて表情として持つモデル——つまり パーフェクトシンク ——は導出された語彙を完全に飛ばし、スマートフォンの生のARKit値で1対1に駆動されます。スマートフォンが送信したウェイトをそのまま使用します。パーフェクトシンク対応のモデルは大文字小文字の書き方がまちまちなので、名前の照合は大文字小文字を区別しません。部分的なカバーでは足りません。52個のうち51個しかないモデルは下記のマッピングにフォールバックし、情報ブロックパーフェクトシンクの行にその個数が表示されます

パーフェクトシンクがない場合、導出された信号はモデルのプリセットへ対応づけられます:

  • ——口の開き、すぼめ、とがらせ、笑みが組み合わさってVRMのリップシンク表情(aaihouoh)になります。各形状は互いを制約し合うので、口の形が互いに干渉しないように調整されます
  • ——モデルが左右別のまばたきを持っていればそれを、なければ左右一体のまばたき表情を使います
  • ——ヨー、ピッチ、ロール。一部は胸と背骨に分配されるので、頭の向きに上半身全体が自然に付いていきます
  • 視線——モデル自身のlook-atを通じて目の向きを制御します。ボーン駆動でも表情駆動でも同じです

アイドル動作との切り替え

トラッキングが有効な間は、自動まばたきが一時停止します。トラッキングをオフにすると、通常のアイドル動作に戻ります

トラッキングデータが途切れたときの挙動は、アバターごとにアイドルセクションのトラッキングロス時で決めます。既定の最後のポーズを保持は最後に受信したフレームで静止し、アイドルに戻るはアイドルアニメーションへ移ります。どちらの場合も目の制御は解放され、データの受信が再開するまで自動まばたきが有効になります。Live2Dは代わりに再生するモーションも指定できます——トラッキングロス時を参照してください

キャリブレーション不要

ニュートラル姿勢のキャリブレーションはありません。ARKit経路におけるVTube Studioと同じ考え方で、スマートフォンが報告する絶対的な頭の姿勢を信頼します。スマートフォンは自分の正面、おおよそ目の高さに置いてください——低い位置に立てかけると、常にあごを上げているように読み取られます

これはスマートフォンのソースの話で、ウェブカメラはPersona側でキャリブレーションします

ウェブカメラトラッキング

ウェブカメラトラッキングは、コンピュータに接続したカメラで顔・手・体をトラッキングします。専用のウェブカメラトラッキングを有効化で切り替えます。アバターの顔・体・手はそれぞれ別のソースから受け取れるので、スマートフォンやモーションキャプチャキットに指の動きを足すこともできます。詳しくはウェブカメラトラッキングを参照してください

リップシンク

リップシンクはマイクでアバターの口を動かします。音声の調整はマイクごとに保存されます。各アバターのマイクによるリップシンクで、オフ常にフェイストラッキングが利用できないときから選びます。詳しくはリップシンクを参照してください

コントローラー

トラッキングページ下部のコントローラーセクションでは、Live2DとVRMのパラメータバインディング、インスタンスごとのステージ移動、オートメーションアバターショートカットの組み合わせを設定できます。コントローラーはトラッキングソースやアバターの割り当てを使用せず、カメラ操作にも対応していません

コントローラーを接続する

コントローラーを有効化をオンにして、コントローラーを接続します。DualSenseとDualSense EdgeはWebHID経由なので、ウィンドウをフォーカスしたりボタンを押したりしなくても認識されます。アプリを再起動したあとも同じです。それ以外のコントローラーはブラウザのGamepad API経由なので、ステージをクリックしてボタンを押すまで現れません

接続中のコントローラーはいま動いている機器の数で、まだ何も割り当てていないものも含みます。接続中のプロファイルが先に並び、残りは折りたたまれた保存済みプロファイルに名前とバインディングをそのまま保ったまま入ります。カードを選んでも切り替わるのはライブモニターだけで、バインディングは変わりません

コントロール効果
名前このプロファイルに分かりやすい名前を付けます。Enterかフォーカスを外すと保存され、空にすると番号の表示に戻ります
スティックのデッドゾーン選択中のプロファイルに属し、2本のスティックに適用されます。既定は15%。コントローラーごとにドリフトの程度に合わせて調整できます
コントローラーを割り当て保存済みプロファイルを選んでこれを押し、その実機のボタンを押すと、その物理コントローラーがこのプロファイルに結び付きます
プロファイルを削除保存済みプロファイルを開くと現れます。先にコントローラーを外してください。バインディングとショートカットは残りますが、その番号が新しい機器に割り当てられることはありません

プロファイルには、番号、機器が報告する製品名、ハードウェア識別子のハッシュが保存されます。識別子そのものは保存されません。ハードウェア識別子が取得できる機器は、同じ製品でも接続順やケーブルの変更後に区別できます。切断時は入力のみが解放され、プロファイルとバインディングは保持されます

Xbox、その他のPlayStation、Switch ProのコントローラーはChromiumのstandardマッピングを使い、印字された文字ではなくボタンの物理的な位置で認識されます。認識できないブラウザのレイアウトは非対応として一覧に出ます。ジャイロ、タッチパッド、独自のリマップ、複数の機器を1つにまとめる機能は、このバージョンの範囲外です

パラメータを動かす

モデルのパラメータエディタには、保存済みまたはすでにバインドされたプロファイルごとに入力のグループがあり、それぞれ19個のコントロールを持ちます。2本のスティック、スティック押し込み、十字キー、フェイスボタン、ショルダー、トリガー、optionsとhomeです。スティックと十字キーの範囲は−1から1で、Y軸は上が正。ボタンとトリガーは0から1です。バインディングごとにどのグループを読むか選べるので、別々のコントローラーで別々のパラメータや別々のアバターを動かせます

プロファイル#1はVTSの名前をそのまま使うので(ControllerStickLeftXControllerCross)、既存のマッピングはそのまま動きます。#2以降はControllerのあとに番号が入ります:Controller2StickLeftXController3CrossController12TriggerRight。この番号付きの名前はPersonaの拡張で、プラグインAPIの入力ターゲットでも同じ名前を使います

コントローラーの入力は、フェイストラッキングのスイッチやソースの割り当てとは無関係に、読み込まれている各モデル自身のルールへ届きます。範囲・カーブ・スムージングの手前で顔の項と一緒に加重合成されます——ドロップアウトの間、保持された顔の入力はそのまま残り、コントローラーの項は反応し続けます。エディタで入力をドラッグしている間は、同じ物理入力よりそちらが優先されます。コントローラーのバインディングはフレームレートに依存しない指数応答を共有し、スムージング0は即座、100は時定数350msです

1つのコントローラーを抜くと解放されるのはそのグループだけで、コントローラーを有効化をオフにすると全部が解放されます。どのソースも動かさなくなったLive2Dの出力はCubismの既定値に戻ります

VRMのターゲット

同じパラメータエディタがVRMアバター向けにもう一組のターゲットを生成します。これらはCubismから読み込んだパラメータではなく、仮想のバインディングターゲットです:

ターゲット範囲意味
HeadYawHeadPitchHeadRoll−30°〜30°正規化された頭のボーンへのオフセット
BodyYawBodyPitchBodyRoll−15°〜15°利用できる背骨と胸のボーンに配分されるオフセット
GazeYawGazePitch−90°〜90°現在の視線角度へのオフセット
Expression:<名前>0〜1モデルが持つプリセットまたはカスタム表情のウェイト

角度は既存の顔入力の慣習に従い、VRM 0.xと1.0でのピッチとロールの違いはレンダラーが吸収します。表情名はモデルに書かれた綴りのまま照合されます。ボーンと視線は現在のアニメーション、ポーズトラッキング、フェイストラッキングの上に重なり、表情のバインディングは指定したウェイトだけを占有します。各フレームの終わりにドライバが下の層の状態を復元するので、オフセットが積み上がることも、手で設定した表情のウェイトが消えることもありません。入力を放すかルールを削除すると、そのターゲットは下の層の現在の姿勢や表情へ滑らかに戻り、他のコントローラーやトラッキングはそれぞれの担当を動かし続けます

バインディングはモデルに属し、既存のトラッキングのサイドカーに保存されるので、同じモデルのすべてのインスタンスが共有します。同じモデルの2つのコピーを別々に動かしたいときは、下のインスタンスごとの移動設定を使ってください

ステージ移動

アバター自身のトラッキングセクションでコントローラーで移動をオンにし、保存済みプロファイルを選びます。マスタースイッチのコントローラーを有効化もオンである必要があります。移動は任意で、既定はオフです——パラメータバインディングとショートカットはこれに依存しません

コントロールLive2DVRM
左スティックX水平に移動ワールドX軸に沿って移動
左スティックY垂直に移動ワールドZ軸に沿って移動、上が負のZ
右スティックXステージ平面内で回転ワールドY軸まわりに向きを変える
右スティックYスケールを変更ワールドYを上げ下げ

移動速度の単位はLive2Dでは毎秒あたりのステージの高さ、VRMでは毎秒メートルです(既定0.5、範囲0〜10)。Live2Dのスケールの応答とVRMの上下の速さもこれで決まります。回転速度は毎秒の度数(既定90、範囲0〜720)。応答のスムージングは速度の応答時間で単位は秒(既定0.12、範囲0〜0.5)、0なら即座に応答します。Live2Dのスケーリングは現在の大きさに比例し、通常のスケール上限・下限をそのまま守ります

移動は経過時間に対してスムージング後の速度を積分するので、30、60、120fpsのどれでも同じ速さで進みます。スティックをニュートラルに戻すと、新しい位置で滑らかに止まります。抜く、オフにする、割り当て直すと、その速度は即座にクリアされ、再接続で以前の勢いが戻ることはありません。非表示のアバターは動きません。直接の配置操作と位置の補間移動(オートメーションのモデル位置アクションやAPIによるもの)はそのアバターの移動を一時停止し、テキスト編集、ショートカットの記録、コントローラーの割り当ても同じです

移動が変えるのはそのインスタンスの通常の配置で、シーンと一緒に保存されます

移動中に歩く

VRM専用です。移動中に歩くをオンにして、アニメーションのインベントリから歩行アニメーションを選びます——スイッチはクリップを選ぶ前にオンにできますが、選ぶまでは働きません。読み込んだVRMA、Mixamo FBX、MMD VMDのアニメーションは、アイドルのクリップと同じ登録済みアセットを使います

アバターが地面を移動する間クリップがループし、止まると通常のアイドルへブレンドして戻ります。歩行周期の速度は再生速度1のときのクリップの名目速度(毎秒メートル)で、実際の再生は計測した地面の速度をこれとアバターのスケールで割った値に従うので、移動速度やモデルの大きさを変えると歩調も合わせて変わります。配置をシーン側で決めたままにするため腰のX/Z移動は取り除かれ、上下の揺れは残ります。歩行のレイヤーは頭・視線・表情のトラックを含まないので、コントローラーと顔のポーズはそのまま保たれます。ワンショットのアニメーションが優先され、ボディトラッキング(VMC、mocopi、ウェブカメラ)が腰や脚を制御している間は歩行が抑制されます。手のみを制御するVMCとは併用できます

移動方向を向くは、歩行クリップの有無にかかわらず、回転速度でアバターを進行方向へ向けます。右スティックの旋回が優先されます。歩行は滑らかな停止も含めた平面上の実際の移動を見るので、高さの変化だけでは始まりません。これは直接のステージ移動に重ねたアニメーションであり、ナビゲーション、コリジョン、地形への追従はありません

コントローラーのショートカット

ショートカットのレコーダー(オートメーションのキーボードまたはコントローラートリガーとアバターショートカットで共通)は1つのコントローラーから最大3つのコントロールを受け付け、スティックと十字キーの方向、トリガーも含みます。記録されたボタンは所属するプロファイルを持つので、#1と#2の同じボタンで別の操作を走らせられます。別のコントローラーで押されているボタンはその組み合わせから除外されます。押した瞬間に1回発火し、押し続けても繰り返しません。バックグラウンドで動作はキーボードの修飾キーなしでコントローラーのショートカットにも効きます——記録中とテキスト入力中は発火が抑えられ、その押下は消費されるので、フォーカスを外したりレコーダーを閉じたりしても、押しっぱなしのボタンが発火することはありません

コントローラー#1の組み合わせはVTS標準のController*トークンを使い、#2以降は番号付きのPersonaのトークンを使います。OSのグローバルショートカットには登録されず、キーボードとコントローラーの混在も、コントローラーをまたいだ組み合わせも非対応です。同じ組み合わせが重なったときは、オートメーションがアバターショートカットより優先されます

.persona.jsonはすべてのプロファイルを通常のトリガー文字列で保存します。モデルが.vtube.jsonを使う場合、番号付きのコントローラーショートカットはホットキーのPersonaControllerTriggers拡張に入り、VTSが知らない列挙名を受け取らないようにVTSネイティブのトリガー枠は空にされます。Personaはこの拡張を優先して読みます。キーボードか#1のショートカットを割り当てるか、消去すると拡張は取り除かれます

トラブルシューティング

ステータスが "waiting…" のまま

  • スマートフォンとコンピュータが同じネットワークにいること、そしてそのネットワークが機器同士の通信を遮断しないことを確認してください——ゲストWi-Fiと公衆Wi-Fiはたいてい遮断します
  • ファイアウォールがPersonaへのUDP受信を許可しているか確認してください
  • VPNはすべて切断してください。VPNのトンネルはブロードキャストのトラフィックを取り込んでしまうことがよくあります。Personaはこれを避けるために、物理インターフェースごとにサブネット宛のブロードキャストを送っていますが、それでも設定によっては遮断されます

ブロードキャストがどうしても通らない場合は、Personaを起動する前に環境変数でスマートフォンのアドレスを直接指定してください:

変数効果
PERSONA_VTS_PHONE_IP通常のブロードキャストに加えて、このアドレスをVTube Studioソースの送信先として追加する
PERSONA_IFM_PHONE_IPiFacialMocap / Facemotion3dではブロードキャスト探索を完全に置き換えるので、ブロードキャストは一切送信されなくなる

モデルは動くが、反応する部位が違う

モデルに.vtube.jsonが含まれているか確認してください。Personaはこのファイルのマッピングを使用します。同じモデルをVTube Studioで読み込み、該当するパラメータの動作を比較できます

一部のパラメータがまったく動かない

選択中のモデルの情報を開いて、パラメータ数を確認してください。標準的でないパラメータ名を使うモデルや、Cubism 2の命名規則を使用する古いリグでは、その入力が動かせるパラメータが存在しないことがあります

何も反応しないのに、ステータスは "tracking"

ソースを開いてアバターの一覧を確認してください。データを受信していても、アバターを割り当てるまでモデルは動きません。1体のアバターに割り当てられるソースはチャンネルごとに1つなので、別のソースに割り当てられていないかも確認してください

スマートフォンが2台あるのに、同じアバターが動く

両方のソースでトラッカーIPが空欄の場合、送信元が未指定のどちらかのソースがデータを受信します。各ソースに対応するスマートフォンのアドレスを入力し、正しいアバターにデータが届くようにしてください

最終更新日:2026年9月19日

Tech otakus destroy the world