两款开箱即用的Live2d

news2024/11/16 9:29:51

目录

  • 背景
  • 第一款:开箱即用的Live2d
    • 在vue项目中使用
    • html页面使用
    • 在线预览
    • 依赖文件地址配置
    • 相关参数
    • 成员属性
    • 源码 + 模型下载
  • 第二款:换装模型超多的Live2d
    • 在线预览
    • 代码示例
    • 源码 + 模型下载

背景

从第一次使用服务器建站已经三年多了,记得那是在2019年底,2020年初,记得服务器是在2019年的双十一第一次买的阿里云的新人服务器。那时候我刚刚大三上半学期结束,放寒假了在家,开始折腾起来第一次搭建网站。由于之前一直使用的CSDN记录学习笔记,当时想的是搭建一个属于自己的博客网站,自己的“另一个世界”。再后来就是通过探索,折腾起Wordpress,第一个用的博客主题是Kratos。当然在搭建网站的时候很有趣的一点是看到别人的个人网站上都有一个自己网站的小人,原名Live2d,被称为看板娘,所以这篇博客是来分享我最新收集的两款超酷的Live2d和使用经历。

我博客最初的样子:
1692596220769.jpeg

之前也有两次分享过Live2d的使用:
Live2D使用分享:https://qkongtao.cn/?p=312
Live2D——血小板:https://qkongtao.cn/?p=465

第一款:开箱即用的Live2d

作者网站是:https://kuangyx.cn/

你可能注意到网站右下角的Live2d人物了,对此我对Live2d做了类封装几行代码就能实现网站加载Live2d人物。该库包含了live2dlive2d_3的模型。

在vue项目中使用

  1. 安装
npm i @tomiaa/live2d
  1. 在vue文件中引入
<template>
  <div class="hello">
    <div ref="live2dContentRef" id="live2d"></div>
  </div>
</template>

<script>
import { Live2d } from "@tomiaa/live2d";
export default {
  name: "Live2d",
  mounted() {
    new Live2d({
      el: document.getElementById("live2d"),
      showLoading: false,
      maxWidth: 300,
      jsBaseURL: "https://live2d.kuangyx.cn/public",
    });
  },
};
</script>
<style scoped>
</style>

html页面使用

由于作者提供的是开箱即用的npm资源包@tomiaa/live2d,不便于在其他项目中直接使用,因此我将他重新打包成js和css文件,在html页面中可以直接引入即可。

<link href="http://code.qkongtao.cn/cool-effect/live2d/vue_live2d/static/css/app.css" rel="stylesheet">
<script src="http://code.qkongtao.cn/cool-effect/live2d/vue_live2d/static/js/app.js"></script>

两个资源文件下载:https://gitee.com/qkongtao/live2d_vue/tree/master/vue_live2d/dist/static

使用示例:

<!DOCTYPE html>
<html lang="">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="icon" href="favicon.png">
    <title>vue_live2d</title>
    <link href="http://code.qkongtao.cn/cool-effect/live2d/vue_live2d/static/css/app.css" rel="stylesheet">
</head>

<body><noscript><strong>We're sorry but vue_live2d doesn't work properly without JavaScript enabled. Please enable it to
            continue.</strong></noscript>
    <div id="app"></div>
    <script>
        // 设置参数
        var Live2d = {
            showLoading: false,
            maxWidth: 300,
            jsBaseURL: "https://live2d.kuangyx.cn/public",
        }
    </script>
    <script src="http://code.qkongtao.cn/cool-effect/live2d/vue_live2d/static/js/app.js"></script>
</body>

</html>

打开效果:
20230821-140259-fb.png

在线预览

http://code.qkongtao.cn/cool-effect/live2d/vue_live2d/

依赖文件地址配置

依赖文件的地址文件IP都在github,下面参数主要考虑到国内经常被墙,可以使用下面参数使用其他服务器地址。

  • jsBaseURL:配置依赖的js文件baseURL地址目录,默认加载的https://github.com/tomiaa12/live2d/tree/main/public下的js文件,修改后需要保证该目录下也应该存在同样的文件。
  • live2d_2_ModelBaseURL: live2d模型的baseURL地址目录,默认使用jsBaseURL参数。
  • live2d_3_ModelBaseURL: live2d_3模型的baseURL地址目录,默认使用jsBaseURL参数。

