00:00 / 00:00

Persona

トラッキング

適用対象Live2DVRM

Personaは、モバイルアプリからローカルネットワーク経由で送信されるARKitフェイストラッキングデータを受信し、毎フレームLive2DモデルのパラメータやVRMアバターの表情・ボーンへとマッピングします。フェイストラッキング処理はモバイルデバイス側でリアルタイムに実行されます。

モバイルデバイスは各トラッキングアプリの動作要件を満たし、Personaが動作するコンピュータと同じローカルネットワークに接続されている必要があります。

また、コンピュータに接続されたウェブカメラを用いて顔・手・身体のポーズをトラッキングしたり、マイクでリップシンクを実行したりすることも可能です。

Personaは複数のトラッキングソースの同時動作に対応しています。各ソースはシーン内の1体以上のアバターへ個別に割り当てられます。たとえば複数人が各自のスマートフォンを持ち、1台のコンピュータ(またはVPN経由)でそれぞれのアバターを個別に動かせます。

トラッキングソース

トラッキングはコントロールパネルの左カラムにあり、選択中のレイヤーとは関係なく機能します。トラッキングソースはアプリケーション全体の設定なので、シーンを切り替えても維持されます。

パネルには上から順に次の項目が並びます。

  • フェイストラッキング:フェイストラッキングを有効化マスタースイッチとフェイスソース一覧。初期状態ではLAPLACE Persona Trackerソースが1つ登録されています。
  • ポーズトラッキング 適用対象VRM:ポーズトラッキングを有効化マスタースイッチとポーズソース一覧。VMCおよびmocopiソースを受け付け、初期状態ではVMC Protocolソースが1つ登録されています。シーンにVRMアバターがない場合は注意メッセージが表示されます。
  • ローカルIPアドレス:このコンピュータのローカルネットワークアドレスを一覧表示するカード。モバイルのトラッキングアプリに入力する接続先です。
  • ウェブカメラトラッキング:コンピュータのカメラで顔・手・身体をトラッキングします。独立したスイッチを備えています。詳細はウェブカメラトラッキングを参照してください。
  • リップシンク:マイク音声で口を動かします。詳細はリップシンクを参照してください。
  • コントローラー:ゲームコントローラーの割り当てです。詳細はコントローラーを参照してください。

各マスタースイッチはそのチャンネルのネットワークデータ受信を切り替え、スイッチ横にチャンネルの集約ステータスを表示します。各ソースはカード形式で表示され、アプリアイコン、名称、リアルタイムステータス、有効化スイッチが並びます。ウェブカメラのカードには専用のスイッチがなく、そのセクションのウェブカメラトラッキングを有効化が代わりを務めます。

ソースカードをクリックすると設定エディタが展開されます。

フィールド説明
種類ソースが使用するプロトコル(読み取り専用)。名前変更後もプロトコル種別を判別可能
名前任意の表示名。空欄の場合はプロトコル規定の名前を表示
トラッカーIPフェイスソース専用。指定したIPアドレスのトラッカーのみを受信。空欄時は任意のトラッカーを受信
ポートiFacialMocap、LAPLACE Persona Tracker、VMC、mocopiソース専用。データを受信するポート番号。新しく追加したソースには空いている最初のポートが自動で割り当てられます。既存のソースと競合した場合は元の値に自動復元。同一ポートの共用はiFacialMocapソース同士、またはLAPLACE Persona Trackerソース同士でのみ対応

各ソース一覧の末尾にあるフェイスソースを追加…やポーズソースを追加…カードから、そのチャンネルに対応する任意のプロトコルのソースを追加できます。エディタ下部のソースを削除でソースを削除します。

トラッキングソースへのアバター割り当て

ソースカードのアバターを割り当てボタンをクリックすると複数選択リストが開きます。このソースで動かすアバターにチェックを入れるか、すべて選択で一覧のアバターをまとめて選択します。リストにはそのソースのチャンネルで駆動できるアバターのみが表示されるため、ポーズソースではVRMのみが表示されます。

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

同一チャンネル内では、各アバターを割り当てられるソースは1つに限られます。他のソースへ割り当て済みのアバターには「トラッキング元: 〈名前〉」と表示されます。そのアバターにチェックを入れるとトラッキングの再割り当て確認ダイアログが開き、影響を受けるアバターがすべて一覧表示されます。確認するまで割り当ては変更されません。

