Configuration¶
Tip
Please use Online Json Formatter sites to format and validate Json string
Property List¶
Property | Description |
---|---|
Version | Version |
Moc | Moc3 file |
Textures | Texture files |
Bounds | Bounds of model |
HitAreas | Hit areas |
Motions | Motions |
Controllers | Controllers |
Expressions | Expressions |
Physics | Physics file |
Pose | Pose file |
Options | Options |
Bounds¶
Bounds of model
Name | Description |
---|---|
Width | Width |
Height | Height |
CenterX | Center X |
CenterY | Center Y |
HitAreas¶
Event trigger areas
Name | Description | Note |
---|---|---|
Name | Area name | Essential |
Id | Area ID | Essential |
Order | Sorting order | Optional, a higher value means a higher priority, default is 0 |
Motion | Motion group name | Optional |
Controllers¶
■ List¶
Name | Description | Options |
---|---|---|
MouseTracking | Mouse tracking | ■ SmoothTime ■ Items A |
LipSync | Lip sync | ■ Gain ■ SmoothTime ■ Items A |
EyeBlink | Eye blink | ■ MinInterval ■ MaxInterval ■ Items A |
ParamHit | Hit parameters | ■ Items C |
ParamLoop | Loop parameters | ■ Items D |
ParamValue | Parameter value | ■ Items B |
PartOpacity | Part opacity | ■ Items B |
ArtmeshOpacity | Artmesh opacity | ■ Items B |
ArtmeshColor | Artmesh color | ■ Items B |
ArtmeshCulling | Artmesh culling | ■ DefaultMode ■ CullFront ■ CullBack ■ CullNone |
AutoBreath | Auto breath | |
ExtraMotion | Extra motion | |
Accelerometer | Accelerometer | ■ Items A |
Microphone | Microphone | ■ Items A |
FaceTracking | Face tracking | ■ Face Tracking Parameter |
HandTracking | Hand tracking | ■ Hand Tracking Parameter |
IntimacySystem | Intimacy system | ■ InitValue: initial value, valid only for the first time ■ MinValue: minimum value ■ MaxValue: maximum value ■ ActiveBonus: bonus value per minute when model is activating (loaded) ■ InactiveBonus: bonus value per minute when model is inactivating (unloaded) ■ BonusLimit: daily bonus value limit, default is -1 (no limitation) ■ Id: parameter id |
KeyTrigger | Key Trigger | ■ DownMtn: Key down motion ■ UpMtn: Key up motion |
About Key Trigger
To use Key Trigger, you must set Hotkey option to Always enable or When click desktop in Control Panel setting
■ Item A¶
Name | Description |
---|---|
Parameter | Parameter ID |
Axis | Axis |
Inverted | Inverted |
Min | Min value |
Max | Max value |
DefaultValue | Default Value |
Factor | Factor |
BlendMode | 0: Override 1: Additive 2: Multiply |
Weight | Weight |
Order | Order |
Input | Input. When binding to Input, Axis will be invalid |
■ Item B¶
Name | Description |
---|---|
Name | Name |
Text | Text |
Value | Value |
Hidden | Hidden from users |
Ids | ID group |
KeyValues | Key values, only for ParamValue |
■ Item C¶
Name | Description | Note |
---|---|---|
Name | Name | |
Id | Parameter ID | Essential |
HitArea | Area name | Essential |
Type | 0: Dragging 1: Stroking |
■ Dragging: The parameter value changes with the mouse movement ■ Stroking: The parameter value is accumulated with the mouse movement distance |
Axis | 0 is x, 1 is y | Optional, default is 0 |
Weight | 1.0 for complete coverage | Optional, default is 1.0 |
Factor | Parameter value changes for every 1 pixel movement | The scale of the model affects the value |
MinMtn | The motion triggered when the dragging distance reaches its minimum value | ■ Optional, the format is 'group:motion', e.g. 'tap:mtn1' ■ If you do not specify motion, write the group name directly, e.g. 'tap' |
MaxMtn | The motion triggered when the dragging distance reaches its maximum value | Same as above |
BeginMtn | The motion triggered when dragging started | Same as above |
EndMtn | The motion triggered when dragging ended | Same as above |
LockParam | lock param | Keep the current parameter value after releasing the mouse. The default is false |
Release | release duration(ms) | The time to restore the original parameter value after releasing the mouse. The default is 100ms |
ReleaseType | release type | 0: Linear 1:Slow Out 2: Fast Out 3: Ease In Out |
■ Item D¶
Name | Description | Note |
---|---|---|
Name | Name | |
Id | Parameter ID | Essential |
Duration | Unit is millisecond | Essential |
Type | 0: Linear (min → max) 1: Sin 2: Random 3: Linear Back-and-forth (min → max → min) 4: Reverse Linear (max → min) 5: Reverse Linear Back-and-forth (max → min → max) |
Optional, default is 0 |
MinValue | Min value | |
MaxValue | Max value | |
MinInterval | Min interval(ms) | Optional, only for the type of Linear (0,3,4,5) |
MaxInterval | Max interval(ms) | Optional, only for the type of Linear (0,3,4,5) |
Weight | 1.0 for complete coverage | Optional, default is 1.0 |
BlendMode | 0: Override 1: Additive 2: Multiply |
Optional, default is 0 |
TimeSync | The initial value of the parameter will be set according to the current time if set to true | Optional, default is false |
■ Face Tracking Parameter¶
Name | Description | Note |
---|---|---|
AngleX | Left and right | ■ Relative to initial head angle ■ Default: ParamAngleX / PARAM_ANGLE_X |
AngleY | Up and down | ■ Relative to initial head angle ■ Default: ParamAngleY / PARAM_ANGLE_Y |
AngleZ | Tilt left and right | ■ Relative to initial head angle ■ Default: ParamAngleZ / PARAM_ANGLE_Z |
PositionX | Relative position X | ■ Relative to initial head position ■ Default: ParamBodyAngleZ / PARAM_BODY_ANGLE_Z |
PositionY | Relative position Y | ■ Relative to initial head position ■ Default: - |
PositionZ | Relative position Z | ■ Relative to initial head position ■ Default: - |
EyeLOpen | Left eye opening | ■ Default: ParamEyeLOpen / PARAM_EYE_L_OPEN |
EyeROpen | Right eye opening | ■ Default: ParamEyeROpen / PARAM_EYE_R_OPEN |
EyeWide | Eye wide | ■ Only for FaceTracker for iOS ■ Default: - |
EyeSquint | Eye squint | ■ Only for FaceTracker for iOS ■ Default: - |
EyeballX | Eyeball x | ■ Only for FaceTracker for iOS ■ Default: ParamEyeBallX / PARAM_EYE_BALL_X |
EyeballY | Eyeball y | ■ Only for FaceTracker for iOS ■ Default: ParamEyeBallY / PARAM_EYE_BALL_Y |
BrowLY | Left brow up and down | ■ Default: ParamBrowLY / PARAM_BROW_L_Y |
BrowRY | Right brow up and down | ■ Default: ParamBrowRY / PARAM_BROW_R_Y |
MouthOpenY | Mouth opening | ■ Default: ParamMouthOpenY / PARAM_MOUTH_OPEN_Y |
MouthForm | Mouth form | ■ Default: ParamMouthForm / PARAM_MOUTH_FORM |
MouthPucker | Mouth pucker | ■ Only for FaceTracker for iOS ■ Default: - |
MouthFunnel | Mouth funnel | ■ Only for FaceTracker for iOS ■ Default: - |
CheekPuff | Cheek puff | ■ Only for FaceTracker for iOS ■ Default: - |
TongueOut | Tongue out | ■ Only for FaceTracker for iOS ■ Default: - |
■ Hand Tracking Parameter¶
Name | Description | Note |
---|---|---|
LeftAngleX / RightAngleX | Hand flip | ■ 5 states (-1, -0.5, 0, 0.5, 1) ■ -1=Min Value; 1=Max Value |
LeftAngleZ / RightAngleZ | Hand shake | |
LeftPositionX / RightPositionX | Wrist relative position X | ■ Relative to the reference position |
LeftPositionY / RightPositionY | Wrist relative position Y | ■ Relative to the reference position |
LeftThumb / RightThumb | Thumb | ■ Bend=Min Value; Stretch=Max Value |
LeftIndex / RightIndex | Index | ■ Bend=Min Value; Stretch=Max Value |
LeftMiddle / RightMiddle | Middle | ■ Bend=Min Value; Stretch=Max Value |
LeftRing / RightRing | Ring | ■ Bend=Min Value; Stretch=Max Value |
LeftPinky / RightPinky | Pinky | ■ Bend=Min Value; Stretch=Max Value |
LeftGapTI / RightGapTI | Gap: Thumb - Index | ■ Close=Min Value; Spread=Max Value |
LeftGapIM / RightGapIM | Gap: Index - Middle | ■ Close=Min Value; Spread=Max Value |
LeftGapMR / RightGapMR | Gap: Middle - Ring | ■ Close=Min Value; Spread=Max Value |
LeftGapRP / RightGapRP | Gap: Ring - Pinky | ■ Close=Min Value; Spread=Max Value |
Motions¶
Motions
■ Properties¶
Name | Description | Sub Parameter | Note |
---|---|---|---|
Name | Motion name | ||
File | Path of motion file | ||
FileLoop | Loop play | Can be interrupted by MotionDuration | |
Sound | Path of sound file | ||
SoundDelay | Sound delay time | Unit is millisecond | |
SoundChannel | Sound channel | 3 channels are available(0, 1,2), can play sound simultaneously, default is 0 | |
SoundVolume | Sound volume | ||
SoundLoop | Sound loop | ||
Text | Text | ||
TextDelay | Text delay time | Unit is millisecond | |
TextDuration | Duration of text display | Unit is millisecond | |
Language | Language | Depending on the model language selected by user ■ en:English ■ zhs:Chinese Simplified ■ zht:Chinese Traditional ■ ja:Japanese ■ ru:Russian |
|
Expression | Expression name | ||
FadeIn | Fade in (ms) | ||
Fade out (ms) | SDK 3 is not valid currently | ||
MotionDuration | Duration of event (ms) | Used for custom event duration, regardless of motion and sound duration | |
Priority | Motion priority | ■ Range is 2 - 9 ■ default is 2, if set to 9, the previous event will be overwritten forcibly |
|
Interruptable | Can be interrupted | ■ When true, this event can be interrupted by events with the same priority ■ This parameter has no effect on events with priority 9 |
|
Command | Command | Will be triggered before motion started | |
PostCommand | Post command | Will be triggered after motion finished | |
Choices | Selection branch | ■ Text: text ■ NextMtn: next motion |
■The format is 'group:motion', e.g. 'tap:mtn1' ■ If you do not specify motion, write the group name directly, e.g. 'tap' |
TimeLimit | Time limit | ■ Hour: (0 - 23) ■ Minute: (0 - 59) ■ Month ■ Day - Sustain: (minute) ■ Birthday: (true / false) |
|
Ignorable | Can be ignored | ■ Determine if this motion can be triggered ■ When there have other motions with time_limit parameter ■ This parameter will be ignored when time_limit has been set■ default is false |
|
Intimacy | Intimacy | ■ Min: minimum intimacy required to trigger events ■ Max: maximum intimacy required to trigger events ■ Bonus: bonus value when event is triggered |
|
PreMtn | Previous motion | ■ If set, this motion can be triggered only when the value equals to the last motion ■ The format is 'group:motion', e.g. 'tap:mtn1' ■ If you do not specify motion, write the group name directly, e.g. 'tap' |
|
NextMtn | Next motion | ■ The format is 'group:motion', e.g. 'tap:mtn1' ■ If you do not specify motion, write the group name directly, e.g. 'tap' |
|
Weight | Weight | Range is 1-999, default is 1. The higher the value, the higher the trigger probability | |
VarFloats | Float variables | Condition ■ greater ■ greater_equal ■ lower ■ lower_equal ■ equal ■ not_equal Value operation ■ assign ■ add ■ substract ■ multiply ■ divide ■ init |
■ Condition is used to determine whether the event can be triggered ■ Value operation is used to operate the value after the event is triggered ■ Can be performed on two variables, e.g. greater $var2 ($+name) ■ Variables can be saved ■ 'init' is only valid if the variable is not initialized |
OverrideFaceParams | Override face tracking parameters |
About Weight
For example, there are three motions A, B, and C participating in random selection, where A has a weight value of 1, B is 10, C is 89, and the sum of the weights is 100, then the trigger probability of A is 1%, and B is 10 %, C is 89%.
How to use Ignorable
For example, there have two motions in start motion group, motion A contains TimeLimit parameter. If set Ignorable of motion B to false, when motion A can be triggered, it will be triggered definitely, otherwise application will randomly choose a motion from motion A and B to trigger.
■ Events¶
Name | Description | Note |
---|---|---|
Idle | Idle | |
Tap | Mouse click | If HitArea exists, TapArea will be triggered first |
TapArea | Area click, e.g. TapBody | please use Tap event if there is no HitArea property |
Start | Triggered when model loaded | |
Shake | Triggered when shake device | For devices with gravity sensor |
Tick | Triggered per minute | |
TickX ( tick_x ) | Triggered per X minutes | X from 1 to 60, e.g. Tick1, Tick2 ... |
LeaveX_Y_Z ( leave_x_y_z ) | Leave (no other motions except idle) | X indicates the start execution time, Y indicates the minimum trigger interval, Z indicates the maximum trigger interval, and the unit is seconds. For example: Leave30_10_20 means the motion will be started after 30 seconds, and the trigger interval is between 10-20 seconds. |
About play multiple motions simultaneously
Motion play has the concept of layer, motions can be played simultaneously at different layers. By default, all motions are played at layer 0, if you want to play the motion at other layers, name it to name#layer (e.g. idle#1 means playing idle motion at layer 1).
■ Commands¶
- A Command separates each parameter by space, so there must be no space in id or path!
- Several commands are separated by ';'
Name | Description | Example |
---|---|---|
open_url | Open the link from the browser | "Command":"open_url https://www.baidu.com" |
change_cos | Change costume | "Command":"change_cos cos02.model.json" |
start_mtn | Perform the motion of the specified model | "Command":"start_mtn model_id group:motion" |
stop_mtn | Stop the motion of the specified layer | "Command":"stop_mtn 1" (1 means layer number) |
next_exp | Next expression | "Command":"next_exp" |
clear_exp | Clear expression | "Command":"clear_exp" |
replace_tex | Replace texture | "Command":"replace_tex 1 tex/texture_01.png" ()(The texture number starts from 0, and 1 means the second texture) |
stop_sound | Stop sound | "Command":"stop_sound 0" (0 is channel id) |
stop_all_sounds | Stop all sounds | "Command":"stop_all_sounds" |
mute_sound | Mute sound | "Command":"mute_sound 0" (0 is channel id) |
unmute_sound | Unmute sound | "Command":"unmute_sound 0" (0 is channel id) |
hide_text | Hide text | "Command":"hide_text" |
Parameter | Command | Description | Example |
---|---|---|---|
parameters parts artmeshes artmesh_colors |
lock unlock set |
lock unlock set |
■ "Command":"parameters lock PARAM_ANGLE_X 10" (10 is value for parameter) ■ "Command":"parameters lock PARAM_ANGLE_X $var" (Set the value of VarFloat named 'var' to parameter, must start with $) ■ "Command":"parameters unlock PARAM_ANGLE_X" ■ "Command":"parameters unlock" (Unlock all) ■ "Command":"parameters set PARAM_ANGLE_X 10" (10 is value for parameter) ■ "Command":"parameters set PARAM_ANGLE_X $var" (Set the value of VarFloat named 'var' to parameter, must start with $) * The difference between lock and set is that lock is continuous and set is only assigned once |
motions | enable disable |
enable disable |
■ "Command":"motions enable group:motion" ■ "Command":"motions disable group:motion" |
hit_areas param_loop |
enable disable |
enable disable |
■ "Command":"hit_areas enable area_name" ■ "Command":"hit_areas disable area_name" |
mouse_tracking physics extra_motion auto_breath |
enable disable |
enable disable |
■ "Command":"mouse_tracking enable" ■ "Command":"mouse_tracking disable" |
eye_blink lip_sync |
enable disable enforce |
enable disable enforce |
■ "Command":"lip_sync enable" ■ "Command":"lip_sync disable" ■ "Command":"lip_sync enforce" |
■ Special Placeholders¶
Name | Description | Note |
---|---|---|
{$br} | newline | Used for text wrapping (do not use enter key to wrap) |
{$username} | Username | The username set in setting (Control Panel) |
{$timenow} | Current time | 16:27 |
{$datenow} | Current date | 2017-08-14 |
{$intimacy} | Current intimacy value | Integer |
{$intimacy_max} | Max intimacy value | Integer |
{$intimacy_min} | Min intimacy value | Integer |
{$vf_xxx} | Value of var_floats 'xxx' | Float |
{$vi_xxx} | Value of var_floats 'xxx' | Integer |
Options¶
Options
Name | Description |
---|---|
Id | Model ID |
Name | Display name, this is used for AITalk |
ScaleFactor | ■ Used to scale the model when loaded ■ Default is 1, this is useful when the loaded model is too small or too large |
AnisoLevel | ■ Anisotropic filtering level of the texture ■ Default is 1. Anisotropic filtering makes textures look better in some cases, but comes at a performance cost in the graphics hardware. The value range of this property goes from 1 to 9. It will overwrite the value of Anisotropic Filtering Level in Control Panel setting when the value is greater than 1 |
AllowMod | ■ Allow customization ■ Default is true. If you do not want users to customize mode contents, set it to false |
Last modified: 2020.7.15