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

前言

说明基于测试MOD,PA15-高校心跳物语JSON文件。

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

示例

{
	"version":"Sample 1.0.0",
	"model":"model.moc",
	"textures":[
		"model.1024/texture_00.png"
	],
	"layout": { "center_x": 0, "center_y": 0, "width": 3.5, "height": 3.5 },
	"hit_areas":[
		{"name":"leg","id":"D_REF.LEG"},
		{"name":"body","id":"D_REF.BODY"}
	],
	"hit_areas_custom": {
		"head_x": [-0.28, 1.17],
		"head_y": [0.32, 0.84]
	},
	"motions":{
		"tap_body":[
			{
				"file": "motions/login.mtn",
				"sound": "wav/PA15_HELLO_JP.wav",
				"text": "啊——来了来了,有趣的事情来了!",
				"fade_in": 0,
				"fade_out": 0
			}
		],
		"flick_head": [
			{
				"file": "motions/wedding_touch.mtn",
				"sound": "wav/PA15_DIALOGUEWEDDING_JP.wav",
				"text": "今天也辛苦你了。下班后我们去夜场的游乐园放松一下怎么样?或者,你更愿意一起安静地喝点什么?",
				"fade_in": 0,
				"fade_out": 0
			}
		],
		"tap_leg": [
			{
				"file": "motions/touch_1.mtn",
				"sound": "wav/PA15_DIALOGUE1_JP.wav",
				"text": "看不出你有这种兴趣呢,指挥官。坦率地寻求刺激不是坏事哦",
				"fade_in": 0,
				"fade_out": 0
			}
		],
		"idle":[
			{
				"file":"motions/daiji_idle_01.mtn",
				"fade_in": 0,
				"fade_out": 0
			}
		]
	},
	"physics":"physics.json"		
}

说明

首先JSON分为9个大项

"version"
"model"
"textures"
"layout"
"hit_areas"
"hit_areas_custom"
"expressions"
"motions"
"physics"


"version","model","textures","physics"

其中"version","model","textures","physics"为基础配置,分别对应"版本","模型","贴图","物理",按照实际填写即可。

"version":不做要求,可随意填写或者不做修改。
"model":为对应目录下的.moc文件。
"textures":为对应目录下的.png文件。
"physics":为对应目录下的physics.json文件。


"layout"

"layout"为布局设置,分为"width","height","x","y","center_x","center_y","top","bottom","left","right" ,共10小项。

根据实际情况,"width","height","center_x","center_y"足以解决大部分问题,其他项酌情使用。

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


"hit_areas"

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

"hit_areas":[
		{"name":"leg","id":"D_REF.LEG"},
		{"name":"body","id":"D_REF.BODY"}
]

其中"name"分为"special","face","head","body","leg"五项,对应5个不同的可设置点击区域,"id"则对应MDO预划分的身体区域,按照实际情况进行编写。

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

PS:"hit_areas"的"face"对应的是MOD的表情文件"expressions",属于特殊区域,只能在"hit_areas"里激活,无法设置为"hit_areas_custom",不过带有exp文件的MOD一般也自带身体划区,问题不大。

PS2:当区域重叠的时候"hit_areas"的优先级要高于"hit_areas_custom",子项的优先级为"special">"face">"head">"body">"leg",


"hit_areas_custom"

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

"hit_areas_custom": {
		"head_x": [-0.28, 1.17],
		"head_y": [0.32, 0.84]
}

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


"motions"

"motions"为MOD动作设置,分为"idle","sleepy","tap_special","flick_head","tap_body","tap_leg"六项。

"idle":待机动作。
"sleepy":休眠动作(待机动作下无操作约40s触发)。
"tap_special":特殊区域动作。
"flick_head":摸头。
"tap_body":摸身体。
"tap_leg":摸腿。

除了"idle","sleepy"其他四项均为点击区域触发,与上面"hit_areas"和"hit_areas_custom"的设定相对应。

动作配置实例如下:

"tap_body":[
	{
		"file": "motions/login.mtn",
		"sound": "wav/PA15_HELLO_JP.wav",
		"text": "啊——来了来了,有趣的事情来了!",
		"fade_in": 0,
		"fade_out": 0
	}
]

"file":动作文件路径。
"sound":音频文件路径。
"text":音频对应文本。
"fade_in":淡入,无特殊要求默认0即可。
"fade_out":淡出,无特殊要求默认0即可。


"expressions"

"expressions"为MOD表情配置,我接触的也不多,shizuku的MOD里有具体实例,可供参考。

"expressions"项目的表情采取的是随机选取,所以只需要按照顺序并注意文件路径即可。

"expressions": [{
            "name": "f01",
            "file": "exp/f01.exp.json"
        }, {
            "name": "f02",
            "file": "exp/f02.exp.json"
        }, {
            "name": "f03",
            "file": "exp/f03.exp.json"
        }, {
            "name": "f04",
            "file": "exp/f04.exp.json"
        }
]