Live2D 官方资料
Live2D Cubism 4 Editor
Cubism Web Framework
Cubism SDK Manual
Live2D + Hexo 本地化配置流程
Hexo切换为Next样式
使用live2d-widget需要将Hexo切换为Next样式,具体切换方式可参考Next官网
直接下载其release版的源码,解压后丢到Hexo里的source目录中即可
修改部分配置
修改source/live2d-widget/autoload.js
1 2
| const live2d_path = "/live2d-widget/";
|
修改themes/next/layout/_layout.swig
1 2 3 4
| <head> <script src="/live2d-widget/autoload.js"></script> </head>
|
修改_config.yml,在末尾添加
发布
完成以上步骤后打开本地Blog地址,可以看到live2d-widget模块已经嵌入界面,但仅有live2d-widget对话框,并无model加载,model的加载请查看后续步骤。
翻看autoload.js以及README.md文件,可以知道live2d-widget只提供了在hexo上显示live2d的功能,并不提供live2d的模型。
autoload.js代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| if (screen.width >= 768) { Promise.all([ loadExternalResource(live2d_path + "waifu.css", "css"), loadExternalResource(live2d_path + "live2d.min.js", "js"), loadExternalResource(live2d_path + "waifu-tips.js", "js") ]).then(() => { initWidget({ waifuPath: live2d_path + "waifu-tips.json", cdnPath: "https://cdn.jsdelivr.net/gh/fghrsh/live2d_api/" }); }); }
|
可以看到live2d-widget指定了一个获取资源的url,当live2d-widget加载时,会通过这个url去加载model文件。该url可能已经废弃
继续查看README.md,作者提到了提供API的网址,以及API的github地址
于是考虑建立本地后台提供api给本地live2d-widget调用
查看live2d_api项目的内容,发现该项目内提供了live2d的模型文件以及php代码,于是需要在本地搭建一个php server。这里决定采用nginx + php的简单搭配,先跑起api再说。
下载LTS版本解压后放在本地目录即可,注意路径不要中文
配置nginx/conf/nginx.conf文件,一下仅展示几项比较重要的配置
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
| server { # 这里配置nginx监听的端口号 listen 7777;
# !!!注意 由于是在本地跑api提供文件给hexo用,需要开启跨域,Access-Control-Allow-Origin为本地hexo的url # #设置跨域配置 Start set $cors_origin ""; if ($http_origin ~* "^http://localhost$"){ set $cors_origin $http_origin; }
# add_header Access-Control-Allow-Origin $cors_origin always; add_header Access-Control-Allow-Origin http://localhost:4000; add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS always; add_header Access-Control-Allow-Credentials true always; add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token always; add_header Access-Control-Max-Age 1728000 always;
# 预检请求处理 if ($request_method = OPTIONS) { return 204; } # #设置跨域配置 End
# 这里指定live2d_api项目的根目录,让nginx的请求都指向该目录 location / { root D:\Code\NodeJsProject\loolob_blog\live2d_api; }
# 这里配置对php的支持,注意fastcgi_pass的端口号,后面启动php服务器时要用到此端口号 location ~ \.php$ { root D:\Code\NodeJsProject\loolob_blog\live2d_api; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
|
由于是在windows上跑后端,所以下载windows支持版的php,下载源码后解压即可
复制php根目录中的php.ini-development文件并改名为php.ini后修改
1 2 3 4 5
| extension_dir = "D:\Code\NodeJsProject\php\ext"
cgi.fix_pathinfo=1
|
修改autoload.js文件,使其的url指向本地
1 2 3 4 5 6 7 8 9 10 11 12
| if (screen.width >= 768) { Promise.all([ loadExternalResource(live2d_path + "waifu.css", "css"), loadExternalResource(live2d_path + "live2d.min.js", "js"), loadExternalResource(live2d_path + "waifu-tips.js", "js") ]).then(() => { initWidget({ waifuPath: live2d_path + "waifu-tips.json", apiPath: "http://localhost:7777/", }); }); }
|
修改waifu-tips.js文件,使其默认加载的第一个live2d model文件是1-1
1 2 3 4 5 6 7 8 9 10
| (function initModel() { let modelId = localStorage.getItem("modelId"), modelTexturesId = localStorage.getItem("modelTexturesId"); if (modelId === null) { modelId = 1; modelTexturesId = 1; } ...... )
|
启动hexo以及live2d api
启动php服务,注意端口号就是给本地nginx使用端口号
1
| .\php-cgi.exe -b 127.0.0.1:9000 -c .\php.ini
|
启动nginx服务
启动hexo server
启动完以上服务后,通过localhost访问本地hexo主页应该就能看到live2d模型了