1つのソースで複数のアバターを同時に駆動でき、各アバターには同一のトラッキングデータが送られます。1台のスマートフォンで2体の表情を同期させるといった使い方ができます。

各アバターの詳細パネルにもトラッキングセクションがあり、そのアバターだけに適用される設定(Live2Dのモデル全体の移動、コントローラーで移動、マイクによるリップシンク)を行えます。マイクによるリップシンクは、マイクがいつアバターの口の動きを制御するかを指定します。詳細はリップシンクを参照してください。どのネットワークソースやカメラでアバターを駆動するかは、ソースカード側でのみ指定します。

マスタースイッチとソーススイッチ

ソースカードの動作ステータスは、ソース自身のスイッチとそのチャンネルのマスタースイッチ(フェイストラッキングを有効化またはポーズトラッキングを有効化)の2段階で制御されます。いずれかのスイッチがオフの場合、ステータスはoffと表示されます。両方がオンのときのみ、リアルタイムの接続状態が表示されます。

この設計により、ソースを個別に再設定することなく、特定のソースを一時停止したり、チャンネル全体を一括でオフにしたりできます。

対応プロトコル

各プロトコルの設定手順および通信仕様の詳細は、以下の各ドキュメントを参照してください。

同一プロトコルのソースを複数同時に使用する場合は、各カードのトラッカーIP欄に対応するスマートフォンのローカルIPアドレスを入力してください。IP未指定のソースは、同種ソースに未割り当ての送信元からのデータを自動的に受信します。2台のスマートフォンで2体のアバターを個別に動かす場合は、各ソースに明示的にIPアドレスを割り当ててください。

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

3種類のフェイストラッキングプロトコルは、いずれも52種類のARKitブレンドシェイプの生データ、頭部回転・位置データを完全に送信し、VRMパーフェクトシンク(perfect sync)に標準対応しています。入力の導出、まばたきラッチ処理、目の開口キャリブレーションはPersona側で一元処理されます。プロトコルごとの接続方式、通信負荷、データ精度の違いは以下のとおりです。

項目3rd Party UDPiFacialMocap / Facemotion3dLAPLACE Persona Tracker
接続方式Personaが探索要求をブロードキャストし、端末がUDPでデータ返信Personaが接続要求を送信し、アプリがデータ配信を開始端末側が応答コンピュータを自動探索し、タップして選択
設定方法モバイルアプリ内でサードパーティ配信を有効化モバイルアプリ内にコンピュータのローカルIPを入力接続をタップしてPCを選択。手動でのIP入力にも対応
ポート要求は21412へ送信、データはエフェメラルポートで返信4998319700(双方向送受信で共用)
ウェイト精度JSON浮動小数点数0〜100の整数に量子化(1%刻み)Float32
データ形式JSON(1フレーム約2.6 KB)、フィールド名で解析テキスト(1フレーム約950バイト)、セグメント文字列解析バイナリ(1フレーム248バイト)、52個のウェイトを固定オフセットに配置
順序制御シーケンス番号なし。古いフレームが新データを上書きする可能性ありシーケンス番号なし。古いフレームが新データを上書きする可能性ありシーケンス番号内蔵。遅延した古いフレームを自動破棄
プロトコル開発元VTube StudioiFacialMocapLAPLACE(アプリ・デスクトップ・プロトコルを一貫開発)

ゲイン倍率が大きいチャンネルでは、整数量子化による階段状の段差が目立つ場合があります。たとえばPersonaでは口角下げ信号に標準で5倍のゲインを適用するため、1%刻みの変化が増幅されて表情の段差として知覚されることがあります。

LAPLACE Persona Trackerはセッション間でのワンタップキャリブレーション保持に対応するほか、画面を暗くする省電力モードや、カメラ映像を表示しないワイヤーフレームプレビューを備えています。詳細はLAPLACE Persona Trackerを参照してください。

52種類の生データは、パラメータバインディングエディタ内で独立したARKit*入力としても利用可能です。Live2Dモデルでは、Personaによる平滑化済みの導出入力も、端末から受信した生のブレンドシェイプ値もバインドでき、両者を組み合わせることもできます。

ウェブカメラのフェイストラッキングは、カメラ映像から同等の頭部ポーズおよびブレンドシェイプ係数を導出します(tongueOutのみ非対応)。

ステータス

