在Hexo博客上添加本地Live 2D模型(.moc/.moc3)
前言:
我一直很想把自己直播使用的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模型获取:
- 个人收集的Live2d模型,一般提取自游戏中:Live2d-model
- 与
hexo-helper-live2d
相关的Live 2D:live2d-widget-models
hexo-helper-live2d (支持.moc)
Github地址:hexo-helper-live2d
这个插件目前只支持.moc格式的Live 2D模型,如果要添加的模型是.moc3的话 会出现无法显示Live 2D的情况,但是操作更简单,网上相关教程更多。
安装
- 在Hexo根目录
[BlogRoot]
下打开终端,输入以下指令安装该插件:1
npm install hexo-helper-live2d
- 打开站点配置文件
[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 # 手机中是否展示 - 完成后保存修改,在Hexo根目录下运行指令。
1
hexo cl; hexo g; hexo s
之所以必须要使用hexo clean是因为我们需要清空缓存重新生成静态页面,不然看板娘没被加入生成的静态页面里,是不会出现的。
下载并更换看板娘
如果不追求好看的话,可以直接下载live2d-widget-model-xxx系列的Live 2D。
- 同样是在Hexo根目录
[BlogRoot]
下,打开终端输入指令,选择想要的看板娘进行安装。1
2# 一个例子
npm install --save live2d-widget-model-koharu - 然后在站点配置文件
[Blogroot]\_config.yml
里找到model.use项修改为期望的模型。1
2
3model:
use: live2d-widget-model-koharu
# 默认为live2d-widget-model-wanko - 运行
1
hexo cl; hexo g; hexo s
卸载看板娘
卸载插件和卸载模型的指令都是通过npm进行操作的。在博客根目录 [Blogroot]
打开终端,输入:
1 | npm uninstall hexo-helper-live2d #卸载看板娘插件 |
卸载后为了保证配置项不出错,记得把 [Blogroot]\_config.yml
里的配置项给注释或者删除掉。
更多配置详见参考博客:
Live2D Widget
oh-my-live2d (支持.moc && .moc3)
Github地址:
oh-my-live2d
Hexo-oh-my-live2d
该插件目前网上教程较少,但其支持所有版本的Live2D模型, 使用方式足够简单并且高可自定义,目前该项目正处于积极维护状态。因为我们这里是要在Hexo博客中添加看板娘,故只介绍如何在Hexo中使用。
- 安装插件
1
npm install hexo-oh-my-live2d
- 使用(这里贴的我的配置,我使用的不是CDN而是本地的Live2D,需要使用本地文件的朋友可以参考我的写法)看板娘可爱捏,快开始你的Live 2D之旅吧!
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);
# }
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 EmptyCity💭💡🎈!