「トラッキング → コントローラー」で入力を有効にし、プロファイルを管理します。アバターごとの移動は、選択したアバターの「トラッキング」で設定します。
コントローラー
トラッキングパネル下部のコントローラーセクションでは、ゲームパッドやコントローラーを管理します。コントローラー入力はLive2DおよびVRMのパラメータバインディング、インスタンスごとのステージ移動、オートメーションやアバターショートカット用の複数ボタン同時押しに対応しています。コントローラー入力はトラッキングソースやアバター割り当てから独立して動作し、カメラの直接操作には非対応です。
コントローラーの接続
コントローラーを有効化をオンにしてコントローラー機器を接続します。DualSenseおよびDualSense EdgeコントローラーはWebHID経由で接続され、ウィンドウのフォーカスやボタンの事前入力なしで自動認識され、アプリ再起動後も自動で再接続されます。その他のコントローラーはブラウザのGamepad API規格に従います:ステージをクリックしてウィンドウをフォーカスし、コントローラー上の任意のボタンを押すことで一覧に表示されます。
接続中のコントローラーには、現在接続されているデバイスの総数(プロファイル未割り当ての機器を含む)が表示されます。接続中のプロファイルカードが先頭に並び、残りは折りたたまれた保存済みプロファイルリストに保管されます。カードを選択しても右側のリアルタイムモニター表示が切り替わるのみで、既存のバインディングは変更されません。
| コントロール | 説明 |
|---|---|
| 名前 | 識別しやすいプロファイル名。Enterキーまたはフォーカスを外すと保存され、空欄にするとデフォルトの番号名に復元 |
| スティックのデッドゾーン | 選択中プロファイルのアナログスティック両方に適用(デフォルト15%)。ドリフト状態に応じてコントローラーごとに微調整可能 |
| コントローラーを割り当て | 保存済みプロファイルを選択してこの項目をクリックし、実機コントローラーのボタンを押すことで物理機器を対象プロファイルへ紐付け |
| プロファイルを削除 | 保存済みプロファイル内で利用可能。先に対象のコントローラーを切断してください。バインディングやショートカットは保持されますが、その番号は新規機器へ再割り当てされなくなります |
アプリ設定にはプロファイル番号、機器が報告する製品名、ハードウェア固有識別子のハッシュ値が保存されます(識別子の原文は保存されません)。ハードウェア固有識別子を持つ機器は同一製品であっても、接続順序やUSBケーブルを変更した後にそれぞれのバインディングが保持されます。コントローラーを取り外しても入力信号が解放されるのみで、プロファイルやバインディングは削除されません。
ブラウザのGamepad APIの仕様上の制約により、シリアル番号は取得できません。そのためハードウェア固有識別子を提供できないコントローラーの割り当ては現在の接続セッション中のみ有効であり、再接続時に再度割り当てを確認する必要があります。Personaは製品名、接続番号、USBポート番号を識別子として流用しない安全方針を徹底しています。
Xbox、その他のPlayStation、Nintendo Switch ProコントローラーはChromiumのstandard標準マッピングに従い、表面の印字ではなく物理ボタン配置に基づいて認識されます。認識できない非標準のブラウザレイアウトは非対応として表示されます。ジャイロセンサー、タッチパッド、カスタムボタンリマップ、複数コントローラーの1台への統合などは現バージョンでは対応していません。
パラメータを動かす
モデルのパラメータエディタでは、保存済みまたはバインド済みのコントローラープロファイルごとに1組の入力グループが生成されます。各グループは19個の独立した操作チャンネルを持ちます:左スティックX/Y、右スティックX/Y、スティック押し込み(L3/R3)、十字キー(D-pad)、4つのアクションボタン(A/B/X/Y)、ショルダーボタン(L1/R1)、トリガー(L2/R2)、Optionsボタン、Homeボタン。スティックと十字キーの範囲は−1〜1(Y軸上方向が正)、ボタンとトリガーは0〜1です。各バインディングルールは読み込む入力グループを自由に選択できるため、異なるコントローラーで別々のアバターや異なるパラメータを個別に制御できます。
プロファイル1はVTS標準の命名規則(ControllerStickLeftX、ControllerCrossなど)を踏襲しており、既存の.vtube.jsonマッピングをそのまま読み込めます。プロファイル2以降はControllerの後に番号を挿入します(Controller2StickLeftX、Controller3Cross、Controller12TriggerRightなど)。この番号付き命名体系はPersonaの独自拡張であり、プラグインAPIの入力ターゲットも同じ命名体系を採用しています。
コントローラー入力は、フェイストラッキングのスイッチやソース割り当て状態とは無関係に、読み込み済み各モデル自身のバインディングロジックへ直接作用します。コントローラー入力と顔入力は、範囲補正・応答曲線・平滑化処理の前に加重合算されます。顔トラッキングが途切れている間も保持された顔入力とアクティブなコントローラー入力は並行して応答します。パラメータエディタ内で入力スライダーを手動ドラッグした場合は、物理コントローラー入力よりも手動設定値が優先されます。コントローラーバインディングはフレームレート非依存の指数応答フィルターを採用しており、平滑化0で即時追従、100で時定数350ミリ秒となります。
1台のコントローラーを取り外すと該当グループの入力のみが解放され、コントローラーを有効化スイッチをオフにすると全制御チャンネルが解放されます。切断後、他のソースから駆動されていないLive2Dパラメータの出力値はCubismの初期デフォルト値へ滑らかに復帰します。
VRMのターゲット
VRMアバターのパラメータエディタでは、Cubismパラメータとは異なる、3Dアバター専用の仮想バインディングターゲット群が生成されます:
| ターゲット | 範囲 | 説明 |
|---|---|---|
HeadYaw、HeadPitch、HeadRoll | −30°〜30° | 正規化された頭部ボーンに加算される角度オフセット |
BodyYaw、BodyPitch、BodyRoll | −15°〜15° | 利用可能な背骨および胸部ボーンへ動的配分される回転オフセット |
GazeYaw、GazePitch | −90°〜90° | 現在の視線角度に加算されるオフセット |
Expression:<名前> | 0〜1 | モデル標準またはカスタム表情モーフへのウェイト |
角度値はフェイストラッキングの座標系規則に従い、VRM 0.xと1.0におけるピッチ・ロール軸の違いはレンダラー内部で吸収されます。表情名はモデル内部で定義された文字列と厳密に一致照合されます。ボーンおよび視線オフセットはベースアニメーション、ポーズトラッキング、フェイストラッキングの上に加算レイヤーとして重なり、表情バインディングは対象ウェイトのみを排他的に制御します。各フレームの描画処理末尾でドライバが基底状態を復元するため、オフセットが無制限に累積することはなく、手動調整済みの表情ウェイトが上書きされることもありません。コントローラー入力を離すかルールを削除すると、ターゲット値は下層レイヤーの現在状態へ滑らかに戻り、他のコントローラーやトラッキングソースが操作する部位には干渉しません。
バインディング規則はモデル自身に帰属し、モデル同ディレクトリのtracking sidecarファイル内に保存されるため、同一モデルの複数インスタンスで共有されます。同一モデルの別コピーを独立して移動させたい場合は、後述のインスタンスごとのステージ移動機能を使用してください。
外部公開のパラメータ注入APIは現在Live2D専用です。上記のVRM仮想バインディングターゲットはパラメータバインディングエディタ内にのみ存在します。
ステージ移動
アバター自身のトラッキング設定セクションでコントローラーで移動を有効化し、保存済みプロファイルを指定します。メインパネルのコントローラーを有効化マスタースイッチもオンにしておく必要があります。ステージ移動機能はオプションであり、デフォルトでは無効です。通常のパラメータバインディングやショートカットはこの機能に依存しません。
| コントロール | Live2D | VRM |
|---|---|---|
| 左スティック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、120 fpsのいずれのフレームレートでも移動速度は一定に保たれます。スティックを中央に戻すと、アバターは滑らかに減速して新しい位置に停止します。コントローラーの取り外し、無効化、再割り当てを行うと蓄積速度は直ちにクリアされ、再接続時に以前の慣性が引き継がれることはありません。非表示状態のアバターは移動しません。マウスドラッグによる直接配置、自動化のモデル位置アクションやプラグインによる位置補間移動、テキスト入力中、ショートカット記録中、コントローラー割り当て中は、ステージ移動が自動的に一時停止します。
ステージ移動によって更新されたインスタンスのワールド配置座標は、シーンファイルと一緒に保存されます。
移動中に歩く
VRMモデル専用機能です。設定で移動中に歩くをオンにし、アニメーションインベントリから歩行アニメーションクリップを選択します。スイッチを先にオンにしておくことも可能ですが、クリップを指定するまでは動作しません。インポートされたVRMA、Mixamo FBX、MMD VMDアニメーションは、アイドルクリップと同じ登録済みアセット群を共有します。
アバターが地上を移動している間は歩行クリップがループ再生され、移動が停止すると通常のアイドルアニメーションへ滑らかにブレンドして戻ります。歩行周期の速度は再生速度1.0倍時におけるクリップの公称移動速度(メートル/秒)を表します。実行時の実際の再生レートは、計測された地面移動速度をこの公称速度で割り、さらにアバターのスケールで割って動的に算出されるため、移動速度の変更やモデルサイズの変更に応じて歩調が自動適応されます。シーン配置座標の絶対性を保つため、歩行クリップ内の腰(Hips)のX/Z軸移動は自動除去され、垂直方向の上下動のみが維持されます。歩行アニメーションレイヤーには頭部回転・視線・表情のトラックが含まれないため、コントローラーやフェイストラッキングによるポーズはそのまま保持されます。単発アニメーション再生が優先され、全身ポーズトラッキング(VMC、mocopi、ウェブカメラ)が腰や下肢ボーンを制御している間は歩行が自動抑制されます。手のみを駆動するVMCとは併用可能です。
移動方向を向くオプションは、歩行クリップの有無にかかわらず、回転速度に従ってアバターを進行方向へ滑らかに向けます(右スティックによる能動的な旋回操作が優先)。歩行判定は水平平面上の実際の移動量(減速フェーズを含む)に基づいて行われるため、高さ方向の変化のみでは歩行は開始されません。本システムは直接移動の上に重ねられたプロシージャルアニメーション演出であり、経路探索、コリジョン判定、地形追従などは含まれません。
コントローラーのショートカット
ショートカットレコーダーは、オートメーションのキーボードまたはコントローラートリガーやアバターショートカットにおいて、同一コントローラー上の最大3ボタンまでの同時押しを受け付けます(スティックの限界倒し、十字キー、トリガーを含む)。記録されたショートカットは所属プロファイルと厳密に紐付けられるため、コントローラー1とコントローラー2の同じ物理ボタンに別々のアクションを割り当て可能です。記録中に誤って触れた他コントローラーのボタンは除外されます。ショートカットは押下瞬間に1度だけ発火し、長押しによる連射リピートは発生しません。バックグラウンドで動作はキーボード修飾キーなしでコントローラーショートカットにも適用されます。記録中やテキスト入力中はショートカット発火が抑止されてイベントが消費されるため、入力フィールドを外れたりレコーダーを閉じたりした際に押下中のボタンが遅れて暴発することはありません。
コントローラー1のマクロはVTS標準のController*トークンを用い、コントローラー2以降はPersona拡張の番号付きトークンを用います。コントローラーショートカットはOSのグローバルホットキーには登録されず、キーボードとコントローラーの混在同時押しや複数コントローラーをまたぐ同時押しは非対応です。同一の組み合わせが重複設定された場合は、オートメーションがアバターショートカットより優先されます。
.persona.jsonファイルはすべてのコントローラーショートカットを標準のトリガー文字列形式で保存します。.vtube.jsonを使用するモデルの場合、番号付きコントローラーショートカットはホットキー項目のPersonaControllerTriggers拡張フィールド内に保存され、VTS側で未知の列挙値エラーが発生しないようVTSネイティブのトリガー枠は空にされます。Personaは読み込み時にこの拡張フィールドを優先解釈します。該当ショートカットをキーボードやコントローラー1のボタンへ再割り当てするか、ショートカットを消去すると、拡張フィールドは自動的に削除されます。
VTS自身はこれらの番号付きコントローラーショートカットを実行できず、VTS内でモデル設定ファイルを再保存するとカスタム拡張フィールドが消失する場合があります。
最終更新日:2026年10月11日