各ソースカードのステータスバッジと、各マスタースイッチ横の集約ステータスは、リアルタイムの接続・データ状態を表示します。

ステータス説明
offソース自身または該当チャンネルのマスタースイッチが無効
waiting…有効化されているが、1.5秒以上データが届いていない
tracking有効なフレームを受信しており、顔認識が正常に機能中
no faceフレームは継続受信しているが、端末側カメラが顔を検出できていない

個別ソースのステータスは各機器の接続状態を把握するために使用し、マスタースイッチ横の集約ステータスはチャンネル全体にデータが届いているかを確認するために使用します。

ウェブカメラソースも同様のステータス表示を用いますが、有効な検出タスク(顔・手・身体)のいずれかが検出に成功していればtrackingと表示されます。詳細はウェブカメラトラッキングを参照してください。フェイストラッキングおよびポーズトラッキングの集約インジケーターは、ネットワークソースのみを集計対象とします。

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

トラッキングデータはPersonaへ入力された後、順に以下の3段階の処理を経てモデルパラメータへ適用されます。

  1. 受信:受信ソースがプロトコルパケットを解析し、頭部回転、頭部平行移動位置、52種類のARKitブレンドシェイプを含むニュートラルなデータフレームに変換します。以降の2段階は、そのソースに割り当てられた各アバターに対して個別に実行されます。
  2. 導出:データフレームがVTube Studioの標準入力語彙、すなわちリガーが一般的に使用するパラメータ信号名(FaceAngleX、EyeOpenLeft、MouthSmile、Browsなど)へ変換されます。同時に、52種類の未加工ARKitチャンネルがARKit*プレフィックス付きでそのまま並行して提供され、ラッチ・キャリブレーション・ゲイン処理は適用されません。
  3. マッピング:アバターに入力ごとの入力のキャリブレーションが設定されている場合、まず生の入力値が本来のレンジへ再マッピングされます。その後、各パラメータバインディングが1つ以上の入力を重み付きで合算し、入力範囲の再マッピング、出力範囲の制限、応答曲線、パラメータごとの平滑化を経て、目的のCubismパラメータへ書き込みます。

頭部回転、傾き、開眼・まばたき、視線、眉の形状、頬のふくらみ、口の開口幅、口の形状、笑顔・への字口などが動的に駆動されます。モデルに実装されていないパラメータは自動的にスキップされ、該当フレームに含まれていないパラメータは前フレーム値で固定されることなくデフォルト状態へ滑らかに戻ります。

iPhone(ARKit)のフェイストラッキングでは、への字口とはっきりした口すぼめのどちらもMouthSmileを下げ、口の形状パラメータParamMouthFormを−1方向へ動かします。

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

適用対象Live2D

Live2Dモデルのルートディレクトリに.vtube.json設定ファイルが含まれている場合、Personaは内蔵デフォルト設定ではなく、そのモデル固有のパラメータマッピング、範囲制限、ゲイン、平滑化係数をそのまま適用します。左右の目のバインディング反転、開眼範囲の倍率変更、独自パラメータ名への変更などが施されているモデルであっても、Persona上でVTube Studioと完全に同一の挙動を示します。

.vtube.jsonが存在しないモデルには、実際のARKitモーションキャプチャ録画データに基づいて最適化されたPersona内蔵のマッピングテーブルが適用されます。

VBridgerパラメータ

適用対象Live2D

VBridgerは、ユーザーが独自の計算式を書ける数式エンジンです。各出力パラメータは、52種類のARKitシェイプに対する1〜3本の数式で構成されます。コミュニティで広く用いられる「標準」は、同ソフトに同梱されるVBridger_AdvancedARKit_V3.0プリセットです。このプリセットは、MouthPucker、MouthFunnel、MouthShrug、MouthPressLipOpen、6種類のBody*入力など、VTube Studioの標準入力リストにないパラメータを追加します。これらは実行時にVBridgerプラグインが注入します。

そのため、Personaはこれらの名称を独立した入力としては扱いません。.vtube.jsonからバインディングをインポートすると、各名称をVBridgerプリセットに定義された加重合算式へ展開します。

  • MouthPuckerは(mouthDimple_R + mouthDimple_L) × 2 − mouthPuckerに展開され、口をとがらせると負の値になります。
  • 6種類のBody*パラメータは、対応するFaceAngle*・FacePosition*と同じ式で展開されます。