相关参数

属性说明类型默认值
el容器 querySelector 选择器或 domstring | DOM 元素#live2d
jsBaseURL配置依赖的js文件baseURL地址目录stringtomiaa12.github.io/live2d/public
live2d_2_ModelBaseURLlive2d 模型地址目录string默认使用 jsBaseURL
live2d_3_ModelBaseURLlive2d_3 模型地址目录string默认使用 jsBaseURL
loadLive2d_2是否加载 live2d_2 模型列表booleantrue
loadLive2d_3是否加载 live2d_3 模型列表booleantrue
playLoadingAnimation加载模型之后是否播放登场(login)动画,只有存在login动画才有效booleantrue
showLoading显示加载模型 loadingbooleantrue
showControl显示控制栏booleantrue
iApplicationOptionsPIXI.Application 配置IApplicationOptions{}
maxWidth容器最大宽度number400
minWidth容器最小宽度number200
aspectRatio默认宽高比[number,number][10,9]
beforeInit初始化之前(data: {
options:Live2dOptions
modelList: ModelOption[]
})=> void
afterInit初始化完成(data: {
options: Live2dOptions
modelList: ModelOption[]
currentModelOption: ModelOption
Live2DModel: typeof Live2DModelType
app: Application
}) => void
randomPeople人物随机booleantrue
allowDrag允许拖动booleantrue
hitokoto是否开启 hitokoto 一言booleantrue
hitokotoOptions一言配置HitokotoOptions

成员属性

属性名说明类型默认值
options构造器配置Live2dOptions参考上一标题默认值
eldom 容器any
canvascanvas 容器any
Live2DModel模型加载模块typeof Live2DModelType
apppixi.js 应用Application
loading加载loadingbooleanfalse
model当前模型InstanceType<typeof Live2DModelType>
modelList模型列表ModelOption[][]
currentModelOption当前模型配置ModelOption
personIndex模型下标number0
clothingIndex服装下标number0
elLoadingloading dom 元素any
elControlcontrol dom 元素any
elSwitchPerson切换人物 dom 元素any
elSwitchClothing切换服装 dom 元素any
elHitokoto一言 dom 元素any
hitokoto一言Hitokoto

源码 + 模型下载

https://gitee.com/qkongtao/live2d_vue

第二款:换装模型超多的Live2d

在线预览

https://qkongtao.gitee.io/live2d-widget/

20230821-143204-Cs.png

代码示例

<!DOCTYPE html>
<html lang="en">

<head>
    <!-- 基础信息 -->
    <meta charset="utf-8">
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta name="renderer" content="webkit" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="force-rendering" content="webkit" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="qkongtao.cn">
    <meta name="keywords" content="qkongtao.cn">
    <meta name="author" content="qkongtao.cn">
    <link rel="icon" href="http://qiniu.qkongtao.cn/2021/08/header.png" sizes="192x192" />
    <title>live2D演示</title>
</head>

<body>



    <!--FOOTER_CODE_END-->
    <script type="text/javascript">
        // live2d_path 参数建议使用绝对路径
        // const live2d_path = "./live2d-widget/";
        const live2d_path = "https://code.haiyong.site/live2d-widget/";

        // 封装异步加载资源的方法
        function loadExternalResource(url, type) {
            return new Promise((resolve, reject) => {
                let tag;

                if (type === "css") {
                    tag = document.createElement("link");
                    tag.rel = "stylesheet";
                    tag.href = url;
                } else if (type === "js") {
                    tag = document.createElement("script");
                    tag.src = url;
                }
                if (tag) {
                    tag.onload = () => resolve(url);
                    tag.onerror = () => reject(url);
                    document.head.appendChild(tag);
                }
            });
        }

        // 加载 waifu.css live2d.min.js waifu-tips.js
        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(() => {
                // 配置选项的具体用法见 README.md
                initWidget({
                    waifuPath: live2d_path + "waifu-tips.json",
                    cdnPath: "https://npm.elemecdn.com/akilar-live2dapi@latest/",
                    // cdnPath: "./live2d_api-1.0.8/",
                    // tools: ["hitokoto", "asteroids", "switch-model", "switch-texture", "photo", "info", "quit"
                    tools: ["hitokoto", "switch-model", "switch-texture", "photo", "quit"]
                });
            });
        }
    </script>

