651 words
3 minutes
给 Hugo 网站添加 Live2D 看板娘
2025-07-15
No Tags

UPDATE: 由于很多细节不够完善,我暂时禁用了 Live2D.

params.toml

[live2d]
enable = false

给 Hugo 网站添加 Live2D 看板娘#

完成效果参考本站左下角。Live2D 基于 Cubism 模型,通过 Live2D Widget 在网页端渲染。此处的胡桃模型由 @根瘤菌rkzj 创作。

准备模型#

一个 Cubism 模型资源一般以目录的形式存在,通过指向其下 model3.json 的 URL 引用。由于 Live2D 模型多体积较大,可使用 CDN 加快分发。本站使用了 Cloudflare Pages 部署静态文件。

贴图大小#

有些模型的贴图分辨率过高,可适当缩小贴图,减小文件体积以加速。

Hugo 自定义 JavaScript 加载#

Hugo 会将网站渲染为静态 HTML. 因此,我们需要在客户端插入 JavaScript 来渲染自定义组件。

本站使用 Stack 主题。查阅其文档可知:

There are two empty files reserved for custom HTML in the theme, useful for adding custom scripts or stylesheets:

  • layouts/partials/head/custom.html
  • layouts/partials/footer/custom.html

Live2D 的加载较为费时,因此我们将其插入到页脚中,不拖慢网页主体加载。

layouts/partials/footer/custom.html

<script type="module" src="/live2d/main.js"></script>

将加载我们将会放在 static/live2d/main.js 下的脚本。Hugo 将 static/$path 下的文件映射到 /$path 路由上。

安装依赖#

我们从 Live2D Widget 仓库的分发中下载其代码库本体 waifu-tips.js 与 Cubism 渲染器依赖 live2d.min.js , 置于静态目录中。

编写 JavaScript#

我们使用 ES Module 来简化动态资源的加载过程。导入并调用 Live2D Widget 库:

import './waifu-tips.js'
initWidget({
waifuPath: '/live2d/config.json',
cubism2Path: '/live2d/live2d.min.js',
cubism5Path:
'https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js',
tools: ['hitokoto', 'asteroids', 'photo', 'info', 'quit'],
logLevel: 'warn',
drag: false,
})

initWidget 的参数可在原仓库 README 找到解释。

配置模型#

注意到,我们在 JavaScript 中引用了 /live2d/config.json , 这是模型的配置文件,我们现在需要编写它。

我们从仓库的分发中复制 waifu-tips.json 进行修改。为加载自定义的模型,修改 .models :

[
{
"name": "Hu Tao",
"paths": ["https://hutao-live2d.pages.dev/model3.json"],
"message": "太阳出来我晒太阳,月亮出来我晒月亮~"
}
]

其余选项亦可参照默认配置进行修改。

调整样式#

默认的 CSS 在不同网站上可能显示效果不佳。可以复制并修改原仓库的 waifu.css 来自定义样式。

记得在脚本加载前引入自定义的 CSS:

<link rel="stylesheet" href="/live2d/waifu.css" />

完成!

跨域请求问题#

如果我们要从互联网上请求 Live2D 模型资源,而非直接在网站上静态部署,则可能需要处理跨域请求:

window.Image = new Proxy(window.Image, {
construct: (target, args) => {
const img = new target(...args)
img.crossOrigin = 'anonymous'
return img
},
})

此处提供了一种暴力方法,给所有 <img> 添加 crossorigin='anonymous' .

给 Hugo 网站添加 Live2D 看板娘
https://misaka10987.github.io/posts/migrate/live2d-widget/
Author
misaka10987
Published at
2025-07-15
License
CC BY-NC-SA 4.0