00:00 / 00:00

Persona

攝影機追蹤

攝影機來源用連接在執行 Persona 的電腦上的攝影機追蹤你的臉部、手部與身體。它在這台電腦上執行 Google 的 MediaPipe,不需要手機或動作追蹤應用程式,還能和網路來源組合使用——臉部來自手機、身體來自 mocopi、手指來自攝影機。一台攝影機可以同時驅動多個 Live2D 與 VRM 形象

設定

  1. 追蹤攝影機追蹤區塊裡開啟啟用攝影機追蹤。第一次開啟時會建立攝影機來源,也就是一張名為 MediaPipe 網路攝影機的卡片
  2. 點開卡片進入設定,選好相機,再決定要執行哪些任務
  3. 用卡片上的臉部身體手部按鈕指派形象
  4. 面向前方、保持自然表情並站直,然後點卡片下方的校正

在 macOS 上,攝影機第一次啟動時系統會詢問攝影機權限;如果被拒絕了,請見 疑難排解

來源設定

攝影機來源只有一個,啟用攝影機追蹤就是它的開關——卡片上沒有單獨的開關。這個開關獨立於啟用臉部追蹤啟用姿勢追蹤,後兩者只控制網路來源。關閉它會保留任務選擇與形象指派,重新開啟後照原樣恢復,不會變動其他來源的指派

設定作用
相機使用哪台攝影機。預設攝影機跟隨系統預設裝置;已中斷連線的攝影機顯示為無法使用的攝影機
臉部追蹤表情與頭部動作。預設開啟
手部追蹤Live2D 的手部輸入,以及 VRM 形象的手臂與手指。預設開啟
身體追蹤VRM 形象的軀幹與腿部。預設關閉
鏡像追蹤預設開啟:形象像鏡子裡的你一樣動,你的右手驅動它的左手。關閉後左右不再對調
處理方式CPU(預設)或 GPU。GPU 可以提高追蹤影格率,但會與形象算繪共用顯示卡
〈某某〉的手部動作手部由攝影機追蹤的每個 VRM 形象各一列:手臂與手指(預設)或僅手指,見 VRM

只有開啟的任務會被載入與執行。更換相機、開關任務或更改處理方式都會讓攝影機重新啟動

Web 控制台外掛 API 編輯的是同一個來源、同樣的任務與指派。攝影機清單、校正與預覽只在桌面端

指派形象

網路來源的卡片上只有一個指派虛擬形象按鈕,攝影機的卡片上則有三個:臉部身體手部。它們打開的是同樣的多選框,其中身體只列出 VRM 形象。每個形象的臉部、身體與手部各自只能指派一個來源,因此可以分別使用攝影機或其他裝置進行追蹤

所以同一個形象可以臉部來自 LAPLACE Persona Tracker、身體來自 mocopi、手指來自攝影機。勾選一個已由其他來源在同一通道追蹤的形象時,會和其他來源一樣開啟重新分配追蹤對話框。關閉某項任務後,指派給它的形象在這一通道上不再被追蹤;Persona 不會自動改用其他來源

和其他來源一樣,一台攝影機可以同時驅動多個形象,它們收到的是同一份追蹤資料

校正

校正在卡片下方的狀態列上,已有校正後顯示為重新校正。只有攝影機看到臉部、手或身體時它才可用。預覽下方的提示給出了姿勢:保持自然表情,面向前方站直,然後校正

  • 臉部——這一刻的頭部姿態與表情成為中性:頭部角度與前後傾都以它為基準,表情則從你放鬆時的臉算起。校正之前,攝影機看到的第一張臉會被當作中性
  • 手部——在 VRM 上,校正後下一個只有一隻手入鏡的時刻,會記下你的手離攝影機多遠、放在多高,並據此縮放手臂的伸展範圍
  • 身體——你面朝的方向與站的位置成為轉身與移動的原點。彎著的腿不會被當成靜止姿勢

重新啟動攝影機或更改鏡像追蹤會捨棄校正

預覽與影格率

卡片下方的攝影機追蹤預覽把 MediaPipe 找到的特徵點畫成線條——臉部的眼睛、嘴與輪廓,還有手與身體——開啟鏡像追蹤時以鏡像顯示。它從不顯示攝影機畫面,兩次結果之間保持最新的特徵點,不會在兩次更新之間插值。上方的狀態列顯示來源的狀態,追蹤期間還會顯示追蹤影格率,例如 tracking · 30 FPS

追蹤影格率統計的是每秒完成的更新次數,和顯示 FPS 計數器顯示的舞台影格率是兩回事。Persona 向攝影機要求最高 60 fps;實際能達到多少,取決於攝影機真正提供的影格率、開啟了幾項任務——每一影格上它們依序執行——以及處理方式。再快的 GPU 也不能讓畫面比攝影機提供得更快,每多開一項任務都可能降低影格率

狀態

卡片以及啟用攝影機追蹤旁邊的狀態,使用和其他來源相同的 狀態,只是以攝影機偵測到的內容為準:

