前言:

我一直很想把自己直播使用的Live 2D模型添加到我的博客中,但是跟着网上最主流的Live 2D添加方式总是无法成功添加。后面通过控制变量法发现是由于hexo-helper-live2d已经于21年停止维护,所以只支持较老版本的.moc模型,而我的模型是.moc3格式的,故导致无法显示的问题。
下文将介绍两个在Hexo博客上添加本地Live2d模型的插件:

  • hexo-helper-live2d(该项目已于21年停止维护,只支持 .moc 格式下的live2d模型)
  • hexo-oh-my-live2d(该项目目前正在被积极维护,可支持 所有版本 的live2d模型)

    Live 2D模型获取:

hexo-helper-live2d (支持.moc)

Github地址:hexo-helper-live2d

这个插件目前只支持.moc格式的Live 2D模型,如果要添加的模型是.moc3的话 会出现无法显示Live 2D的情况,但是操作更简单,网上相关教程更多。

安装

  1. 在Hexo根目录 [BlogRoot] 下打开终端,输入以下指令安装该插件:
    1
    npm install hexo-helper-live2d
  2. 打开站点配置文件 [BlogRoot]\_config.yml
    搜索Live2d,按照如下注释内容指示进行操作。
    如果没有搜到Live2d的配置项,就直接把以下内容复制到最底部。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # Live2D
    ## https://github.com/EYHN/hexo-helper-live2d
    live2d:
    enable: true #开关插件版看板娘
    scriptFrom: local # 默认
    pluginRootPath: live2dw/ # 插件在站点上的根目录(相对路径)
    pluginJsPath: lib/ # 脚本文件相对与插件根目录路径
    pluginModelPath: assets/ # 模型文件相对与插件根目录路径
    # scriptFrom: jsdelivr # jsdelivr CDN
    # scriptFrom: unpkg # unpkg CDN
    # scriptFrom: https://npm.elemecdn.com/live2d-widget@3.x/lib/L2Dwidget.min.js # 你的自定义 url
    tagMode: false # 标签模式, 是否仅替换 live2d tag标签而非插入到所有页面中
    debug: false # 调试, 是否在控制台输出日志
    model:
    use: live2d-widget-model-wanko # npm-module package name
    # use: wanko # 博客根目录/live2d_models/ 下的目录名
    # use: ./wives/wanko # 相对于博客根目录的路径
    # use: https://npm.elemecdn.com/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json # 你的自定义 url
    display:
    position: right #控制看板娘位置
    width: 150 #控制看板娘大小
    height: 300 #控制看板娘大小
    mobile:
    show: true # 手机中是否展示
  3. 完成后保存修改,在Hexo根目录下运行指令。
    1
    hexo cl; hexo g; hexo s

    之所以必须要使用hexo clean是因为我们需要清空缓存重新生成静态页面,不然看板娘没被加入生成的静态页面里,是不会出现的。

下载并更换看板娘

如果不追求好看的话,可以直接下载live2d-widget-model-xxx系列的Live 2D。

  1. 同样是在Hexo根目录 [BlogRoot] 下,打开终端输入指令,选择想要的看板娘进行安装。
    1
    2
    # 一个例子
    npm install --save live2d-widget-model-koharu
  2. 然后在站点配置文件 [Blogroot]\_config.yml 里找到model.use项修改为期望的模型。
    1
    2
    3
    model:
    use: live2d-widget-model-koharu
    # 默认为live2d-widget-model-wanko
  3. 运行
    1
    hexo cl; hexo g; hexo s

卸载看板娘

卸载插件和卸载模型的指令都是通过npm进行操作的。在博客根目录 [Blogroot] 打开终端,输入:

1
2
npm uninstall hexo-helper-live2d #卸载看板娘插件
npm uninstall live2d-widget-model-modelname #卸载看板娘模型。记得替换modelname为你下载的看板娘名称

卸载后为了保证配置项不出错,记得把 [Blogroot]\_config.yml 里的配置项给注释或者删除掉。
更多配置详见参考博客:
Live2D Widget


oh-my-live2d (支持.moc && .moc3)

Github地址:
oh-my-live2d
Hexo-oh-my-live2d

