avatar

live2DViewerEX配置

Live2DViewerEX模型配置

以双生视界,无忧-群青之翼为例,刚好抽到,可以作为参考动作和语音。

加载模型

live2DViewerEX-EX工作室-Live2D编辑器-选择模型文件夹,点击model3.json加载模型
加载模型))

配置点击区域

  1. 一般要配置区域为,,,等部位。
    点击网格选项卡,勾选自由选择,然后点击头部,在第一行还左拖到透明度,如果觉得部位合适就选择。记录部位参数。
    点击区域

  2. 一般选择部位的绿框尽量小,不然点击很其他部位重复,会冲突,设置动作优先度可以解决。以为是我的点击区域参数,仅供参考

  • D_PSD2_139 头部
  • D_PSD2_21 左胸
  • D_PSD2_20 右胸
  • D_PSD2_129 右手
  • D_PSD2_15 左手
  • D_PSD_53 54 裙子
  • D_PSD3_121 嘴
    !点击区域配置](/img/post14_3.jpg)

配置动作

选择动作,添加动作组

  • Idle 待机动作
  • Tap 点击动作
  • TapArea 点击区域的动作
  • Start 读取模型时的动作
  • Shake 摇动动作(适用于手机)
  • Tick 每分钟播放一次动作

动作组的动作按照自己喜欢的配置,不一定全部动作配置完。
动作组

配置参数拖拽(掀裙子)

控制器-勾选参数拖拽
ID选择PARAM_XIANQUNZI_1PARAM_XIANQUNZI_2,可以在参数中左右拖到查看你想要的ID
点击区域选择你配置的点击区域,我的是skirt,IDD_PSD_53
类型选择拖拽
坐标轴选择Y
因子-0.07 (建议自己测试)
下面的选项根据需要填写
如果选择动作时没有动作选择,需要在动作中为动作组动作命名
参数拖拽

配置语音

语音包比较乱比较难找,采取Fiddle抓包找到语音地址,把游戏文件夹File里的version.zip移动出来重新下载游戏数据,找到vo_normal_girl_10.uurl地址。换回西山居代理了,直连延迟低了点。

  • 语音文件是下载在wwisedata里解压后放到AutoAudio文件夹里,没有打包好的语音很难找,所以抓取还没解压的文件。
  • 详细提取语音步骤请参考我写的少女咖啡枪 live2d提取

提取语音步骤

  1. 把游戏文件夹File里的version.zip移动出来,重上游戏下载数据Fildder抓包。

  2. 找到地址后主要是下载vo_normal_girl_12.u文件,normal代表日常,12代表角色编号,在换装可以看到顺序号。’vo_story_girl_12’表示故事线的语音,看看文件名都能知道.注意:请求文件的文件名是小写

  3. AssetStudio解包语音文件,全部提取出来,用Advanced Renamertxt后缀批量删除,wem后缀才是正确的。

  4. bnk文件用bnkextr提取,出来文件后缀是wem。如果提取不出来说明这文件不需要的。

  5. revorb.bat批量把.wem文件转换成.ogg音频,在修正’.ogg’音频文件。


for %%f in (*.wem) do ww2ogg.exe %%f --pcb packed_codebooks_aoTuV_603.bin

pause

for %%f in (*.ogg) do revorb.exe %%f

pause
  1. 删除多余的.wem文件,根目录delwem.bat

del *.wem

动作中添加声音,vo_normal_girl_12.u提取的全部的语音,按需要添加就行了。
语音配置


模型文件下载

配置文件`model3.json`参考(点击展开)

