Expressions/zh-hant: Difference between revisions

From VRChat Wiki
雨可韓韓 Yucohanhan (talk | contribs)
No edit summary
雨可韓韓 Yucohanhan (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 182: Line 182:
==官方資源==
==官方資源==


<div lang="en" dir="ltr" class="mw-content-ltr">
* 發布在 VRChat 上的 {{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} 世界。
*{{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} world on VRChat
* 發布在 VRChat 創作者文件上的[https://creators.vrchat.com/avatars/expression-menu-and-controls/ 表情選單與控制]
*[https://creators.vrchat.com/avatars/expression-menu-and-controls/ Expression Menu and Controls] on Creator Docs
* 發布在 VRChat 創作者文件上的[https://docs.vrchat.com/docs/action-menu#expression-menu 動作選單 - 表情選單]
*[https://docs.vrchat.com/docs/action-menu#expression-menu Action Menu - Expression Menu] on Creator Docs
* 發布在 VRChat 創作者文件上的[https://creators.vrchat.com/avatars/animator-parameters/ 表情參數]
*[https://creators.vrchat.com/avatars/animator-parameters/ Animator Parameters] on Creator Docs
* 發布在 VRChat 創作者文件上的[https://creators.vrchat.com/avatars/playable-layers Playable Layers]
*[https://creators.vrchat.com/avatars/playable-layers Playable Layers] on Creator Docs
* 發布在 VRChat 創作者文件上的[https://creators.vrchat.com/avatars/state-behaviors/ 狀態行為]
*[https://creators.vrchat.com/avatars/state-behaviors/ State Behaviors] on Creator Docs
</div>


<span id="See_also"></span>
<span id="See_also"></span>

Latest revision as of 06:54, 4 June 2026

查看 · 編輯這是與 VRChat 官方資訊有關的頁面!
它已經由 VRCWiki 團隊審核並批准。透過閱讀貢獻指南,以瞭解如何為此頁面貢獻。
動作選單中的表情選單範例。

表情」(Expressions),是在 VRChat 中的角色(Avatar)功能之一,其由用戶自訂的選單所組成,可讓用戶在角色上啟用各種動作或切換功能,旨在以靈活且方便的方式快速存取角色的獨特功能。

更多資訊請參閱關於角色的創作者文件

表情選單

遊戲內的表情選單,可透過動作選單(Action Menu)存取,也可透過快速選單(Quick Menu)主選單(Main Menu)中的表情標籤頁存取。這種操作方式適用於所有平台的 VRChat。角色表情的變化會同步給同一平台上的其他用戶,並可設定跨平臺同步

SDK 中的表情

表情功能可透過 VRChat SDK 中的各種參數進行編輯。

基礎表情

當未設定任何表情功能時,系統會自動為角色加入包含基礎動畫的預設表情選單,其中包含以下動畫:

  • 揮手(Wave)
  • 鼓掌(Clap)
  • 指向(Point)
  • 歡呼(Cheer)
  • 跳舞(Dance)
  • 後空翻(Backflip)
  • 死亡(Die)
  • 悲傷(Sadness)

自訂表情

若要新增自訂表情,請先在 Unity 中建立 Expression Menu表情選單)資產與 Expression Parameters表情參數)資產,然後在 VRChat Avatar Descriptor 的 Expressions 區段中指派這些資產。Expression Menu 用於定義哪些控制項會顯示於遊戲內選單,而 Expression Parameters 則用於定義這些控制項所變更之數值的名稱、類型、預設值,以及同步行為。

每個自訂參數都可以設定是否 Saved儲存)及 Synced同步)。已同步的自訂參數會計入角色的 256 位元同步預算,而單一角色最多可定義 8192 個自訂參數。此資產中的參數也可以由 Contact ReceiverParameter DriverPhysBone 以及 OSC 進行變更。

SDK 也提供了一個 Default Parameters預設參數)按鈕。按鈕會還原 VRChat 預設 AV3 控制器所使用的三個別名參數:VRCEmoteVRCFaceBlendHVRCFaceBlendV

控制

每個頁面最多可建立 8 個控制項。建立控制項時,可選擇以下類型:

  • Button按鈕):按下時瞬間設定指定數值,並在 VRChat 傳送變更後立即自動重設。
  • Toggle切換):啟用時設定指定數值,停用時則重設該數值。
  • Sub Menu子選單):下設另一個表情選單,並可選擇在該子選單開啟期間設定特定參數。
  • Two Axis Puppet雙軸控制):透過水平與垂直輸入控制兩個浮點數參數,通常範圍為 -1.01.0
  • Four Axis Puppet四軸控制):控制四個浮點數參數,分別對應四個方向,通常範圍為 0.01.0
  • Radial Puppet環形控制):以環狀滑塊控制一個浮點數參數,範圍為 0.01.0

控制選單範例
動作選單與臉部鏡子的使用範例。(動畫 GIF)

當你向不同方向移動搖桿、觸控板或滑鼠時,將會改變其動畫參數,以此來表現不同表情,或在不同表情之間進行混合(例如「開心」與「驚訝」)。任何參數都可以透過此選單進行控制。

你可以在任一隻手上開啟一個選單(或同時在兩隻手上開啟)。預設情況下,可透過快速撥動來選擇選項;你也可以在動作選單設定中改為使用扳機鍵進行選擇。若要返回表情選單的上一層,請按下扳機鍵。

當屬於控制類型的控制項被開啟時,VRChat 會使用較快速的 IK 同步模式即時同步其數值。控制項關閉後,當前數值會維持不變,直到再次被修改為止。

表情參數

表情參數Expression Parameters)可透過表情選單、Contact ReceiverOSCParameter DriverPhysBone 元件來控制角色功能。這些參數接著會對應至角色 FX、手勢(Gesture)或動作控制器中的 Animator Controller 參數。

設定

Expression Parameters 資產中的每個項目都會儲存以下資訊:

  • Name名稱):必須與 Animator 參數名稱完全一致。
  • Type類型):可為 BoolIntFloat
  • Default預設):當角色重設時的預設值。
  • Saved儲存):控制該數值是否會在不同工作階段之間保留。
  • Synced同步):控制該數值是否會傳送給其他用戶。

