对于Live2D的Motion可以成功读取

在官方framework里面有一个motion3.json的parse方法,他会转换json中的动作,给到group动作组,提供后续触碰支持,在1.7.3版本中已经实际安装,此版本的debug版已经上传至github,debug版本安装后将会加载并反馈点击模型后触发的提示,如果可以,请协助我安装debug版本,并在留言处留下你的网址。

注意:debug版本会扰乱控制台内容,经常输出很多字符,请慎重安装。

https://github.com/jiangweifang/wp-live2d/releases/tag/1.7.3_dev

  • lappmodel.ts 的 375 行 loadCubismMotion 中需要读取 model3.json含有Motions的内容

  • Motions的组成 :
"Motions" : {
    "动作": [
        {
            "File": "motions/动作组_1.motion3.json"
        },
        {
            "File": "motions/动作组_2.motion3.json"
        },
        {
            "File": "motions/动作组_3.motion3.json"
        }
    ]
}

当前问题:
1. moc3模型制作结果由于v3版本生成和v4版本生成后结果不同,导致model3.json中对于Motions的定义有一定差异。
2. 没有动作组被触发,这个需要设置,我会在后台增加设置来配置动作触发的条件。
3. 触发动作可以在model3.json中配置好后直接使用

model3.json配置成功的例子“Hiyori”:

{
    "Version": 3,
    "FileReferences": {
        "Moc": "Hiyori.moc3",
        "Textures": [
            "Hiyori.2048/texture_00.png",
            "Hiyori.2048/texture_01.png"
        ],
        "Physics": "Hiyori.physics3.json",
        "Pose": "Hiyori.pose3.json",
        "UserData": "Hiyori.userdata3.json",
        "Motions": {
            "Idle": [
                {
                    "File": "motions/Hiyori_m01.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m02.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m03.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m05.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m06.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m07.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m08.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m09.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                },
                {
                    "File": "motions/Hiyori_m10.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                }
            ],
            "TapBody": [
                {
                    "File": "motions/Hiyori_m04.motion3.json",
                    "FadeInTime": 0.5,
                    "FadeOutTime": 0.5
                }
            ]
        }
    },
    "Groups": [
        {
            "Target": "Parameter",
            "Name": "LipSync",
            "Ids": [
                "ParamMouthOpenY"
            ]
        },
        {
            "Target": "Parameter",
            "Name": "EyeBlink",
            "Ids": [
                "ParamEyeLOpen",
                "ParamEyeROpen"
            ]
        }
    ],
    "HitAreas": [
        {
            "Id": "HitArea",
            "Name": "Body"
        }
    ]
}

例子中“动作”设置为“Idle”为待机动作,模型将会各段时间随机选择“Idle”组中的动作触发,“TapBody”为触发身体触碰时的动作。

在ExStudio中可以看到 hemin_3 有TouchBody、TouchHead、TouchSpecial网格,他们代表触碰这3个位置可以有指定动作触发,这种网格只可以在Cubism Editor工具中进行修改和创建。

鉴于以上情景,我将会在代码中增加读取motions的方法,提供给没有按照Hiyori 配置的model3.json,但是相对的,用户需要在后台对触发的位置进行定义.

发表评论

电子邮件地址不会被公开。 必填项已用*标注