前言:

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

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

Live 2D模型获取:

  • 个人收集的Live2d模型,一般提取自游戏中:Live2d-model
  • hexo-helper-live2d 相关的Live 2D(比较老,模型精细度不高):live2d-widget-models
  • b站等平台

hexo-helper-live2d (支持.moc)

Github地址:hexo-helper-live2d

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

安装

  1. 在Hexo根目录 [BlogRoot] 下打开终端,输入以下指令安装该插件:
npm install hexo-helper-live2d
  1. 打开站点配置文件 [BlogRoot]\_config.yml
    搜索Live2d,按照如下注释内容指示进行操作。
    如果没有搜到Live2d的配置项,就直接把以下内容复制到最底部。
# 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 # 手机中是否展示
  1. 完成后保存修改,在Hexo根目录下运行指令。
hexo cl; hexo g; hexo s

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

下载并更换看板娘

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

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

卸载看板娘

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

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. 安装插件
npm install hexo-oh-my-live2d
  1. 使用(这里贴的我的配置,我使用的不是CDN而是本地的Live2D,需要使用本地文件的朋友可以参考我的写法)
# _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);
  #   }

卸载

npm uninstall hexo-oh-my-live2d

看板娘可爱捏,快开始你的Live 2D之旅吧!
我的博客

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