该插件目前网上教程较少,但其支持所有版本的Live2D模型, 使用方式足够简单并且高可自定义,目前该项目正处于积极维护状态。因为我们这里是要在Hexo博客中添加看板娘,故只介绍如何在Hexo中使用。

  • 需要注意的一点是,官方网站给的参考代码可能有一点问题,本人在配置过程中出现了本地运行时能成功运行,但部署到服务器上后却无法显示的问题。
  • 解决方案:按照GitHub上的参考代码进行修改后便可正常显示。
  1. 安装插件
    1
    npm install hexo-oh-my-live2d
  2. 使用(这里贴的我的配置,我使用的不是CDN而是本地的Live2D,需要使用本地文件的朋友可以参考我的写法)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    # _config.yml
    OhMyLive2d:
    enable: true
    CDN: https://unpkg.com/oh-my-live2d
    option:
    dockedPosition: 'right' # 模型停靠位置 默认值: 'right' 可选值: 'left' | 'right'
    # CDN: https://registry.npmmirror.com/oh-my-live2d/0.13/files/dist/index.min.js
    # option:
    # # importType: 'cubism2' # 导入类型, 默认使用全量导入: complete , 可选值: complete, cubism2, cubism5
    # libraryUrls: # 自定义 Cubism SDK 外部资源地址
    # complete: https://registry.npmmirror.com/oh-my-live2d/latest/files/lib/complete.js
    # cubism2: https://registry.npmmirror.com/oh-my-live2d/latest/files/lib/cubism2.js
    # cubism5: https://registry.npmmirror.com/oh-my-live2d/latest/files/lib/cubism5.js
    # menus:
    # items: |
    # (defaultItems)=>{
    # return [
    # ...defaultItems,
    # {
    # id: 'github',
    # icon: 'github-fill',
    # title: '我的github',
    # onClick: ()=>window.open('https://github.com/hacxy')
    # }
    # ]
    # }

    # items:
    # - id: 'github'
    # icon: 'github-fill'
    # title: '我的github'
    # onClick: ()=>window.open('https://github.com/hacxy')

    mobileDisplay: false # 是否在移动端显示
    models:
    - path: /live2d-models/Miss/Miss.model3.json
    position: [-60, 35] # 模型在舞台中的位置。 默认值: [0,0] [横坐标, 纵坐标]
    scale: 0.15 # 模型的缩放比例 默认值: 0.1
    # showHitAreaFrames: false # 是否显示点击区域 默认值: false
    stageStyle:
    width: 250
    height: 250
    mobilePosition: [-10, 23] # 移动端时模型在舞台中的位置。 默认值: [0,0] [横坐标, 纵坐标]
    mobileScale: 0.1 # 移动端时模型的缩放比例 默认值: 0.1
    mobileStageStyle: # 移动端时舞台的样式
    width: 180
    height: 166
    motionPreloadStrategy: ALL # 动作预加载策略 默认值: IDLE 可选值: ALL | IDLE | NONE
    - path: /live2d-models/hailunna_4/hailunna_4.model3.json
    position: [-50, 0] # 模型在舞台中的位置。 默认值: [0,0] [横坐标, 纵坐标]
    scale: 0.08 # 模型的缩放比例 默认值: 0.1
    # showHitAreaFrames: true # 是否显示点击区域 默认值: false
    stageStyle:
    width: 350
    height: 350
    mobilePosition: [-10, 23] # 移动端时模型在舞台中的位置。 默认值: [0,0] [横坐标, 纵坐标]
    mobileScale: 0.08 # 移动端时模型的缩放比例 默认值: 0.1
    mobileStageStyle: # 移动端时舞台的样式
    width: 180
    height: 166
    motionPreloadStrategy: IDLE # 动作预加载策略 默认值: IDLE 可选值: ALL | IDLE | NONE

    parentElement: document.body #为组件提供一个父元素,如果未指定则默认挂载到 body 中
    primaryColor: 'var(--btn-bg)' # 主题色 支持变量
    sayHello: false # 是否在初始化阶段打印项目信息
    tips:
    style:
    width: 230
    height: 120
    left: calc(50% - 20px)
    top: -100px
    mobileStyle:
    width: 180
    height: 80
    left: calc(50% - 30px)
    top: -100px
    idleTips:
    interval: 3600
    message:
    - 你好呀,我是空城~
    - 欢迎来到我的小站~
    # 自定义提示语 需要 引入 axios 库 ,也可以使用其他方法
    # message: |
    # function(){
    # return axios.get('https://v1.hitokoto.cn?c=i')
    # .then(function (response) {
    # return response.data.hitokoto ;
    # })
    # .catch(function (error) {
    # console.error(error);
    # });
    # }
    # wordTheDay: true
    # 自定义 https://v1.hitokoto.cn 数据
    # wordTheDay: |
    # function(wordTheDayData){
    # return `${wordTheDayData.hitokoto} by.${wordTheDayData.from}`;
    # }
    # then: |
    # (oml2d)=>{
    # setTimeout(() => {
    # oml2d.tipsMessage('hello world', 3000, 10);
    # }, 8000);
    # }
    看板娘可爱捏,快开始你的Live 2D之旅吧!