00:00 / 00:00

Persona

VRM 虛擬形象

VRM 是一種 3D 角色格式,由 3D 舞台渲染;使用預設引擎時,Live2D 也走這條管線。開啟 使用舊版 WebGL 引擎 後,Live2D 會回到單獨的 2D 畫布,在 3D 舞台之外繪製

3D 舞台跑在 WebGPU 上,在沒有 WebGPU 的機器上自動改用 WebGL,並且執行於背景執行緒中,因此再重的場景也卡不死介面

VRM 0.x 與 VRM 1.0 模型都能載入,包括兩者各異的 look-at 與表情慣例,所以不論出自哪個年代的綁定,表現都如作者所願。.vrm.glb 走的是和 Live2D 模型同一套 開啟模型… 流程

內建虛擬形象

應用程式內建六個 VRM 虛擬形象:

形象規格授權條款
Sendagaya ShinoVRM 0.xCC0
ViviVRM 0.xCC0
Seed-sanVRM 1.0VRM Public License 1.0
RAYNOS-chanVRM 0.xSony Character EULA
Sporty RAYNOS-chanVRM 0.xSony Character EULA
mini RAYNOS-chanVRM 0.xSony Character EULA

Seed-san 要求必須署名——Seed-san by VirtualCast, Inc.——Persona 會把它連同其他第三方聲明一起顯示在 關於對話方塊 裡。模型自己的授權條款出現在資訊區塊的授權條款一列,作者要求署名時會被標示出來

相機

Live2D 模型是一塊可以拖曳和縮放的平面畫布,而 VRM 坐落在一個帶軌道相機的 3D 場景裡:

手勢作用
拖曳環繞虛擬形象旋轉
Alt / + 拖曳平移相機目標點
滾輪推近或拉遠

移動帶緩動,慣性手感和 Live2D 舞台一致;仰角在抵達兩極前就停住,相機因此永遠不會翻過去。重設相機回到預設取景,這個取景由虛擬形象自己的包圍盒推算而來,視角則把鏡頭設在 10° 到 90° 之間

相機屬於 場景 而不屬於模型,所以一個場景裡的每個 VRM 共用同一台相機

擺放

虛擬形象本身的擺放獨立於相機,以世界空間的公尺為單位,並帶有移動、旋轉與縮放的舞台控制點:

X · Y · Z · 縮放 · 俯仰 · 轉向 · 翻滾

縮放範圍是 0.05× 到 10×。彈簧骨骼物理會隨模型一起縮放,所以縮小或放大過的虛擬形象,頭髮依然動得正確

待機行為

剛載入好的 VRM 站成一個 T-pose。Persona 會套上一套待機,讓虛擬形象不用你做任何事就顯得活著:

  • 待機動畫——循環播放的身體動畫,逐模型選擇
  • 眨眼——每 2–6 秒隨機一次
  • 呼吸——胸腔與脊椎的緩慢起伏
  • 視線跟隨游標——眼睛瞄準作業系統游標,頭部帶著自然的遲滯轉過去一部分,和 Live2D 共用同一個 視線跟隨游標 開關
  • 彈簧骨骼——頭髮與衣物的物理,直接來自模型自己的彈簧骨骼設定

待機動畫位於選取模型的追蹤區塊,旁邊是選擇動畫…。它會開啟 素材庫 並收窄到動畫,那裡放著八段專門製作的待機循環:

站立 · 背手 · 叉腰 · 抱臂 · 倚靠 · 說話 · 坐姿 · 舞蹈

那七段 動作片段 同樣可以當待機用,你自己加入的任何片段也可以。只有這八段循環是無縫的——其餘的每轉一圈都看得出重新開始

因為這個設定是逐模型而不是逐場景的,同一個場景裡的兩個虛擬形象可以各擺各的姿勢

動作片段

Persona 內建了七段來自 pixiv VRoid Project 的 VRM Animation(.vrma)片段,在任何已載入的 VRM 上都能播——和 Live2D 動作不同,它們不綁定到某個模型:

展示全身 · 打招呼 · 比耶 · 射擊 · 轉圈 · 模特姿勢 · 深蹲

每段片段都是一次性的:它在待機之上淡入,短暫保持最後一個影格,然後緩和地回到待機,而不是硬切回去。眨眼與視線跟隨游標會在正在播放的片段之上繼續運作。片段出現在動作區塊,正是 Live2D 動作組所在的位置

它們同時也是 素材庫動畫下的列,和你自己加入的任何片段並列,點擊其中一列就會在已載入的 VRM 上播放它作為預覽

你自己的片段

動畫類別收兩種格式:.vrma,以及 Mixamo 的 .fbx。Mixamo 片段在載入時重定向到 VRM 的人形骨架上,此後和一段 .vrma 沒有區別——當待機用,當一次性動作用,或者在素材庫裡點一下預覽

整具骨架裡只有髖部會位移,而且位移量會按目標模型自己的比例換算,所以一段會走動的片段換到別的體型上,步幅依然合身。不含 Mixamo 骨架的 .fbx 根本進不了素材庫

表情