{
  "Version": 3,
  "FileReferences": {
    "Moc": "724upd__l2d_371.u.moc3",
    "Textures": [
      "textures/texture_00.png"
    ],
    "Physics": "724upd__l2d_371.u.physics3.json",
    "Motions": {
      "Idle": [
        {
          "Name": "stand",
          "File": "motions/Mgirl10_stand.motion3.json",
          "MotionDuration": 3000,
          "Priority": 3,
          "Enabled": false
        },
        {
          "Name": "stand_a",
          "File": "motions/Mgirl10_stand_a.motion3.json",
          "Enabled": false
        },
        {
          "Name": "reshen",
          "File": "motions/Mgirl10_reshen.motion3.json",
          "Sound": "voice/631417465.ogg",
          "Enabled": false
        },
        {
          "Name": "jita",
          "File": "motions/Mgirl10_jita.motion3.json",
          "Sound": "voice/202100287.ogg",
          "Enabled": false
        }
      ],
      "Tapleft_hand": [
        {
          "File": "motions/Mgirl10_hengge.motion3.json",
          "Sound": "voice/108272852.ogg"
        },
        {
          "File": "motions/Mgirl10_hengge2.motion3.json",
          "Sound": "voice/108272852.ogg"
        }
      ],
      "Taphead": [
        {
          "File": "motions/Mgirl10_zeguai_a.motion3.json",
          "Priority": 4
        },
        {
          "Name": "motouweixiao_a.motion3.json",
          "File": "motions/Mgirl10_motouweixiao_a.motion3.json",
          "Priority": 3
        },
        {
          "Name": "motouxiao",
          "File": "motions/Mgirl10_motouxiao.motion3.json",
          "Priority": 3
        },
        {
          "File": "motions/Mgirl10_motouweixiao.motion3.json",
          "Priority": 3
        },
        {
          "File": "motions/Mgirl10_motouwushi_c.motion3.json"
        },
        {
          "File": "motions/Mgirl10_motouyihuo.motion3.json"
        },
        {
          "File": "motions/Mgirl10_motouyihuo_a.motion3.json"
        },
        {
          "Name": "jingya",
          "File": "motions/Mgirl10_jingya.motion3.json"
        }
      ],
      "Tapright_hand": [
        {
          "File": "motions/Mgirl10_hengge.motion3.json",
          "Sound": "voice/108272852.ogg"
        },
        {
          "File": "motions/Mgirl10_hengge2.motion3.json",
          "Sound": "voice/108272852.ogg"
        }
      ],
      "Tapleft_oppai": [
        {
          "Name": "haixiu",
          "File": "motions/Mgirl10_haixiu.motion3.json"
        },
        {
          "Name": "haixiu_a.motion3.json",
          "File": "motions/Mgirl10_haixiu_a.motion3.json"
        },
        {
          "File": "motions/Mgirl10_dianbanshou.motion3.json"
        }
      ],
      "Tapright_oppai": [
        {
          "Name": "stand_c",
          "File": "motions/Mgirl10_stand_c.motion3.json"
        },
        {
          "File": "motions/Mgirl10_jingya.motion3.json"
        },
        {
          "File": "motions/Mgirl10_jingxi_a.motion3.json"
        },
        {
          "File": "motions/Mgirl10_banshoucihou2.motion3.json"
        }
      ],
      "Tapskirt": [
        {
          "Name": "xianqunzi",
          "File": "motions/Mgirl10_xianqunzi.motion3.json",
          "Sound": "voice/988200358.ogg",
          "Priority": 4
        },
        {
          "Name": "zhamao_c",
          "File": "motions/Mgirl10_zhamao_c.motion3.json"
        },
        {
          "Name": "shengqi_c",
          "File": "motions/Mgirl10_shengqi_c.motion3.json"
        },
        {
          "Name": "banshoucihou",
          "File": "motions/Mgirl10_dianbanshou.motion3.json"
        },
        {
          "Name": "banshoucihou2",
          "File": "motions/Mgirl10_banshoucihou2.motion3.json"
        }
      ],
      "Taplip": [
        {
          "Name": "qiuqinqin_a",
          "File": "motions/Mgirl10_qiuqinqin_a.motion3.json"
        },
        {
          "Name": "qiuqinqin",
          "File": "motions/Mgirl10_qiuqinqin.motion3.json"
        },
        {
          "Name": "keai",
          "File": "motions/Mgirl10_keai.motion3.json"
        },
        {
          "Name": "haixiu",
          "File": "motions/Mgirl10_haixiu.motion3.json"
        }
      ],
      "Start": [
        {
          "Name": "ganxie",
          "File": "motions/Mgirl10_ganxie.motion3.json",
          "Sound": "voice/401411406.ogg"
        }
      ],
      "Shake": [
        {
          "File": "motions/Mgirl10_jingya.motion3.json"
        }
      ],
      "Tap": [
        {
          "File": "motions/Mgirl10_buchile.motion3.json"
        },
        {
          "File": "motions/Mgirl10_chijitui.motion3.json"
        },
        {
          "File": "motions/Mgirl10_chijitui_a.motion3.json"
        },
        {
          "File": "motions/Mgirl10_banshoucihou2.motion3.json"
        },
        {
          "File": "motions/Mgirl10_dianbanshou.motion3.json"
        },
        {
          "File": "motions/Mgirl10_dianbanshou_a.motion3.json"
        }
      ]
    }
  },
  "Controllers": {
    "ParamHit": {
      "Items": [
        {
          "Name": "skirt_1",
          "Id": "PARAM_XIANQUNZI_1",
          "HitArea": "skirt3",
          "Axis": 1,
          "Factor": -0.07,
          "Release": 300,
          "ReleaseType": 0,
          "EndMtn": "Tapskirt:xianqunzi"
        },
        {
          "Name": "skirt_2",
          "Id": "PARAM_XIANQUNZI_2",
          "HitArea": "skirt",
          "Axis": 1,
          "Factor": -0.07,
          "Release": 300,
          "ReleaseType": 1,
          "BeginMtn": "Tapleft_oppai:haixiu",
          "EndMtn": "Tapskirt:banshoucihou"
        },
        {
          "Name": "skirt_3",
          "Id": "PARAM_XIANQUNZI_1",
          "HitArea": "skirt",
          "Axis": 1,
          "Factor": -0.07,
          "ReleaseType": 0,
          "EndMtn": "Tapskirt:banshoucihou2"
        },
        {
          "Name": "head",
          "Id": "PARAM_ANGLE_Y",
          "HitArea": "head",
          "Axis": 1,
          "Factor": 0.1,
          "ReleaseType": 0,
          "Type": 1,
          "MinMtn": "Taphead:motouweixiao_a.motion3.json",
          "BeginMtn": "Taphead:motouxiao",
          "EndMtn": "Taphead:jingya"
        }
      ],
      "Enabled": true
    },
    "ParamLoop": {},
    "KeyTrigger": {
      "Items": [
        {
          "Input": 81,
          "DownMtn": "Taplip:qiuqinqin",
          "UpMtn": "Tapleft_oppai:haixiu"
        }
      ],
      "Enabled": true
    },
    "EyeBlink": {
      "MinInterval": 500,
      "MaxInterval": 6000,
      "Enabled": true
    },
    "LipSync": {
      "Gain": 5.0,
      "Enabled": true
    },
    "MouseTracking": {
      "SmoothTime": 0.15,
      "Enabled": true
    },
    "AutoBreath": {
      "Enabled": true
    },
    "ExtraMotion": {
      "Enabled": true
    },
    "Accelerometer": {
      "Enabled": true
    },
    "Microphone": {},
    "Transform": {},
    "FaceTracking": {
      "Enabled": true
    },
    "ParamValue": {},
    "PartOpacity": {},
    "ArtmeshOpacity": {},
    "ArtmeshColor": {},
    "ArtmeshCulling": {
      "DefaultMode": 0
    },
    "IntimacySystem": {}
  },
  "HitAreas": [
    {
      "Name": "head",
      "Id": "D_PSD2_139"
    },
    {
      "Name": "left_hand",
      "Id": "D_PSD2_15"
    },
    {
      "Name": "right_hand",
      "Id": "D_PSD_129"
    },
    {
      "Name": "left_oppai",
      "Id": "D_PSD2_21"
    },
    {
      "Name": "right_oppai",
      "Id": "D_PSD2_20"
    },
    {
      "Name": "skirt",
      "Id": "D_PSD_53"
    },
    {
      "Name": "lip",
      "Id": "D_PSD3_121"
    },
    {
      "Name": "skirt2",
      "Id": "D_PSD_54"
    },
    {
      "Name": "skirt3",
      "Id": "D_PSD_72"
    }
  ],
  "Options": {
    "ScaleFactor": 1.5,
    "AnisoLevel": 3
  }
}
文章作者: Eikan
文章链接: https://eikanya.github.io/post/liv2DViewerEX%E9%85%8D%E7%BD%AE/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Eikanya‘s Blog

评论