MOC3配置说明 - kongbaiku/Live2D-M GitHub Wiki

前言

说明基于测试MOD,拉菲-白兔迎春JSON文件。

所有不能读取的JSON配置建议使用BeJSON等网站校验和格式化JSON文件。

示例

{
    "Version": 3,
    "FileReferences": {
    "Moc": "lafei_4.moc3",
    "Textures": [
      "textures/texture_00.png"
    ],
    "Physics": "lafei_4.physics3.json",
    "Layout": { "center_x": 0, "center_y": 0, "width": 1.5, "height": 1.5 },
    "Motions": {
      "Idle": [
        {
          "Name": "idle",
          "File": "motions/idle.motion3.json"
        }
      ],
      "Start": [
        {
          "Name": "login",
		  "Sound": "sounds/login.mp3",
		  "Text": "指挥官还不回来,拉菲要靠着树睡着了……Zzz…… ",
          "File": "motions/login.motion3.json"
        }
      ],
      "TapBody": [
        {
          "Name": "main_1",
		  "Sound": "sounds/main_1.mp3",
		  "Text": "春节限定版兔耳和兔兔拖鞋…指挥官喜欢吗?拉菲…很喜欢… ",
          "File": "motions/main_1.motion3.json"
        }
      ],
      "TapHead": [
        {
          "Name": "touch_head",
		  "Sound": "sounds/touch_head.mp3",
		  "Text": "呣……指挥官,不要摇我……",
          "File": "motions/touch_head.motion3.json"
        }
      ],
      "TapSpecial": [
        {
          "Name": "touch_special",
		  "Sound": "sounds/touch_special.mp3",
		  "Text": "指挥官,又在想奇怪的事了吗…",
          "File": "motions/touch_special.motion3.json"
        }
      ],
      "Tick": [
        {
		  "Name": "mail",
		  "Text": "指挥官,您的信……",
		  "Sound": "sounds/mail.mp3",
          "File": "motions/mail.motion3.json"
		  
        }
      ],
      "Leave": [
        {
		  "Name": "complete",
		  "Text": "盯————我在想指挥官会不会自己记起来委托已经完成了这件事",
		  "Sound": "sounds/complete.mp3",
          "File": "motions/complete.motion3.json"		  
        }
      ],
      "Shake": [
        {
          "Name": "shake",
		  "Text": "do not shake",
          "File": "motions/touch_head.motion3.json",
          "TextDuration": 1000
        }
      ]
    }
  },
  "HitAreas": [
	{
      "Name": "Body",
      "Id": "TouchBody",
      "Motion": "TapBody"
    },
    {
      "Name": "Head",
      "Id": "TouchHead",
      "Motion": "TapHead:touch_head"
    },
    {
      "Name": "Special",
      "Id": "TouchSpecial",
      "Order": 1,
      "Motion": "TapSpecial:touch_special"
    }
  ],
  "Groups": [
    {
      "Target": "Parameter",
      "Name": "LipSync",
      "Ids": [
        "ParamMouthOpenY"
      ]
    },
    {
      "Target": "Parameter",
      "Name": "EyeBlink",
      "Ids": [
        "ParamEyeLOpen",
        "ParamEyeROpen"
      ]
    }
  ]
}

说明

MOC3和MOC的配置有所不同,之前的大部分配置被归到"FileReferences"项中,所以JSON的结构大体上为:

"Version"
"FileReferences"

"Moc"
"Textures"
"Physics"
"Layout"
"Motions"

"HitAreas"
"HitAreas_Custom"
"Groups"

其中,"Groups"项看着是不是有什么"LipSync(唇音同步)"啊,什么"EyeBlink(眼球追踪)",好像很高大上的东西,其实全部木大!这个项是原本自带的,并没有使用,但不排除以后使用,所以姑且留着了。


"Version"

和MOC一样"Version"就是标注MOD版本号的东西,没有要求,按照实际填写即可。


"FileReferences"

与MOC最大的不同就是MOC3把"Moc","Textures","Physics","Layout","Motions"都划归到了"FileReferences",不过基础配置方面没什么大的改动。