預設情況下,自訂參數會使用 VRChat 的 Playable 同步模式進行同步。當控制類型的控制項處於被開啟狀態時,則會暫時改用較快速的 IK 同步模式。

內建參數

VRChat 也提供內建的 Animator 參數。這些參數不需要額外加入 Expression Parameters 資產中,且不會計入自訂參數的預算限制。

內建參數處於唯讀模式,無法由用戶任意修改。要觸發內建參數,只需在 Playable Layer可播放層)的 Animator Controller 中使用對應名稱建立參數,VRChat 便會在執行期間自動更新其數值。這些參數不會被設定到子 AnimatorSub-Animator)上,而只會設定於 Playable Layer 的 Animator。

其他內建參數包括:

  • Viseme(Int):由唇形同步(Lip Sync)控制,數值範圍從 0(靜音)到 14(母音「u」)。當 Avatar Descriptor 的 Lip Sync 設定為 Viseme Blend ShapeViseme Parameter Only 時啟用。
  • Voice(Float):感知到的麥克風音量,範圍從 0.01.0,會受到距離及音罩(Earmuffs)設定影響。
  • VelocityXVelocityYVelocityZVelocityMagnitude(Float):沿各軸向及總體的移動速度(單位為公尺 / 秒)。本地端不會計算遊玩空間移動,而遠端則會計算。
  • Upright(Float):趴臥時為 0,站立時為 1
  • Grounded(Bool):表示用戶是否接觸地面。
  • MuteSelf(Bool):表示用戶是否已將自己的麥克風靜音。
  • Earmuffs(Bool):表示用戶是否已啟用耳罩功能。
  • IsOnFriendsList(Bool):表示檢視者是否為角色穿戴者的好友(在本地端永遠顯示為 False)。
  • ScaleFactorScaleFactorInverseEyeHeightAsMetersEyeHeightAsPercent(Float):與角色縮放相關的參數。由於 EyeHeightAsMeters 為線性數值,且不受上傳時身高影響,因此建議用於需要感知角色尺寸的系統。