狀態含義
off啟用攝影機追蹤已關閉,或者所有任務都關著
waiting…攝影機正在啟動,或者在臉部追蹤關閉時沒有偵測到手或身體
tracking某項開啟的任務偵測到了臉部、手或身體——所以畫面裡沒有臉也可能顯示 tracking
no face臉部追蹤已開啟但看不到臉,也沒有偵測到手或身體

預覽上方的狀態列還會在攝影機與追蹤器載入時顯示 starting…,失敗時顯示 unavailable,並附上說明與重試按鈕。臉部追蹤姿勢追蹤區塊的狀態只統計網路來源

各項任務驅動什麼

Live2D

  • 臉部走和手機相同的 映射FaceAngleXMouthOpen 等推導出的輸入,以及 ARKit* 輸入,經由模型的參數繫結生效
  • 手部提供 28 個 手部輸入,同樣經由模型的繫結到達參數
  • 身體在 Live2D 上沒有可驅動的對象:Live2D 沒有人形骨骼,Persona 也不會憑空產生軀幹或四肢參數

VRM

  • 臉部像手機一樣驅動表情、視線與頭部,perfect sync 也照常生效
  • 手部手臂與手指時驅動肩膀、手臂、手腕與手指:你的手腕在畫面中的位置成為手臂的目標點,再依這個形象自己的手臂長度求解。僅手指只驅動手指骨骼
  • 身體驅動軀幹與腿部,並依估算移動形象。左右與上下跟隨你在畫面中的位置;前後依軀幹在畫面中顯得多大來判斷,限制在 ±0.5 m 以內。這不屬於絕對位置追蹤,也不會把腳固定在地面上

身體追蹤不會移動手臂,手臂動作來自手部追蹤。臉部來源正在驅動形象時,頭部與頸部仍由臉部來源控制

與 VMC 或 mocopi 一起使用

VMCmocopi 驅動形象的身體時,肩膀與手肘仍由該來源控制,攝影機的手部只在其上疊加手腕與手指的旋轉。選僅手指時,手腕也由身體來源控制

手部輸入

手部追蹤為 Live2D 的 參數繫結 提供下列輸入,在編輯器裡歸在手部一組。名稱沿用 VTube Studio 的手部追蹤,並加入 HandLeftAngleYHandRightAngleY;每個 HandLeft… 輸入都有對應的 HandRight…

輸入範圍含義
HandLeftFound0 – 1偵測到這隻手時為 1
HandLeftPositionXHandLeftPositionYHandLeftPositionZ−10 – 10手腕位置:X 向外、Y 向上、Z 朝向攝影機,Z 由手掌大小估算
HandLeftAngleXHandLeftAngleZ−180° – 180°手腕旋轉
HandLeftAngleY−90° – 90°手腕旋轉
HandLeftOpen0 – 1五根手指的平均值
HandLeftFinger_1_ThumbHandLeftFinger_5_Pinky0 – 1每根手指,伸直時為 1
BothHandsFound0 – 1兩隻手都偵測到時為 1
HandDistance0 – 10兩個手腕之間的距離

沒有自帶繫結的模型會自動繫結與手部輸入同名的 Cubism 參數,並使用參數自己的範圍,所以按 ±1 製作的參數不會被當成 ±10 來驅動

限制

  • MediaPipe 的臉部 blendshape 沿用 ARKit 的名稱,但沒有舌頭,tongueOut 永遠不會動——攝影機畫面並不等同於 iPhone 的 TrueDepth 相機
  • 一切都從單一畫面估算:手的遠近看手掌大小,身體的前後看軀幹大小。它們是估計值,不是測得的位置
  • 手部被遮擋、與另一隻手重疊或離開畫面時,會停止追蹤該隻手。身體追蹤需要雙肩與雙髖都在畫面內
  • 在 VRM 上,暫時遺失的手或身體會保持 200 毫秒,然後在約 0.4 秒內融回底下的姿勢。在 Live2D 上,遺失的手 Found 輸入歸零,其他輸入保持最後的值,好讓模型自帶的淡出播完

隱私權

追蹤完全在這台電腦上執行,MediaPipe 的模型內建在應用程式裡,啟動時不需要額外下載模型。攝影機畫面不會離開 Persona——連控制視窗裡的預覽收到的也只有特徵點。MediaPipe 函式庫本來會向 Google 回報使用統計,Persona 攔截了這個請求。儲存了什麼、誰能讀取,見 隱私與安全

疑難排解

「攝影機存取遭拒」

在系統設定中允許 Persona 使用攝影機,然後重新啟動 Persona。macOS 上的位置是系統設定 → 隱私權與安全性 → 相機,變更後的權限要等 Persona 重新啟動後才生效

「攝影機無法使用」

攝影機已中斷連線,或者正被其他應用程式佔用。換一台相機,或點重試

「無法啟動攝影機追蹤」

追蹤器沒能載入。點重試重新載入

最後更新於 2026年9月19日

Tech otakus destroy the world