"Moc":为对应目录下的.moc3文件。
"Textures":为对应目录下的.png文件。
"Physics":为对应目录下的physics3.json文件。

"Layout"为布局设置,为了方便,在MOC的基础上只保留了"width","height","center_x","center_y"四项,不同的是"center"的倍数调大了,所以值同样也会比较大。

"width":对应MOD宽度,无明显表现,与"height"项相同即可。
"height":对应MOD高度,具体表现为MOD的体积大小改变,如果MOD初始显示体积过小,可通过此项适度放大。(建议区间1-10)
"center_x":对应MOD距离中心点的x轴距离,如果MOD初始显示位置偏离,可通过此项适度移动。(建议区间0-20)
"center_y":对应MOD距离中心点的y轴距离,如果MOD初始显示位置偏离,可通过此项适度移动。(建议区间0-20)


"Motions"

"Motions"东西比较多,所以还是单开一列来写。

"Motions"为MOD动作设置,分为"Idle","Start","TapBody","TapHead","TapSpecial","TapLeg","Tick","Leave","Shake"九项。

其中"Motions"中的"Tick","Leave","Shake"三项,由于没有场景条件所以是没有配置的,有需要的话可以把动作移到其他项触发,只是留着后续(可能)的升级用。

"Idle":待机动作。
"Start":进场动作,大概是MOC3新加的东西吧,当做进场动画就行。
"TapSpecial":特殊区域动作。
"TapHead":摸头。
"TapBody":摸身体。
"TapLeg":摸腿。

除了"Idle","Start",其他四项均为点击区域触发。

PS:当区域重叠的时候"HitAreas_Custom"的优先级要高于"HitAreas",没错,和MOC反了。在我写这个说明的时候才发现,虽然改起来不麻烦,但更新github麻烦,不影响使用那就不改了吧_(:3」∠)_,子项的优先级涉及到新参数"Order",在下面"HitAreas"里面写。

动作配置实例如下:

"Start": [
        {
          "Name": "login",
	  "Sound": "sounds/login.mp3",
	  "Text": "指挥官还不回来,拉菲要靠着树睡着了……Zzz…… ",
          "File": "motions/login.motion3.json"
        }
]

"Name":动作名称,和动作文件名对应即可。
"Sound":音频文件路径。
"Text":音频对应文本。
"File":动作文件路径。


"HitAreas"

"HitAreas"为点击区域,适用于MOD原本有划分身体区域的情况。

"HitAreas": [
    {
      "Name": "Body",
      "Id": "TouchBody",
      "Motion": "TapBody"
    },
    {
      "Name": "Special",
      "Id": "TouchSpecial",
      "Order": 1,
      "Motion": "TapSpecial:touch_special"
    }
]

其中"Name"分为"Special","Head","Body","Leg"四项,对应4个不同的可设置点击区域,"Id"则对应MDO预划分的身体区域,按照实际情况进行编写。

("Id"项主要看的是你到手的MOD在制作时是否有设置,属于不可改变的先天条件,至少我不会改_(:3」∠)_)

"Motion"是点击区域对应的动作项,可以设置为触发整个动作项后随机选取动作,或者指定动作项里单一某个动作,增加了可操作性。

"Order"是点击区域的优先度,按Order排序,Order值越大,区域优先度越高,没有Order的设置为默认值0。


"HitAreas_Custom"

"HitAreas_Custom"为自定义点击区域,通过自己设定点击区域来激活相应动作,虽然点击区域精度没有"HitAreas"高,但胜在万能。

"HitAreas_Custom": {
	"head_x": [-0.13, -0.44],
	"head_y": [0.18, -0.16]
}

分为"special", "head","body","leg"四项,需要通过设定左上角和右下角两个点来定位点击区域,所以分为"?_x""?_y"。可以使用"Ctrl+鼠标左键"点击MOD读取当前点击位置来设定区域(只是报点,还是需要手动修改JSON文件)(之前MOC3的报点比较长,V1.2.3后修改为只取小数点后两位)。