展開後はバインディングエディタ上で通常の加重マルチ入力バインディングとして表示され、各重みを調整できます。

MouthOpenとJawOpenは独立した2つの入力です。MouthOpenは唇の開き具合、JawOpenは下顎の下がり具合を表し、VBridgerモデルで一般的なParamMouthOpenYとParamJawOpenの組み合わせに対応します。JawOpenの値はARKitJawOpenとまったく同じなので、バインディングでは両者を互換的に使えます。

モデルの位置移動

適用対象Live2D

カメラに対して身体を前後に動かすと、モデル内部のリグパラメータではなくアバター全体のステージ座標が移動します。頭部の水平・垂直位置に合わせて平行移動し、カメラへの接近・後退に合わせてアバターが自動拡大縮小します。この挙動はVTube Studioの内蔵動作(デフォルトの移動量や平滑化を含む)と同一であり、.vtube.json内のModelPositionMovementセクションでモデルごとに個別設定可能です。

VRMアバター

フェイストラッキングソースはVRMアバターも直接駆動できます。Cubismパラメータへの書き込みではなく、パイプラインの最終段階で表情モーフとボーンが制御を受け持つ点のみが異なります。

全52種類のARKitブレンドシェイプを備えたモデル(パーフェクトシンク/perfect sync)は入力の導出をスキップし、スマートフォンからの生のARKitウェイトで1:1に駆動されるため、繊細な表情のニュアンスが保たれます。表情名やモーフターゲット名は大文字小文字を区別せずに照合されるため、命名規則の違いを吸収できます。一部またはすべてのARKitシェイプがVRM表情プリセットではなくメッシュのモーフターゲットにのみ存在する場合でも、モデル全体で52種類すべてが揃っていれば、読み込み時に不足しているVRM表情が自動登録されます。

一部だけの対応はパーフェクトシンクとみなされません。52種類のうち51種類しかないモデルは、下記の汎用マッピングにフォールバックします。モデル情報パネルのパーフェクトシンク欄に一致した個数が表示されます。

パーフェクトシンク非対応モデルでは、導出された信号がモデルの標準プリセット表情およびヒューマノイドボーンへマッピングされます。

  • 口:開口、すぼめ、とがらせ、笑顔が複合的にVRM母音リップシンク表情(aa、ih、ou、oh)へマッピングされ、口の形状が不自然に干渉しないよう相互排他制約が働きます。
  • 目:独立した左右個別のまばたき表情が存在する場合はそれを優先し、分離表情がない場合は統合まばたき表情へフォールバックします。
  • 頭部:ヨー(Yaw)、ピッチ(Pitch)、ロール(Roll)の回転成分の一部が背骨・胸部ボーンへ自然に配分され、上半身全体の追従回転が実現されます。
  • 視線:VRM標準のlook-atシステムを介して視線方向が制御され、ボーン駆動型と表情モーフ駆動型の両方に対応します。

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

トラッキングが有効な間はモーションキャプチャデータが優先され、アイドル動作中の自動まばたき処理は自動的に一時停止します。トラッキングをオフにすると、直ちに通常のアイドル動作へ復帰します。

トラッキングが不意に途切れたときのアバターの挙動は、各アバターのアイドルパネルにあるトラッキングロス時で設定します。

  • 最後のポーズを保持(デフォルト):最後に受信した有効なトラッキングフレームの姿勢でアバターを固定します。
  • アイドルに戻る:アイドルループアニメーションへ滑らかに遷移します。

いずれの場合も目の制御は解放され、トラッキングが戻るまで自動まばたきが行われます。Live2Dモデルでは代替モーションも指定できます。詳細はトラッキングロス時を参照してください。

キャリブレーション不要

Personaのモバイルフェイストラッキングパイプラインでは、ニュートラルポーズのキャリブレーションは不要です。これはVTube StudioのARKitモードと同様の設計思想であり、端末が報告する頭部の絶対姿勢クォータニオンを直接信頼します。スマートフォンは自身の正面、おおよそ目の高さに設置してください。設置位置が低すぎると、アバターがあごを常に上げた仰角姿勢になる場合があります。

上記の規則はモバイル端末ソース向けであり、コンピュータ接続のウェブカメラを使用する場合はPersona画面内でローカルキャリブレーションを実行可能です。また、パラメータ割り当てエディターの入力のキャリブレーションから、個々の入力の可動域を自身の表情や動きに合わせて調整することもできます。

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

