Git Product home page Git Product logo

plugin-live2d's Introduction

Live2d Plugin for Halo

Halo version Build Status Code Style: Prettier LICENSE MIT

难道不想为您的网站添加一只萌萌的看板娘吗?? (ノ≧∇≦)ノ |

简介

仅仅是一只可爱的看板娘哦!

注:本仓库仅提供基础渲染框架,不包含任何 Live2d 模型及其接口

下载及使用说明

  1. 前往 Github Release 下载 jar 包
  2. 通过 Halo-2.x 安装插件 功能安装本插件
  3. 打开网站,即可在左下角看到萌萌哒的看板娘哦~

功能介绍

  • 一只萌萌的看板娘,为网站增添一份活力
  • 基于 OpenAi 的对话交互功能【会思考的萌娘】
  • 一键换装、换肤
  • 支持一言功能
  • 小飞机游戏(把坏人全都打跑!)
  • 自定义看板娘接口
  • 支持外部自定义 TIPS 文件,更适合你的网站

自定义配置

此部分内容建议初步尝试过 Live2d 的用户观看。

自定义 Live2d 接口

若主题内置接口不满足用户使用,可以参考 live2d_api 自行开发接口。

之后修改 插件配置 -> 基本设置 -> Live2d 模型地址 即可。

自定义 TIPS 文件

TIPS文件 文件是一个 JSON 文件,其内容为 Live2d 消息框对用户各种事件的反馈。 例如当用户鼠标点击网页中的某个链接时,Live2d 的消息框就会呈现出各种各样的文本。而这个绑定事件就是通过 TIPS 文件来处理的。

因此可以说,TIPS 文件与所用主题强绑定甚至需要用户高度自定义。

默认的 TIPS 保证了用户的基础使用,但如果想丰富 Live2d,那么就需要自定义 TIPS 文件。本插件提供了多种方式自定义 TIPS。

TIPS 文件格式

{
  "mouseover": [                 // 鼠标移动事件
    "selector": "#live2d",       // css 选择器
    "text": []                   // Live2d 消息框显示内容。为数组则随机选择一条显示
  ],
  "click": [                     // 鼠标点击事件
    "selector": "#live2d",       // css 选择器
    "text": []                   // Live2d 消息框显示内容。为数组则随机选择一条显示
  ],
  "seasons": [                   // 日期事件,当前日期处于目标日期或目标区间内,则进行显示
    "date": "09/10",             // 日期或日期区间。区间使用 - 区分
    "text": []                   // Live2d 消息框显示内容。为数组则随机选择一条显示
  ],
  "time": [                      // 时间事件,到每日固定的时间则进行提示
    "hour": "6-7",               // 时间,小时为单位,需要为区间,例如 6-7 代表 6 点到 7 点之间
    "text": []                   // Live2d 消息框显示内容。为数组则随机选择一条显示
  ],
  "message": {                   // 固定消息,通常代表特定事件
    "default": [],               // 页面空闲时显示的消息
    "console": [],               // 打开控制台时显示的消息
    "copy": [],                  // 复制内容时显示的消息
    "visibilitychange": []       // 多标签页,从其他标签页返回当前标签页时显示的消息
  }
}

1. 使用主题提供的 TIPS 文件(推荐)

此功能属于为主题开发者定制。如果用户使用某款主题,但它并未支持此 TIPS 文件,不如向主题作者提交一个 ISSUE 吧!!!

由于 Live2d 的 TIPS 通常需要使用 css 选择器来进行鼠标定位,因此将 TIPS 文件交由主题来适配是最好的方式。

  1. 主题开发者可以参考 主题 TIPS 文件 文件来编写适配自己主题的 TIPS 文件。
  2. 将 json 文件命名为 tips.json 并放置在主题静态目录 /assert/live2d/ 目录下

live2d 渲染页面时将自动读取当前启用主题下的文件。

注:主题所适配的 TIPS 只支持 mouseover 及 click 属性,主题提供的 TIPS 文件若与默认 TIPS 文件 css 选择器冲突,则以主题提供的为主

2. 使用插件配置单独制定 TIPS

当主题开发者未适配 Live2d 或者用户觉得其不太符合自己需求,那么可以使用插件内置的配置文件单独定制 TIPS 文件。

使用 Halo 后台 插件设置 -> 事件及提示语绑定 -> 选择器提示语 添加自己想要的提示语。

注:插件设置的 css 选择器与主题或默认的 TIPS 文件冲突时,将以插件设置的为准

3. 全量自定义 TIPS 文件

当用户想完全自定义 TIPS 文件或者上述两种方式不满足用户的需求,例如想更改 seasons, time, message 属性时,可以采用此种方式。

  1. 用户可以参照 默认 TIPS 文件 或者按照 自定义TIPS文件 中的 TIPS 文件格式来编写 TIPS 文件。
  2. 使用 Halo 后台 插件设置 -> 事件及提示语绑定 -> 自定义提示语文件,更改对应的文件即可。