表情區塊列出模型的表情詞彙——它的 1.0 預設名稱與自訂名稱,0.x 的預設名稱會被換算成 1.0 的對應名稱。按一下套用,再按一下移除,和 Live2D 的表情 一樣。臉部追蹤 驅動的是同一批表情

已經生效的表情,每個下面都跟著一條權重滑桿,1% 到 100%,可以只用上半張臉的力道。清單裡只列目前生效的那幾個,所以它不會變成模型全部形狀的一面牆。滑桿到不了 0——那等於關掉這個表情,那是按鈕的工作

把全部 52 個 ARKit blendshape 都做成表情的模型具備 perfect sync 能力,它由手機的原始 ARKit 數值一比一驅動,而不經過 Persona 推導出的訊號。資訊區塊的完美同步一列會報出模型在這 52 個裡佔了幾個

區塊頂部的記住表情狀態預設開啟:你套用的表情連同它們的權重會隨手儲存,切回該模型或重新啟動應用程式時恢復。VRM 沒有 .vtube.json,所以寫入的是模型檔案旁的 <model>.persona.json 附屬檔案

服裝

模型帶 LAPLACE_outfit 擴充時,表情下面會多出一組服裝。這是 VRM 規範留下的一格空白:VRM 表情只能驅動變形目標、材質顏色與貼圖變換,動不了網格的顯隱,所以從靠隱藏網格來換裝的平台(最典型的是 VRChat)轉過來的形象,會帶著一整櫃衣服卻卡在一套裝扮上。這個擴充給這些部件起了名字,Persona 把每一條都變成一個真正的表情——按鈕、權重滑桿、附屬檔案儲存與 外掛 API 因此一律照單全收,不需要另起一套介面

臉孔與服裝分成兩組來放:「外套 脫下」夾在 blinkLefthappy 中間會被當成一張臉,而按下去做的完全是另一回事

MToon 材質

多數 VRM 虛擬形象使用 MToon,也就是這套規範自帶的卡通著色器。MToon 區塊在作者烘焙好的基礎之上做微調,逐模型實例生效:

控制項範圍作用
陰影0 – 1陰影色顯現得有多強
陰影偏移−1 – 1移動亮部與暗部的分界
陰影硬度−1 – 1這條分界有多硬
GI 均衡−1 – 1環境光把明暗壓平到什麼程度
法線強度0 – 2縮放法線貼圖;0 會把表面細節完全抹平
邊緣光0 – 2邊緣光的強度
邊緣光偏移−1 – 1這道邊緣從輪廓往內裹多深
邊緣光菲涅耳強度0 – 4越高,這道邊緣越貼著輪廓收緊
邊緣光受光比例−1 – 10 是邊緣光與材質捕捉都畫成平的,1 是讓它們跟著場景燈光走
材質捕捉0 – 4縮放材質捕捉——那層球面疊加的反射。作者沒做材質捕捉的材質上不會有變化
描邊寬度0 – 2縮放作者設定的描邊
描邊受光比例−1 – 10 是描邊保持自己的顏色,1 是讓燈光替它染色
自發光0 – 4自發光的強度,留出餘量把局部頂過 泛光 閾值
UV 動畫0 – 4縮放 UV 的捲動與旋轉速度;0 會把一張動起來的貼圖凍住

重設材質把每個滑桿都退回中性值——每個倍率回到 1,每個偏移回到 0,模型就完全按作者做的樣子渲染

身體追蹤

VRM 帶有人形骨骼,所以它還能透過 VMC 接收全身動作追蹤的驅動——VSeeFace、Virtual Motion Capture、mocopi 以及其他傳送端。Live2D 模型沒有這樣的骨架,因此這個區塊只對 VRM 出現

VRM 上的快速鍵

針對表情與動作的 快速鍵 動作對 VRM 一樣有效:表情按名稱綁定,動作片段按它自己的檔案綁定。替換模型則不挑格式——一個快速鍵可以把某個圖層從 Live2D 模型換成 VRM,也能換回來

模型資訊

展開資訊即可看到載入進來的到底是什麼,用的是 VRM 的詞彙:

含義
來源模型是內建的,還是你自己開啟的
檔案載入的那個 .vrm,旁邊帶在資料夾中顯示的按鈕
規格VRM 0.x,或 1.0 規範的確切版本
骨骼人形骨骼數量
彈簧骨骼彈簧骨骼組數量——為零表示沒有頭髮或衣物物理
表情表情數量
完美同步模型帶有 52 個 ARKit blendshape 中的幾個
作者模型內嵌中繼資料裡寫明的作者
授權條款授權條款的 URL,要求署名時會加上標記
載入耗時舞台載入這個模型所花的實際時間

切換

VRM 是淡入淡出,而不是硬切。這個淡變是螢幕空間的抖動——模型留在不透明渲染佇列裡,保持自己的深度排序;改用透明度淡變則會打亂這個排序,讓你透過臉看進頭的內部

在虛擬形象擺好姿勢、面朝相機之前什麼都不會渲染,所以舞台永遠不會露出一個初始化到一半的模型

最後更新於 2026年9月3日

Tech otakus destroy the world