Json配置
提示
請使用 BeJSON 等網站校驗和格式化Json文件
關於SDK 3命名規則
SDK 3與SDK 2主要的區別在於屬性的命名規則,基於官方定義,SDK 2均以小寫為主,SDK 3為首字母大寫,詳細可以參考 http://docs.live2d.com/cubism-editor-manual/cubism3-viewer-for-ow/
主配置列表¶
配置項 | 描述 |
---|---|
Version | 版本 |
Moc | moc文件 |
Textures | 貼圖文件 |
Bounds | 模型邊界 |
HitAreas | 點擊區域組 |
Motions | 動作組 |
Controllers | 控制器組 |
Expressions | 表情組 |
Physics | 物理效果文件 |
Pose | 姿勢文件 |
Options | 選項 |
Bounds¶
模型邊界
模型邊界定義了鼠標追蹤的範圍和可以觸發全局點擊事件的範圍。默認情況下程序通過遍歷所有網格位置自動計算出邊界,但是有時因遍歷了某些無用的網格,造成計算出的邊界過大,最終影響鼠標追蹤效果。通過自定義邊界,將邊界縮放至合適大小可以解決上述問題。
參數 | 描述 |
---|---|
Width | 長度 |
Height | 高度 |
CenterX | 中心點X坐標 |
CenterY | 中心點Y坐標 |
HitAreas¶
點擊區域組
參數 | 描述 | 備注 |
---|---|---|
Name | 區域名稱 | 必須 |
Id | 區域ID | 必須 |
Order | 排列順序 | 可選,數值越大觸發優先級越高。默認為0 |
Motion | 動作組名 | 可選 |
Controllers¶
控制器組
控制器列表¶
名稱 | 描述 | 選項 | 說明 |
---|---|---|---|
MouseTracking | 鼠標追蹤 | ■ SmoothTime:平滑時間 ■ Items:自定義參數組A |
|
LipSync | 嘴型同步 | ■ Gain:增益 ■ SmoothTime:平滑時間 ■ Items:自定義參數組A |
|
EyeBlink | 眨眼 | ■ MinInterval:最小間隔 ■ MaxInterval:最大間隔 ■ Items:自定義參數組A |
|
ParamHit | 參數拖拽 | ■ 參數拖拽項目組 | |
ParamLoop | 參數循環 | ■ 參數循環項目組 | |
ParamValue | 參數值 | ■ 自定義參數組B | |
PartOpacity | 部件透明度 | ■ 自定義參數組B | |
ArtmeshOpacity | 網格透明度 | ■ 自定義參數組B | |
ArtmeshColor | 網格顏色 | ■ 自定義參數組B | |
AutoBreath | 自動呼吸 | ||
ExtraMotion | 小幅度動作 | ||
Accelerometer | 加速器 | ■ 自定義參數組A | |
Microphone | 麥克風 | ■ 自定義參數組A | |
FaceTracking | 面部追蹤 | ■ 面部追蹤參數組 | |
HandTracking | 手部追蹤 | ■ 手部追蹤參數組 | |
IntimacySystem | 好感度系統 | ■ InitValue:初始值 ■ MinValue:最小值 ■ MaxValue:最大值 ■ ActiveBonus:激活時獎勵 ■ InactiveBonus:非激活時獎勵 ■ BonusLimit:每日獎勵限制 ■ Id:綁定參數ID |
|
KeyTrigger | 按鍵觸發 | ■ DownMtn:按下時動作 ■ UpMtn:抬起時動作 |
要使按鍵觸發生效,需要在Live2DViewerEX控制面板的設定里,將熱鍵設定為 總是啓用 或 點擊桌面時 |
ParamTrigger | 參數觸發 | ■ Name:名稱 ■ Parameter:參數 ■ TriggerValues:觸發值 |
觸發值項目包括 ■ 觸發值:當參數值穿過該值會觸發指定動作 ■ 方向:正向表示參數值從小到大經過觸發值時有效;反向表示從大到小經過有效;雙向表示只要穿過均有效 ■ 觸發動作:條件滿足時觸發的動作 |
AreaTrigger | 區域觸發 | ■ Name:名稱 ■ TargetArea:目標區域 ■ EnterMtn:進入時動作 ■ ExitMtn:離開時動作 ■ TriggerAreas:觸發區域 |
■ 系統持續檢測目標區域與觸發區域是否形成重疊部分,並觸發 進入時動作 和 離開時動作 ■ 因每幀都會檢測,所以可能對性能產生影響 |
HandTrigger | 手勢觸發 | ■ Name:名稱 ■ Hand:左右手 ■ Direction:手心朝向 ■ Motion:動作事件 ■ Fingers:手指狀態 ■ FingerGaps:指間狀態 |
自定義參數A¶
名稱 | 描述 |
---|---|
Parameter | 參數ID |
Axis | 軸向 |
Inverted | 反轉 |
Min | 最小值 |
Max | 最大值 |
DefaultValue | 默認值 |
BlendMode | 0: Override(覆蓋) 1: Additive(疊加) 2: Multiply(乘算) |
Weight | 權重 |
Order | 排序 |
Input | 輸入。當綁定輸入時,軸向屬性將無效 |
自定義參數B¶
名稱 | 描述 |
---|---|
Name | 名稱 |
Text | 文本 |
Value | 值 |
Hidden | 對用戶隱藏 |
Ids | ID組 |
KeyValues | 關鍵值,僅適用於ParamValue |
參數拖拽¶
參數 | 描述 | 備注 |
---|---|---|
Name | 名稱 | |
Id | 區域ID | 必須 |
HitArea | 觸發區域名 | 必須 |
Type | 0: 拖拽(Dragging) 1: 撫摸(Stroking) 2: 按壓(Pressing) |
■ 拖拽:參數值隨鼠標移動改變 ■ 撫摸:參數值隨鼠標移動距離累加 ■ 按壓:鼠標持續按住左鍵 |
Axis | 控制軸,0為x軸,1為y軸 | 可選,默認為0 |
Weight | 權重,1.0為完全覆蓋 | 可選,默認為1.0 |
Factor | ■ 拖拽&撫摸:每移動1像素改變的參數值,模型的縮放會影響該值大小 ■ 按壓:每秒增加的參數值 |
|
MinMtn | 拖動距離達到最小值時觸發的動作 | ■ 可選,格式為 「group:motion」,例如 "tap:mtn1" ■ 不指定motion時請直接寫group名即可,例如 "tap" |
MaxMtn | 拖動距離達到最大值時觸發的動作 | 同上 |
BeginMtn | 開始拖拽時觸發 | 同上 |
EndMtn | 結束拖拽時觸發(參數值未達到最小或最大值) | 同上 |
LockParam | 鎖定參數 | 松開鼠標之後保持當前參數值,默認為false |
Release | 釋放時間(ms) | 松開鼠標之後恢復原來參數值的時間,默認為 100ms |
ReleaseType | 釋放類型 | 0:線性(Linear) 1:減速(Slow Out) 2:加速(Fast Out) 3:緩入緩出(Ease In Out) |
LowPriority | 低優先級 | 勾選之後拖拽會在計算物理之前執行,最終會影響物理效果 |
參數循環¶
參數 | 描述 | 備注 |
---|---|---|
Name | 名稱 | |
Ids | 參數ID | 必須 |
Duration | 循環時間(ms) | 必須 |
Type | 0: 線性(最小 → 最大) 1: 正弦式 2: 隨機 3: 線性(往返)(最小 → 最大 → 最小) 4: 逆向線性(最大 → 最小) 5: 逆向線性(往返)(最大 → 最小 → 最大) |
可選,默認為0 |
MinValue | 最小值 | |
MaxValue | 最大值 | |
MinInterval | 最小間隔(ms) | 可選,僅支持線性循環(0,3,4,5) |
MaxInterval | 最大間隔(ms) | 可選,僅支持線性循環(0,3,4,5) |
Weight | 權重,1.0為完全覆蓋 | 可選,默認為1.0 |
BlendMode | 0: Override(覆蓋) 1: Additive(疊加) 2: Multiply(乘算) |
可選,默認為0 |
TimeSync | 時間同步,設為true之後會根據當前時間設定參數初始值 | 可選,默認為false |
面部追蹤參數¶
參數 | 描述 | 備注 |
---|---|---|
AngleX | 頭部左右轉動 | ■ 相對於初始頭部的角度 ■ 默認值:ParamAngleX / PARAM_ANGLE_X |
AngleY | 頭部上下擺動 | ■ 相對於初始頭部的角度 ■ 默認值:ParamAngleY / PARAM_ANGLE_Y |
AngleZ | 頭部左右傾斜 | ■ 相對於初始頭部的角度 ■ 默認值:ParamAngleZ / PARAM_ANGLE_Z |
PositionX | 頭部左右相對位置 | ■ 相對於初始頭部位置 ■ 默認值:ParamBodyAngleZ / PARAM_BODY_ANGLE_Z |
PositionY | 頭部上下相對位置 | ■ 相對於初始頭部位置 ■ 默認值:無 |
PositionZ | 頭部前後相對位置 | ■ 相對於初始頭部位置 ■ 默認值:無 |
EyeLOpen | 左眼開閉 | ■ 默認值:ParamEyeLOpen / PARAM_EYE_L_OPEN |
EyeROpen | 右眼開閉 | ■ 默認值:ParamEyeROpen / PARAM_EYE_R_OPEN |
EyeWide | 睜大眼睛 | ■ 僅適用於IOS版FaceTracker 默認值:無 |
EyeSquint | 眯眼 | ■ 僅適用於IOS版FaceTracker ■ 默認值:無 |
EyeballX | 眼球X | ■ 僅適用於IOS版FaceTracker ■ 默認值:ParamEyeBallX / PARAM_EYE_BALL_X |
EyeballY | 眼球Y | ■ 僅適用於IOS版FaceTracker ■ 默認值:ParamEyeBallY / PARAM_EYE_BALL_Y |
BrowLY | 左眉上下位置 | ■ 默認值:ParamBrowLY / PARAM_BROW_L_Y |
BrowRY | 右眉上下位置 | ■ 默認值:ParamBrowRY / PARAM_BROW_R_Y |
MouthOpenY | 嘴部開閉 | ■ 默認值:ParamMouthOpenY / PARAM_MOUTH_OPEN_Y |
MouthForm | 嘴部形變 | ■ 默認值:ParamMouthForm / PARAM_MOUTH_FORM |
MouthPucker | 噘嘴(張開) | ■ 僅適用於IOS版FaceTracker ■ 默認值:無 |
MouthFunnel | 噘嘴(閉合) | ■ 僅適用於IOS版FaceTracker ■ 默認值:無 |
CheekPuff | 鼓腮 | ■ 僅適用於IOS版FaceTracker ■ 默認值:無 |
TongueOut | 伸舌 | ■ 僅適用於IOS版FaceTracker ■ 默認值:無 |
手部追蹤參數¶
參數 | 描述 | 備注 |
---|---|---|
LeftAngleX / RightAngleX | 手腕翻轉 | ■ 五個狀態,分別對應值 (-1, -0.5, 0, 0.5, 1) ■ -1=參數最小值;1=參數最大值 |
LeftAngleZ / RightAngleZ | 手腕左右晃動 | |
LeftPositionX / RightPositionX | 手腕左右相對位置 | ■ 相對於基準位置 |
LeftPositionY / RightPositionY | 手腕上下相對位置 | ■ 相對於基準位置 |
LeftThumb / RightThumb | 拇指 | ■ 彎曲=最小值;伸直=最大值 |
LeftIndex / RightIndex | 食指 | ■ 彎曲=最小值;伸直=最大值 |
LeftMiddle / RightMiddle | 中指 | ■ 彎曲=最小值;伸直=最大值 |
LeftRing / RightRing | 無名指 | ■ 彎曲=最小值;伸直=最大值 |
LeftPinky / RightPinky | 小指 | ■ 彎曲=最小值;伸直=最大值 |
LeftGapTI / RightGapTI | 指間:拇指 - 食指 | ■ 併攏=最小值;張開=最大值 |
LeftGapIM / RightGapIM | 指間:食指 - 中指 | ■ 併攏=最小值;張開=最大值 |
LeftGapMR / RightGapMR | 指間:中指 - 無名指 | ■ 併攏=最小值;張開=最大值 |
LeftGapRP / RightGapRP | 指間:無名指 - 小指 | ■ 併攏=最小值;張開=最大值 |
Motions¶
動作事件
事件屬性¶
參數 | 描述 | 子屬性 | 備注 |
---|---|---|---|
Name | 動作名 | ||
File | 動作文件路徑 | ||
FileLoop | 動作循環播放 | MotionDuration可以中斷循環 | |
Sound | 聲音文件路徑 | ||
SoundDelay | 延遲播放聲音 | 單位毫秒(ms) | |
SoundChannel | 聲音頻道 | 總共可以選擇三個頻道(0,1,2),不同頻道聲音可以同時播放。默認為0 | |
SoundVolume | 聲音音量 | ||
SoundLoop | 聲音循環播放 | ||
Text | 文本 | ||
TextDelay | 延遲顯示文本(ms) | ||
TextDuration | 文本顯示時長(ms) | ||
Language | 語言 | 根據用戶在控制面板選擇的模型語言來過濾 ■ en:英文 ■ zhs:簡體中文 ■ zht:繁體中文 ■ ja:日文 ■ ru:俄語 |
|
Expression | 表情名 | ||
FadeIn | 淡入(ms) | ||
淡出(ms) | SDK 3暫不可用 | ||
MotionDuration | 事件時長(ms) | 用於自定義事件時長,不受動作和語音時長影響 | |
Priority | 優先級 | ■ 可設定範圍2-9,越大優先級越高 ■ 默認為2,若設置為9則強制覆蓋前一個事件 |
|
Interruptable | 可被打斷 | ■ 當為true時,此動作事件可以被相同優先級的動作打斷 ■ 此參數對優先級為9的事件無效 |
|
Command | 指令 | 動作開始之前執行 | |
PostCommand | 後置指令 | 動作完成之後執行 | |
Choices | 選擇支 | ■ Text:文本 ■ NextMtn:下一個動作 |
■ 動作格式為 「group:motion」,例如 "tap:mtn1" ■ 不指定motion時請直接寫group名即可,例如 "tap" |
TimeLimit | 時間限制 | ■ Hour:小時(0 - 23) ■ Minute:分鐘(0 - 59) ■ Month:月 ■ Day:日 ■ Sustain:持續時間(分鐘) ■ Birthday:生日(true或false) |
|
Ignorable | 可被忽略 | ■ 當存在符合觸發條件並包含時間限制(TimeLimit)的其他動作事件時,此事件是否允許被觸發 ■ 設置TimeLimit會導致該參數無效 ■ 默認為false |
|
Intimacy | 好感度 | ■ Min:觸發事件所需最小親密度 ■ Max:觸發事件所需最大親密度 ■ Bonus:觸發事件親密度變化值 |
|
PreMtn | 上一個動作 | ■ 當設置該屬性時,僅當上一個動作為指定動作才可以觸發此動作 ■ 動作格式為 「group:motion」,例如 "tap:mtn1" ■ 不指定motion時請直接寫group名即可,例如 "tap" |
|
NextMtn | 下一個動作 | ■ 動作格式為 「group:motion」,例如 "tap:mtn1" ■ 不指定motion時請直接寫group名即可,例如 "tap" |
|
Weight | 權重 | 範圍1-999,值越大觸發概率越高。默認為1 | |
Speed | 速度 | 動作播放速度,SDK 2 不可用。默認為1 | |
VarFloats | 浮點變量 | 條件判斷(Condition) ■ greater:大於 ■ greater_equal:大於等於 ■ lower:小於 ■ lower_equal:小於等於 ■ equal:等於 ■ not_equal:不等於 值操作(Operation) ■ assign:賦值 ■ add:加 ■ subtract:減 ■ multiply:乘 ■ divide:除 ■ init:初始化 |
■ 條件判斷用於判斷該動作事件是否可被觸發 ■ 值操作用於在事件觸發後對值進行操作 ■ 可以對兩個變量進行條件判斷和操作,例如:greater $var2($+變量名) ■ 變量名可以為模型參數名,參數名前需加@,例如:@ParamAngleX ■ 隨機數函數:rand(min,max) 和 randf(min,max) 。rand為整數隨機;randf為浮點數隨機;min和max寫隨機數的最小值和最大值 ■ 變量可存檔 ■ init操作僅在該變量沒有存檔(未初始化)的情況下有效 |
OverrideFaceParams | 覆蓋面部捕捉參數,SDK 2暫不可用 |
關於參數 Weight
例如有三個動作A,B,C參與隨機選擇,其中A的Weight值為1,B為10,C為89,三個動作的權重總和為100,則A的觸發概率為1%,B為10%,C為89%。
參數 Ignorable 的使用場景
例如在模型啓動時有兩個啓動事件參與隨機抽選,其中事件A帶有 TimeLimit 參數,只在特定日期觸發,事件B為普通事件。將事件B的 Ignorable 設置為 false 時,到了特定日期後,會在事件A和事件B中隨機選擇一個觸發;將事件B的 Ignorable 設置為 true 時,到了特定日期後,只會觸發事件A而忽略事件B
事件列表¶
事件 | 描述 | 備注 |
---|---|---|
Idle | 待機 | |
Tap | 鼠標點擊 | 若存在 HitAreas,優先觸發 Tap區域名 |
Tap區域名 | 鼠標區域點擊 | 需要配置 HitAreas,否則請使用 Tap 事件 |
Start | 模型載入時觸發 | |
Shake | 晃動設備時觸發 | 限支持重力感應功能的設備使用 |
Tick | 每分鐘觸發一次 | |
TickX(tick_x) | 每x分鐘觸發一次 | X處填寫數字,範圍1-60 對於同時符合條件的(如第2分鐘的Tick1和Tick2)隨機選擇一個事件進行觸發 |
LeaveX_Y_Z(leave_x_y_z) | 放置(除待機之外無任何其他事件觸發) | X表示開始執行時間,Y表示最小觸發間隔,Z表示最大觸發間隔,單位為秒 例如:Leave30_10_20 表示放置30秒後開始執行此事件,觸發間隔為10-20秒之間 |
關於多動作同時播放
動作播放有層級(Layer)的概念,不同層級的動作可以同時播放,高層級播放的動作會覆蓋低層級帶有相同參數的動作。動作默認在層級0上播放,若希望在其他層級中播放,使用 事件名#層級 的命名格式,例如 idle#1 表示該動作組在層級1上播放。注意,在層級0上播放請勿使用 事件名#0,請直接使用 事件名
可用指令¶
- 指令是以空格分割每個參數,所以在寫id或是路徑之類的時候一定不能有空格,切記!
- 多條指令之間以英文分號(;)分割
指令 | 描述 | 示例 |
---|---|---|
open_url | 從瀏覽器打開鏈接 | "Command":"open_url https://www.baidu.com" |
change_cos | 換裝 | "Command":"change_cos cos02.model.json" |
start_mtn | 執行指定模型的動作 | "Command":"start_mtn model_id group:motion" (model_id可以不寫,代表當前模型) |
stop_mtn | 停止指定層級的動作 | "Command":"stop_mtn 1" (1代表層級序號) |
set_exp | 設置表情 | "Command":"set_exp 01.exp.json" |
next_exp | 下一個表情 | "Command":"next_exp" |
clear_exp | 清除表情 | "Command":"clear_exp" |
replace_tex | 替換貼圖 | "Command":"replace_tex 1 tex/texture_01.png" (貼圖編號從0開始,1代表第二張貼圖) |
stop_sound | 停止聲音 | "Command":"stop_sound 0" (0為頻道標識) |
stop_all_sounds | 停止所有聲音 | "Command":"stop_all_sounds" |
mute_sound | 靜音 | "Command":"mute_sound 0" (0為頻道標識) |
unmute_sound | 解除靜音 | "Command":"unmute_sound" |
hide_text | 隱藏文本顯示 | "Command":"hide_text" |
屬性 | 指令 | 說明 | 示例 |
---|---|---|---|
parameters parts artmesh_opacities artmesh_colors |
lock unlock set |
鎖定 解鎖 設置 |
■ "Command":"parameters lock PARAM_ANGLE_X 10" (10為鎖定的參數值) ■ "Command":"parameters lock PARAM_ANGLE_X $var" (將浮點變量名為var的值設為參數值,變量名開頭需要加$) ■ "Command":"parameters lock PARAM_ANGLE_X @PARAM_NAME" (將參數PARAM_NAME的值賦給目標參數,參數開頭需要加@) ■ "Command":"parameters unlock PARAM_ANGLE_X" "Command":"parameters unlock"(解鎖全部) ■ "Command":"parameters set PARAM_ANGLE_X 10" (10為鎖定的參數值) ■ "Command":"parameters set PARAM_ANGLE_X $var" (將浮點變量名為var的值設為參數值,變量名開頭需要加$) * 鎖定和設置的區別在於,鎖定是持續性的,而設置僅賦值一次 |
motions | enable disable |
啓用 禁用 |
■ "Command":"motions enable group:motion" ■ "Command":"motions disable group:motion" |
hit_areas param_loop |
enable disable |
啓用 禁用 |
■ "Command":"hit_areas enable area_name"(area_name指名稱) ■ "Command":"hit_areas disable area_name" |
param_hit | enable disable lock unlock begin end |
啓用 禁用 鎖定參數 解鎖參數 開始拖拽 結束拖拽 |
■ "Command":"param_hit enable name"(name指名稱) ■ "Command":"param_hit disable name" ■ "Command":"param_hit lock name" ■ "Command":"param_hit unlock name" ■ "Command":"param_hit begin name PARAM_NAME" ■ "Command":"param_hit end name" |
mouse_tracking physics extra_motion auto_breath |
enable disable |
啓用 禁用 |
■ "Command":"mouse_tracking enable" ■ "Command":"mouse_tracking disable" |
eye_blink lip_sync |
enable disable enforce |
啓用 禁用 強制 |
■ "Command":"lip_sync enable" ■ "Command":"lip_sync disable" ■ "Command":"lip_sync enforce" |
特殊佔位符¶
佔位符 | 描述 | 備注 |
---|---|---|
{$br} | 換行 | 用於文本換行(請勿直接回車換行) |
{$username} | 用戶暱稱 | 設置里設置的暱稱 |
{$timenow} | 當前時間 | 16:27 |
{$datenow} | 當前年月日 | 2017-08-14 |
{$intimacy} | 當前好感度 | 整數 |
{$intimacy_max} | 最大好感度 | 整數 |
{$intimacy_min} | 最小好感度 | 整數 |
{$vf_xxx} | 顯示浮點變量xxx | 浮點數 |
{$vi_xxx} | 顯示浮點變量xxx | 整數 |
Options¶
選項
名稱 | 描述 |
---|---|
Id | 模型ID |
Name | 顯示名稱,此名稱將用於在各種地方展示模型名稱(如文本框,AI對話等) |
ScaleFactor | ■ 用於在加載時縮放模型 ■ 默認為1,適合於某些加載時過大或過小的模型 |
AnisoLevel | ■ 貼圖的各向異性過濾等級 ■ 默認為1。各向異性過濾使貼圖在某些情況下看起來效果更好,但是會增加圖形硬件的性能開銷。此變量的值的範圍從 1 - 9。當值大於1時會覆蓋應用程序中的貼圖各向異性過濾等級設定值 |
AllowMod | ■ 允許用戶自定義 ■ 默認為true,若模型製作者不希望用戶自定義部分內容,請設置為false |
修訂日期:2021年7月1日