小提示: 可以将文件上传到 Halo 附件内,再进行选择!

img.png

需要特别注意的是,一旦用户指定了此 TIPS 文件,那么默认的 TIPS 文件将不再生效(除非当前文件加载失败,此时会回退使用默认的 TIPS 文件),因此建议自定义时将属性设置完整

鸣谢

赞助

如果您喜欢我的插件,可以考虑资助一下~ 您的支持将是我继续进行开源的动力。


微信

支付宝

欢迎其他各种形式的捐助!

许可证

plugin-live2d © LIlGG,基于 MIT 许可证发行。

本仓库所使用的接口等版权均属原作者,仅供研究学习,不得用于商业用途,请善待接口。

作者及其贡献者共有版权 (帮助维护列表

lixingyong.com · GitHub @LIlGG

希望你喜欢!

Alt

plugin-live2d's People

Contributors

ikechan8370 avatar lilgg avatar ruibaby avatar stars-one avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

plugin-live2d's Issues

希望增加优先后台配置模型id和纹理id

我修改了模型id和材质的id,但是实际上页面加载js控制台里的url还是固定为1-53

image

接口地址我是换成了https://live2d.fghrsh.net/api/

清除缓存都试过了,没有效果

2.10版本 插件1.1.3 类加载错误

场景:halo 2.8 导出备份(用的是live2d 1.1.3 对话无问题),删除2.8 容器,重新下载2.10 docker安装部署,启动后导入2.8的备份。看板娘开启对话,首页和看板娘对话,后台报错,看起来应该是类加载器冲突
image
image
image

OpenAI无法设置

OpenAI设置开启后会变成如图这样
image
卸载重装依旧是这样

调整样式,解决重叠问题

目前 Live2d 的堆叠高度设置的过高,需要调整为正常值。
理论上, Live2d 能够被原页面的所有内容遮挡,但通常又需要在原内容的文章列表上,根据主题不同,这个堆叠高度也会不同。因此最好的解决办法是提供一个设置让用户自行适配。

例如目前会遮挡住背景音乐等按钮。

image

一些建议!

1.在使用看板娘的时候,发现对话一长就会遮挡,希望大大能够优化。
2.看版娘的形象会变化,但有时候我特别钟情某一个但并不知道怎么固定。我注意到插件设置里面可以设置,但并不知道它的编号是多少,希望能够出一个形象表格之类的。
感谢大大的看板娘!!
她真的很有活力!!
微信图片_20230708092315

改变看板娘的显示位置

在接下来的计划中请求添加功能:可以自定义看板娘位于页面左边或者右边
因为现在好像只能靠左展示,会遮挡部分网页元素

使用自定义元素改写前端代码

当前采用的方式,是直接将 HTML 代码嵌入到了主题内。这样会受到主题原有的样式影响,导致 live2d 样式变形。
因此使用自定义元素改写 Live2d 是最好的做法。尽量保证先有代码不变更。

对接 OpenAI 接口,实现对话功能

用户在插件设置中配置 API key 及预置的一些设定和 prompt 等信息,在主题端的虚拟形象上提供对话交互的能力。

参考效果:
image

AI对话接入ChatGLM2

接口示例:
curl -X POST "http://127.0.0.1:8000"
-H 'Content-Type: application/json'
-d '{"prompt": "你好", "history": []}'

响应:
{
"response":"你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。",
"history":[["你好","你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。"]],
"status":200,
"time":"2023-03-23 21:38:40"
}

升级至 2.10.0 之后,插件会导致报错

升级 2.10.0 之后,使用此插件会导致 Halo 报错,报错信息如下所示:

Caused by: java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.ObjectNode cannot be cast to class com.fasterxml.jackson.databind.JsonNode (com.fasterxml.jackson.databind.node.ObjectNode is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @87aac27; com.fasterxml.jackson.databind.JsonNode is in unnamed module of loader org.pf4j.PluginClassLoader @742ba594)
	at java.base/java.lang.Iterable.forEach(Unknown Source) ~[na:na]

无法响应鼠标移入事件

我安装看板娘插件后,自己配置了鼠标移入的响应事件。但是鼠标移入至/tags 或者 /categories 时,没有做出相关的响应。/about 页面的响应是正常的,是和主题不兼容吗?我使用的主题是 sakura

看板娘接入gpt3.5文字显示不全,非样式问题

版本1.12
自己添加了简单的样式 避免文字被人物遮挡

<style> #live2d-tips{ bottom: 360px; opacity: 1 !important; transition: opacity .2s !important; background-color: rgba(236, 217, 188, .8) !important; } </style>

查看dom非样式问题
如下图
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.