每個內建參數都有其對應的同步類型,用來決定何時將數值傳送給遠端用戶:

  • IK:用於由追蹤資料衍生的數值,例如手勢、移動速度及是否接觸地面等。
  • Speech:用於與語音相關的數值,例如唇形同步及語音音量。
  • Playable:用於表示用戶狀態的數值,例如麥克風靜音、音罩、追蹤類型及角色縮放等。
  • None:用於僅限本地端使用的數值,例如 IsLocalPreviewMode

網路同步

只有已被同步的表情參數以及部分內建參數會透過網路傳送。每個角色所同步的完整資料包括:

  • IK 目標:包含頭部、下顎與雙手的位置資料;桌面模式與三點追蹤皆會同步這些資料。全身追蹤則額外同步臀部與雙腳的位置資料。使用 Index 控制器的用戶還會同步手指位置。
  • 已同步的表情參數:只有標記為 Synced 的參數會被傳送。數值會經過量化處理:Int 類型以 0 至 255 的範圍同步;Float 類型以 −1 至 1 之間、每 1/127 為單位的數值同步;Bool 類型則同步為 true 或 false。
  • 內建 VRC 參數:包括手勢、移動速度、語音以及其他執行期間參數。
  • PhysBones:姿勢位置資料會傳送給稍後加入房間的用戶。

為了確保後加入房間的用戶也能正確看到角色狀態,建議採用以 IsLocal 參數分離 Animator 邏輯的設計模式:本地端(IsLocal = True)圖層負責處理 Contact、Parameter Driver 以及所有邏輯運算,並將結果寫入已同步參數;遠端(IsLocal = False)圖層則只讀取這些已同步參數,並根據其值播放正確的視覺表現。這種做法可避免依賴不會同步的本地事件或邏輯,同時確保後加入房間的用戶能夠正確還原並顯示角色目前的狀態。

手勢與臉部表情

內建的 GestureLeftGestureRight 參數用於識別用戶的手勢,而 GestureLeftWeightGestureRightWeight 則提供類比扳機鍵的按壓程度。在 Humanoid 角色上,Gesture Playable Layer手勢可播放層)通常用於控制手勢,而臉部表情則通常透過 FX 圖層中的 Blendshape、材質屬性或其他非 Humanoid 動畫來驅動。

在具備手指追蹤功能的控制器上,由於手指追蹤預設會覆蓋動畫的效果,因此創作者可使用 Tracking Control 狀態行為(State Behavior),在需要時將相關手指的控制方式由 Tracking追蹤)切換為 Animation動畫)模式。

表情參數不相符

表情參數不相符(Expression Parameter Mismatching)是指當表情參數與本機動畫控制(Animator Controller)參數之間使用不同的參數類型。雖然建議保持參數類型一致,但系統仍支援類型不相符的設定,並會依照特定規則在不同類型之間自動轉換數值。這種做法在某些 Advanced 配置中可能相當實用。同樣的轉換機制也適用於 VRChat 內建的動畫參數。

Unity 的 Animator 系統在底層實際上使用 Float 來處理所有參數類型,而 VRChat 則會將已同步的自訂表情參數儲存為更精簡、適合網路傳輸的格式。Unity 與 VRCSDK 的使用者介面允許創作者為了方便而選擇不同的參數類型,但在底層仍可進行數值轉換。這代表參數並非以 C# 意義上的型別轉換方式運作,而是在不同系統之間以不相符的參數類型進行對應。這種行為也受到熱門工具如 Av3Emulator 與 Gesture Manager 的支援。

表情參數 Bool

動畫控制參數
類型 Expression Bool = False Expression Bool = True
Bool → Bool Bool = False Bool = True
Bool → Int Int = 0 Int = 1
Bool → Float Float = 0.0 Float = 1.0

表情參數 Int

動畫控制參數
類型 行為
Int → Bool 任何不為 0 的 Int 值都會將 Bool 設為 True。
Int → Int 預期行為
Int → Float 直接轉換:例如 Int = 2 → Float = 2.0

表情參數 Float

動畫控制參數
類型 行為
Float → Bool 任何不為 0 的 Float 值都會將 Bool 設為 True
Float → Int 四捨五入轉換:≥ 0.5 → 1;< 0.5 → 0
Float → Float 預期行為

官方資源

參見

參考資料