Live2D看板娘 - 好玩的二次元Html5页面Toys插件
本项目分为前端和后端API两部分,分为live2d_demo、live2d_api两个项目,展现效果如图。

Live2D API
项目地址:https://github.com/fghrsh/live2d_api
Live2D 看板娘插件 (https://www.fghrsh.net/post/123.html) 上使用的后端 API
特性
- 原生 PHP 开发,无需伪静态,开箱即用
- 支持 模型、皮肤 的 顺序切换 和 随机切换
- 支持 单模型 单皮肤 切换、多组皮肤 递归穷举
- 支持 同分组 多个模型 或 多个路径 的 加载切换
使用
环境要求
- PHP 版本 >= 5.2
- 依赖 PHP 扩展:json
目录结构
│ model_list.json // 模型列表
│
├─model // 模型路径
│ └─GroupName // 模组分组
│ └─ModelName // 模型名称
│
├─add // 更新皮肤列表
├─get // 获取模型配置
├─rand // 随机切换模型
├─rand_textures // 随机切换皮肤
├─switch // 顺序切换模型
├─switch_textures // 顺序切换皮肤
└─tools
modelList.php // 列出模型列表
modelTextures.php // 列出皮肤列表
name-to-lower.php // 文件名格式化
添加模型
- 单模型 单皮肤 切换
- 单次加载只输出一个皮肤
- 皮肤放在
textures文件夹,自动识别
│ index.json
│ model.moc
│ textures.cache // 皮肤列表缓存,自动生成
│
├─motions
│ idle_01.mtn
│ idle_02.mtn
│ idle_03.mtn
│
└─textures
default-costume.png
school-costume.png
winter-costume.png
- 单模型 多组皮肤 递归穷举
- 多组皮肤 组合模型、穷举组合
- 皮肤文件夹按
texture_XX命名 - 添加
textures_order.json列出组合
│ index.json
│ model.moc
│ textures.cache
│ textures_order.json
│
├─motions
│ idle_01.mtn
│ idle_02.mtn
│ idle_03.mtn
│
├─texture_00
│ 00.png
│
├─texture_01
│ 00.png
│ 01.png
│ 02.png
│
├─texture_02
│ 00.png
│ 01.png
│ 02.png
│
└─texture_03
00.png
01.png
textures_order.json
[
["texture_00"],
["texture_01","texture_02"],
["texture_03"]
]
textures.cache
[
["texture_00/00.png","texture_01/00.png","texture_02/00.png","texture_03/00.png"],
["texture_00/00.png","texture_01/00.png","texture_02/00.png","texture_03/01.png"],
["texture_00/00.png","texture_01/01.png","texture_02/01.png","texture_03/00.png"],
["texture_00/00.png","texture_01/01.png","texture_02/01.png","texture_03/01.png"],
["texture_00/00.png","texture_01/02.png","texture_02/02.png","texture_03/00.png"],
["texture_00/00.png","texture_01/02.png","texture_02/02.png","texture_03/01.png"]
]
- 同分组 多个模型 或 多个路径 切换
- 修改
model_list.json添加多个模型
- 修改
│ ├─model │ ├─Group1 │ │ ├─Model1 │ │ │ index.json │ │ │ │ │ └─Model2 │ │ index.json │ │ │ ├─Group2 │ │ └─Model1 │ │ index.json │ │ │ └─GroupName │ └─ModelName │ │ index.json │ │ model.moc │ │ │ ├─motions │ └─textures │
model_list.json
{
"models": [
"GroupName/ModelName",
[
"Group1/Model1",
"Group1/Model2",
"Group2/Model1"
]
],
"messages": [
"Example 1",
"Example 2"
]
}
接口用法
/add/- 检测 新增皮肤 并更新 缓存列表/get/?id=1-23获取 分组 1 的 第 23 号 皮肤/rand/?id=1根据 上一分组 随机切换/switch/?id=1根据 上一分组 顺序切换/rand_textures/?id=1-23根据 上一皮肤 随机切换 同分组其他皮肤/switch_textures/?id=1-23根据 上一皮肤 顺序切换 同分组其他皮肤
版权声明
(>▽<) 都看到这了,点个 Star 吧 ~
API 内所有模型 版权均属于原作者,仅供研究学习,不得用于商业用途
Live2D demo
项目地址:https://github.com/fghrsh/live2d_demo
Live2D 看板娘插件 (https://www.fghrsh.net/post/123.html) 的前端 HTML 源码
特性
- 基于 API 加载模型,支持 定制 提示语
- 增加 参数设置 一键定制看板娘,易用性++
- 增加 看板娘样式设置,可直接设置宽高度等
- 支持多种一言接口,基于 JQuery UI 实现拖拽
使用
目录结构
│ demo1-default.html // 常规引用 Demo
│ demo2-autoload.html // autoload.js Demo
│ demo3-waifu-tips.html // 内置 waifu-tips Demo
│
└─assets
autoload.js // 自动异步加载
flat-ui-icons-regular.eot // Flat UI 字体
flat-ui-icons-regular.svg // Flat UI 字体
flat-ui-icons-regular.ttf // Flat UI 字体
flat-ui-icons-regular.woff // Flat UI 字体
live2d.js // Live2D 核心
waifu-tips.js // Live2D 看板娘 扩展
waifu-tips.json // Live2D 看板娘 提示语
waifu.css // Live2D 看板娘 样式表
食用方法
-
依赖类库
- JQuery (
waifu-tips.js) - JQuery UI (仅实现 拖拽效果 需要)
- JQuery (
-
常规方式引入
- 在
</head>前引入waifu.css样式表 - 在
</body>前引入waifu-tips.js和live2d.js - 在
</body>前插入 初始化 JS,可在 初始化前 设置参数
- 在
<html>
<head>
· · · · · ·
<link rel="stylesheet" type="text/css" href="https://www.example.com/path/to/waifu.css"/>
</head>
<body>
· · · · · ·
<div class="waifu">
<div class="waifu-tips"></div>
<canvas id="live2d" class="live2d"></canvas>
<div class="waifu-tool">
<span class="fui-home"></span>
<span class="fui-chat"></span>
<span class="fui-eye"></span>
<span class="fui-user"></span>
<span class="fui-photo"></span>
<span class="fui-info-circle"></span>
<span class="fui-cross"></span>
</div>
</div>
<script src="path/to/waifu-tips.js"></script>
<script src="path/to/live2d.js"></script>
<script type="text/javascript">
live2d_settings['modelId'] = 1;
live2d_settings['modelTexturesId'] = 87;
initModel("https://www.example.com/path/to/waifu-tips.json")
</script>
</body>
</html>
- autoload.js 引入
- 在
</body>前引入autoload.js - 修改
autoload.js文件路径,可在 初始化前 设置参数
- 在
· · · · · ·
<script src="path/to/autoload.js"></script>
</body>
</html>
try {
· · · · · ·
live2d_settings['modelId'] = 1;
live2d_settings['modelTexturesId'] = 87;
initModel('https://www.example.com/path/to/waifu-tips.json');
} catch(err) { console.log('[Error] JQuery is not defined.') }
- 定制属于你的看板娘
- 修改
waifu-tips.js顶部的设置参数 (或初始化前设置 - 修改
waifu-tips.json,定制看板娘提示语,打造专属看板娘
- 修改
设置参数
Tips: waifu-tips.js 已自带默认参数,如无特殊要求可跳过
-
后端接口
-
live2d_settings['modelAPI']
看板娘 API 地址,默认值'//live2d.fghrsh.net/api/' -
live2d_settings['tipsMessage']
提示语读取路径,默认值'waifu-tips.json'(一般在initModel时指定) -
live2d_settings['hitokotoAPI']
一言 API 接口,可选'lwl12.com','hitokoto.cn','jinrishici.com'(古诗词)
-
-
默认模型
-
live2d_settings['modelId']
默认模型(分组) ID,可在 Demo 页[F12]呼出控制台(Console)找到 -
live2d_settings['modelTexturesId']
默认材质(模型) ID,可在 Demo 页[F12]呼出控制台(Console)找到
-
-
工具栏设置
live2d_settings['showToolMenu'], 显示工具栏,true|falselive2d_settings['canCloseLive2d'], 关闭看板娘 按钮,true|falselive2d_settings['canSwitchModel'], 切换模型 按钮,true|falselive2d_settings['canSwitchTextures'], 切换材质 按钮,true|falselive2d_settings['canSwitchHitokoto'], 切换一言 按钮,true|falselive2d_settings['canTakeScreenshot'], 看板娘截图 按钮,true|falselive2d_settings['canTurnToHomePage'], 返回首页 按钮,true|falselive2d_settings['canTurnToAboutPage'],跳转关于页 按钮,true|false
-
模型切换模式
live2d_settings['modelStorage'],记录 ID (刷新后恢复),true|falselive2d_settings['modelRandMode'],模型切换,可选'rand'(随机) |'switch'(顺序)live2d_settings['modelTexturesRandMode'],材质切换,可选'rand'|'switch'
-
提示消息选项
live2d_settings['showHitokoto'],空闲时一言,true|falselive2d_settings['showF12Status'],控制台显示加载状态,true|falselive2d_settings['showF12Message'],提示消息输出到控制台,true|falselive2d_settings['showF12OpenMsg'],控制台被打开触发提醒,true|falselive2d_settings['showCopyMessage'],内容被复制触发提醒,true|falselive2d_settings['showWelcomeMessage'],进入面页时显示欢迎语,true|false
-
看板娘样式设置
-
live2d_settings['waifuSize'],看板娘大小,例如'280x250','600x535' -
live2d_settings['waifuTipsSize'],提示框大小,例如'250x70','570x150' -
live2d_settings['waifuFontSize'],提示框字体,例如'12px','30px' -
live2d_settings['waifuToolFont'],工具栏字体,例如'14px','36px' -
live2d_settings['waifuToolLine'],工具栏行高,例如'20px','36px' -
live2d_settings['waifuToolTop'],工具栏顶部边距,例如'0px','-60px' -
live2d_settings['waifuMinWidth']
面页小于 指定宽度 隐藏看板娘,例如'disable'(停用),'768px' -
live2d_settings['waifuEdgeSide']
看板娘贴边方向,例如'left:0'(靠左 0px),'right:30'(靠右 30px) -
live2d_settings['waifuDraggable']
拖拽样式,可选'disable'(禁用),'axis-x'(只能水平拖拽),'unlimited'(自由拖拽) -
live2d_settings['waifuDraggableRevert'],松开鼠标还原拖拽位置,true|false
-
-
其他杂项设置
live2d_settings['l2dVersion'],当前版本 (无需修改)live2d_settings['l2dVerDate'],更新日期 (无需修改)live2d_settings['homePageUrl'],首页地址,可选'auto'(自动),'{URL 网址}'live2d_settings['aboutPageUrl'],关于页地址,'{URL 网址}'live2d_settings['screenshotCaptureName'],看板娘截图文件名,例如'live2d.png'
定制提示语
Tips: waifu-tips.json 已自带默认提示语,如无特殊要求可跳过
"waifu"系统提示"console_open_msg"控制台被打开提醒(支持多句随机)"copy_message"内容被复制触发提醒(支持多句随机)"screenshot_message"看板娘截图提示语(支持多句随机)"hidden_message"看板娘隐藏提示语(支持多句随机)"load_rand_textures"随机材质提示语(暂不支持多句)"hour_tips"时间段欢迎语(支持多句随机)"referrer_message"请求来源欢迎语(不支持多句)"referrer_hostname"请求来源自定义名称(根据 host,支持多句随机)"model_message"模型切换欢迎语(根据模型 ID,支持多句随机)"hitokoto_api_message",一言 API 输出模板(不支持多句随机)
"mouseover"鼠标触发提示(根据 CSS 选择器,支持多句随机)"click"鼠标点击触发提示(根据 CSS 选择器,支持多句随机)"seasons"节日提示(日期段,支持多句随机)