• 👉Live2dLoader👈

⏩ 文章地址/示例博客 | ✔️ 仓库地址 | 👀 示例页面 欢迎提交 pr !

  • [x] 支持 live2d 所有版本的 web 渲染库
  • [x] 支持鼠标点击互动
  • [x] 2022.3.26 新增支持 [多模型] 异步加载 + 每日恒定随机模型 (每天更换自定义列表内随机模型,当日不再随刷新而替换)
  • [x] 2022.5.23 已支持模型号越界判定,自动缩小到给定范围
  • [x] 2022.6.28 鼠标穿透/防遮挡 + 支持眼球跟踪 + 模型缩放 API
  • [x] 2023.2.7 拖动功能已修复

分割线

如何添加

  • 必要的头文件: [1] [2]

    <script src="https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js"></script>
    <script src="https://cdn.jsdelivr.net/combine/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js,npm/pixi.js@6.5.2/dist/browser/pixi.min.js,npm/pixi-live2d-display/dist/index.min.js,gh/Weidows-projects/Live2dLoader/dist/Live2dLoader.min.js"></script>
  • 以及自定义的 js, 单个/多个模型都可以, 但只显示一个, 想要多个可以多 new 几个

    addEventListener("DOMContentLoaded", function () {
    let models = [
    {
    width: 1280,
    height: 768,
    left: "0px",
    bottom: "0px",
    role: "https://cdn.jsdelivr.net/gh/alg-wiki/AzurLaneL2DViewer@gh-pages/assets/bisimai_2/bisimai_2.model3.json",
    background: "",
    opacity: 1,
    mobile: false,
    draggable: true,
    },
    {
    width: 800,
    height: 600,
    right: "0px",
    bottom: "0px",
    role: "https://cdn.jsdelivr.net/gh/guansss/pixi-live2d-display/test/assets/shizuku/shizuku.model.json",
    background: "",
    opacity: 0.7,
    },
    ];
    new Live2dLoader(models);
    });

分割线

比如 Hexo

添加到主题的 _config.yml

js 代码可以写完参数后 压缩为一行,一起添加到下面;

当然也可以魔改框架源码,此处不再赘述.

inject:
head:
# - <link rel="stylesheet" href="/xxx.css">
- <script src="https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js"></script>
- <script src="https://cdn.jsdelivr.net/combine/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js,npm/pixi.js@6.5.2/dist/browser/pixi.min.js,npm/pixi-live2d-display/dist/index.min.js,gh/Weidows-projects/Live2dLoader/dist/Live2dLoader.min.js"></script>
bottom:
# - <script src="xxxx"></script>
- <script>addEventListener("DOMContentLoaded",function(){let models=[{width:1280,height:768,left:"0px",bottom:"0px",role:"https://cdn.jsdelivr.net/gh/alg-wiki/AzurLaneL2DViewer@gh-pages/assets/bisimai_2/bisimai_2.model3.json",background:"",opacity:1,mobile:false,draggable:true,},{width:800,height:600,right:"0px",bottom:"0px",role:"https://cdn.jsdelivr.net/gh/guansss/pixi-live2d-display/test/assets/shizuku/shizuku.model.json",background:"",opacity:0.7,},];new Live2dLoader(models)})</script>

分割线

可选参数

参数TypeDefaultDescription
width可选[Number]800宽度,单位为 px
height可选[Number]600长度,单位为 px
top,right,bottom,left可选[String]bottom: ‘0px’模型到浏览器各边框的距离。选择两个即可定位,如定位在左下角:left: ‘0px’ , bottom: ‘0px’
role必须[String]“”角色模型 xxx.model.json 文件 URL
alg-wiki/AzurLaneL2DViewer
imuncle/live2d
background可选[String]“”背景图片,可填入图片外链
opacity可选[Number]1模型透明度,(0,1] 取值
mobile可选[boolean]false移动端(手机)是否显示
scale可选[Number]0.1模型缩放比例,(0,1] 取值
draggable可选[boolean]false是否允许拖动
pierceThrough可选[boolean]true是否开启鼠标穿透

分割线

调用结构

Live2dLoader(config)
-> Live2dLoader.min.js
-> PIXI.min.js (canvas-app)
-> index.min.js (live2d-model, cubism2 + cubism3/4)
-> live2dcubismcore.min.js (cubism3/4)
-> live2d.min.js (cubism2, 旧版模型需要)

分割线

Q-A

模型问题报错

  • 关于报错含有 reading ‘_ptr’ 的, 是模型不适配问题 (#2)

    live2dcubismcore.min.js:1
    Uncaught TypeError: Cannot read properties of null (reading ‘_ptr’)
    at new Model (live2dcubismcore.min.js:1:138485)
    at Function.Model.fromMoc (live2dcubismcore.min.js:1:138707)
    at l2d.js💯60
    at t.value (mini-signals.js:93:1)
    at e.t._onComplete (Loader.js:568:1)
    at Loader.js:608:1
    at s (async.js:27:1)
    at e. (interactiveTarget.js:82:5)
    at Loader.js:590:1
    at async.js:35:1

    检验过并不是配置文件哪里有问题, 单纯是二进制模型 .png/.moc3 问题, 想修复的话要修复模型

    already fixed now.


怎么刷新


模型大小问题

对于评论中提到的模型显示太小, 现在可以设置 scale 参数来解决了

分割线

借物表

项目原版基于AzurLaneL2DViewer修改, 后完全重构 API 到guansss/pixi-live2d-display

[1]: https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js (license 规定不可再分发)

[2]: live2dcubismcore_v2: https://cdn.jsdelivr.net/gh/dylanNew/live2d/webgl/Live2D/lib/live2d.min.js

[3]: 再见 Z16,Hi Laffey! || 陈 YF の博客( ̄ ▽  ̄)"

Star History Chart