</body>
</html>

项目目录结构:
20230821-145120-15.png

自己使用的时候可以根据自己的需求将资源和模型文件放在服务器或者cdn上。

或者新建一个html文件,直接使用上面代码即可。

源码 + 模型下载

https://gitee.com/qkongtao/live2d-widget

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/907027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

App Tamer for Mac CPU智能控制管理

App Tamer是一款针对 macOS 平台的软件&#xff0c;它可以帮助用户有效地管理和控制正在运行的应用程序。通过优化 CPU 使用率&#xff0c;减少电池消耗和降低系统负载&#xff0c;App Tamer 提供了更加流畅和高效的计算体验。 App Tamer 的主要特点包括&#xff1a; 智能控制&…

HttpRunner接口自动化框架搭建,干货满满!

前言 除了前面讲述的unittest、pytest等等自动化框架外&#xff0c;HttpRunner也是当前流行自动化框架之一。 一、先简单来介绍下httprunner框架 1、它是面向HTTP协议的测试框架&#xff0c;独立于语言之外&#xff0c;无需编写代码脚本&#xff0c;只需要去维护yaml/json文…

【分布式共识】Multi-Paxos 算法思想

上一篇文章主要聊了Basic Paxos算法&#xff0c;而Multi-Paxos并不是一种算法&#xff0c;是一种算法思想。具体就是Basic Paxos解决的是对一个值达成共识。而后者是通过执行多次的Basic Paxos算法就多个值达成一致。具体的落地实现有Raft。 Muti-Paxos的问题 在Basic Paxos中…

为什么要建设校园气象站?

为什么要建设校园气象站&#xff1f;这是因为校园气象站不仅是气象观测工具&#xff0c;也可以作为气象教学仪器。校园气象站是由温度传感器、湿度传感器、大气压力传感器、二氧化碳传感器、风速传感器、风向传感器、雨量计等共同组成&#xff0c;它们会将看不见摸不着的各种气…

pdf太大怎么压缩大小?这样压缩文件很简单

工作和学习中&#xff0c;用到PDF文件的机会还是比较多的&#xff0c;但有时候PDF文件过大会给我们带来困扰&#xff0c;比如上传PDF文件时会因超出系统大小导致无法上传&#xff0c;这时候简单的解决方法就是压缩PDF文件&#xff0c;下面就来看看具体的操作方法吧~ 方法一&…

Codeforces EDU 151 Div.2

文章目录 A. Forbidden IntegerB. Come TogetherC. Strong PasswordD. Rating SystemE. Boxes and Balls A. Forbidden Integer Problem - A - Codeforces 给定整数n&#xff0c;从1~k中选择除了x的数&#xff0c;使这些数之和为n&#xff0c;每个数可以选择无限次 爆搜&…

回溯算法详解

目录 回溯算法详解 回溯VS递归 回溯算法的实现过程 n个结点构造多本节要讨论的是当给定 n&#xff08;n>0&#xff09;个结点时&#xff0c;可以构建多少种形态不同的树。 回溯算法详解 回溯算法&#xff0c;又称为“试探法”。解决问题时&#xff0c;每进行一步&#…

港联证券|集合竞价涨停马上又取消什么意思?

【科创板上市公司掀罕见回购潮】近来科创板上市公司董事长、实控人提议回购潮涌。Wind数据显现&#xff0c;今年以来&#xff0c;除掉定向回购&#xff0c;A股共有240家上市公司发表回购方案。其中&#xff0c;8月16日晚至20日晚&#xff0c;共有40家科创板上市公司董事长、实控…

Java 实现证件照底图替换,Java 实现照片头像底图替换

效果图 这里前端用layui实现的案例截图 color底图颜色可以在网页上这样取色 new Color(34, 133, 255) 实现案例下载链接&#xff1a;https://download.csdn.net/download/weixin_43992507/88237432

浅谈中压系统母线弧光保护的必要性-安科瑞黄安南