ウェブカメラトラッキングはコンピュータ接続のカメラを用いて顔・手・身体のポーズをトラッキングする機能であり、独立したウェブカメラトラッキングを有効化マスタースイッチで管理されます。アバターの顔・身体・手はそれぞれ異なるトラッキングソースから割り当て可能なため、スマートフォンの顔トラッキングや専用モーキャプスーツにウェブカメラによる手指トラッキングを追加連携できます。詳細はウェブカメラトラッキングを参照してください。

リップシンク

リップシンクはマイク音声入力によってアバターの口の動きを駆動する機能であり、マイクごとに音声調整プロファイルを保存できます。各アバター詳細のマイクによるリップシンク設定から、オフ、常に、フェイストラッキングが利用できないときを選択できます。詳細はリップシンクを参照してください。

コントローラー

標準的なゲームコントローラー(Xbox、PlayStation、Nintendo Switch Proコントローラーなど)を接続し、スティックやボタンをLive2Dのパラメータの割り当て、ステージ移動、ショートカット起動、VRMボーンや表情の制御に割り当てることができます。複数のプロファイルや同時押しにも対応しています。詳細はコントローラーを参照してください。

トラブルシューティング

ステータスが「waiting…」のまま

  • スマートフォンとコンピュータが同一のローカルネットワークに接続され、ルーター側でAPアイソレーションや機器間通信制限が無効になっていることを確認してください(ゲストWi-Fiや公衆Wi-Fiでは端末間通信が遮断される傾向があります)。
  • OSのファイアウォール設定で、PersonaへのUDP受信が許可されていることを確認してください。
  • VPN接続をすべて切断してください。仮想ネットワークアダプターがブロードキャストパケットを捕捉・破棄してしまうケースが多発します。Personaは物理インターフェースごとにサブネット宛てブロードキャストを送信していますが、一部のVPNルーティング設定では通信が遮断されます。

ブロードキャストがネットワークを通過できない場合は、Persona起動前に環境変数でスマートフォンのIPアドレスを直接指定してください。

環境変数説明
PERSONA_VTS_PHONE_IP通常のサブネットブロードキャストに加え、この特定IPアドレスへVTube Studio探索パケットを追加送信
PERSONA_IFM_PHONE_IPiFacialMocap / Facemotion3dにおいてブロードキャスト探索を完全に省略し、この指定IPアドレスへ直接通信確立

「ポートを使用できません」という通知が表示される

ポートが他のアプリに使用されているか、システムに予約されています。WindowsはHyper-V、WSL2、Docker向けにポートの一部を予約しており、netsh interface ipv4 show excludedportrange protocol=udpで一覧を確認できます。該当ソースカードのポート欄でその範囲外のポートを指定し、トラッキングアプリにも同じポートを設定してください。同じ種類のソースで使用できないポートは1件の通知にまとめられ、ポートが再び使用可能になるか、有効なソースがそのポートを使わなくなると通知は自動的に取り下げられます。

モデルは動くが、反応する部位が実際と異なる

モデルディレクトリ内に.vtube.json設定ファイルが含まれているか確認してください。Personaはファイル内のマッピング規則を優先適用します。同モデルをVTube Studioで読み込み、該当パラメータの動作を比較検証してください。

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

メイン画面でモデルの情報パネルを開き、認識されているパラメータ総数を確認してください。非標準のパラメータ名を使用しているモデルや、旧Cubism 2規則のモデルでは、システムが導出した標準入力と合致するパラメータが存在しない場合があります。

モデルがまったく動かないが、ステータスは「tracking」と表示される

ソースカードのアバターを割り当てリストを開き、そのアバターにチェックが入っているか確認してください。データを受信していても、モデルをソースへ明示的に割り当てない限り駆動されません。1体のアバターに割り当て可能なソースはチャンネルごとに1つのみであるため、他のソースへ重複割り当てされていないかも確認してください。

2台のスマートフォンを接続しているのに、同じアバターが動く

両方のソースカードでトラッカーIPが空欄の場合、先に到達したパケットが空いているソースへ自動的に受信されます。各ソースカードに対応するスマートフォンのローカルIPアドレスを入力し、対象アバターへ正しくデータがルーティングされるようにしてください。

最終更新日:2026年11月3日

Tech otakus destroy the world