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日