摘要&#xff1a;本文介绍了中低压开关柜内部发生电弧故障的原因、危害以及弧光保护在中压母线保护中的原理、用途、应用关键点&#xff0c;同时还介绍了弧光保护应用现状&#xff0c;探讨了无线测温在线监测系统在实际工作场景中的应用案例&#xff0c;证明了其在电力监控方面…

了解扩散概率模型 (DPM)

一、介绍 对复杂的概率分布进行建模是机器学习的核心问题。如果这个问题可以出现在不同的形状下&#xff0c;最常见的设置之一如下&#xff1a;给定仅由一些可用样本描述的复杂概率分布&#xff0c;如何生成新样本&#xff1f; 所有生成模型都依赖于相同的基本思想&#xff0c;…

基于PyQt+mysql图书管理系统

1 需求分析 针对图书馆的图书管理系统数据库设计&#xff0c;分别对图书馆的读者、一般工作人员和部门负责人进行详细地分析&#xff0c;总结出如下的需求信息: &#xff08;1&#xff09;图书馆中的图书具有书号、书名、作者、馆藏册数、在馆册数、价格、出版社及摘要等必要信…

AMEYA360:芯力特SIT1043Q CAN FD收发器振铃抑制功能实现原理及实际应用

01、SIT1043Q CAN收发器 振铃抑制功能简述 随着新能源汽车与自动驾驶技术的深入发展&#xff0c;CAN通信的速率从基础的125kbps速率提升到目前8Mbps速率的应用&#xff0c;通信速率越高对CAN收发器差分信号的质量要求越来越高。芯力特研发工程师在SIT1043Q芯片中内置振铃抑制电…

PSP - 基于 OpenFold 训练的 Finetuning 模型与推理逻辑评估

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132410296 AlphaFold2 以其能够以极高的准确度预测蛋白质结构的能力&#xff0c;彻底改变了结构生物学。然而&#xff0c;AlphaFold2 的实现&…

Qt开发环境安装(版本5.14.2)

1.Qt下载 下载地址&#xff1a;https://download.qt.io/archive/qt/ 界面如下&#xff1a; 因为从qt 5.15开始&#xff0c;qt不再提供安装包&#xff0c;需要自行编译。本次我们选择5.14.2进行操作。 我们是在windows下安装&#xff0c;所以选择windows版本进行下载 下载完成…

使用 ChatGPT 的代码解释器进行数据科学的 5 种方法

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 通过代码解释器集成&#xff0c;ChatGPT 现在可以在沙盒环境中编写和执行 Python 代码&#xff0c;以提供更准确和精确的答案。这允许它通过代码执行&#xff08;而不仅仅是文本预测&#xff09;执行复…

sdk manager (ubuntu20.4) 安装

1、首先下载sdk manager 1.9.3 下载链接 https://www.baidu.com/link?urlVXJhUqxxhS3eFK3bOPTzi5LFl6ybeW3JwDY1CwANaPf1gvO3IxQKzY547NIe53x1blJxnAXg7FTRTvs-cnfnVa&wd&eqida22baa7b0004ca980000000664e2d426 当然要登录自己的账号才能成功下载&#xff0c;下载对应…

MyBatis-Plus 详解

文章目录 MyBatisPlus一、入门案例1.1 准备表结构和数据1.2 添加依赖1.3 yml 配置1.4 添加 Factor 实体1.5 创建Mapper接口1.6 创建Mapper.xml 文件1.7 测试操作1.8 日志输出 二、CRUD操作2.1 插入因子2.2 更新因子2.3 删除因子① 根据id删除② 批量删除③ 通过Map删除 2.4 查询…

系统架构合理性的思考 | 京东云技术团队

最近牵头在梳理部门的系统架构合理性&#xff0c;开始工作之前&#xff0c;我首先想到的是如何定义架构合理性&#xff1f; 从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。 基于以上的定义可以从以下三个方面来梳理评估&#xff1…

标签准备——labelIMG工具使用

当我们已经准备了大量用于图片标注所需的图片后,便需要使用labelIMG工具进行打标签的操作了。 1、标签规划 在我们开始打标签之前,首先需要注意的是,打标签是我们开展训练、识别工作的基础,我们需要准确最好标签的规划,明确都有哪些标签,并在venv/Lib/site-packages/la…