当前位置: 首页 > news >正文

Vue+live2d实现虚拟人物互动(一次体验叙述)

目录

故事的开头:

最终的实现效果:

实现步骤:

第一步:下载重要文件

第二步:创建vue项目文件,将刚下载文件拷贝到public目录下

第三步:在index.html文件中引入js

第四步:使用,去创建人物

初步用法

基础用法

人物模型替换

高级用法(只有一些模型提供)

事件监听

显示对话框

完整代码:

参考文章:

结语:


故事的开头:

故事的开头是这样的,因为有一个模块是做类似文心一言那样的界面,但是我感觉这样有点太单调了,突发奇想就有了这样的对话(如下图)。

 很显然,最开始这样的想法比较不切合实际(因为我们都只是个大二学生),文本转语音这个很容易,我早在这个想法提出前就已经利用百度的api给做好了,但是要在web端的页面去实现出一个虚拟人物,这未免有点太过于扯蛋了。但是,既然想法已经有了,就只放在哪里不去试试吗?很显然,我并不是这样的人,在这一天,我去广泛的查询了csdn,掘金以及知乎甚至b站都去查找了。最终终于摸索出来了一个开源的别人写好了的东西!!!既然感觉没问题了,那就尝试下页面的大致思路(如下图) 

画的比较丑,毕竟当时只是急匆匆去做一个大概想法。 

最终的实现效果:

拿来测试

实现步骤:

第一步:下载重要文件

首先我们需要去下载点live2d以及人物模型的配置

live2d看板娘资源文件_html看板娘资源-CSDN文库

下载好后是这样的:

解压后这个文件夹里面是这样的:

第二步:创建vue项目文件,将刚下载文件拷贝到public目录下

第三步:在index.html文件中引入js

	<!-- 看板娘 --><script type="text/javascript" src="./live2dw/lib/L2Dwidget.min.js"></script>

然后我们就可以在自己需要的模块中去创建自己的人物了

第四步:使用,去创建人物

初步用法
基础用法

我们第一步下载的那个文件提供了很多人物模型

window.L2Dwidget//对人物的属性配置.init({pluginRootPath: '../live2dw/', //人物文件夹的位置pluginJsPath: 'lib/',pluginModelPath: 'live2d-widget-model-wanko/assets/',model: {jsonPath: '../live2dw/live2d-widget-model-wanko/assets/wanko.model.json'},display: { //人物的属性配置position: 'left',width: 350,height: 800,hOffset: 200, // 横向偏移vOffset: -100 // 纵向偏移}, });

通过在mounted(vue2写法)/onMounted(() => {}(vue3写法)周期内,写下该代码就可以加载配置的文件。当然有一些模型是提供去触摸对话的。那么我们就可以提供一个事件监听。

人物模型替换

只需要将打框框的地方给替换成其他人物名称(基础用法图片中model-xxx,xxx就是名称)就好了

高级用法(只有一些模型提供)
事件监听
L2Dwidget.on('*', (name) => {console.log('事件为: ' + name)
})
显示对话框
L2Dwidget.init({dialog: {enable: true,script: {'tap body': 'xxxx','tap face': 'xxxxx',}}
});
完整代码:
<template><div class="app" ref="box"><div class="box1"></div><div class="box2"><el-container><el-header>Header</el-header><el-main>Main</el-main><el-footer>Footer</el-footer>
</el-container></div></div>
</template>
<script>export default {mounted() {window.L2Dwidget//此处是对点击人物时触发事件的监听.on('*', (name) => {})//对人物的属性配置.init({pluginRootPath: '../live2dw/', //人物文件夹的位置pluginJsPath: 'lib/',pluginModelPath: 'live2d-widget-model-wanko/assets/',model: {jsonPath: '../live2dw/live2d-widget-model-wanko/assets/wanko.model.json'},dialog: {enable: true, //是否开启对话框script: {'tap body': '你好呀!这里是,ai智能小助手!!!','hover .app': '嘿!需要帮助吗?','tap face': '汪汪'}},display: { //人物的属性配置position: 'left',width: 350,height: 800,hOffset: 200, // 横向偏移vOffset: -100 // 纵向偏移}, });}}
</script>
<style>body {margin: 0;width: 100%;}.app {width: 100%;height: 100%;display: inline-flex;}.box1{width: 50%;height: 700px;border: 1px solid red;}.box2{width: 50%;height: 700px;border: 1px solid red;}
</style>

参考文章:

https://juejin.cn/post/6844904032423641096

http://t.csdnimg.cn/6ydbx

结语:

感谢观看!!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RocketMQ 的消息存储机制
  • 3.4数组和特殊矩阵
  • Java开发:文件上传和下载
  • 按摩虎口穴位的作用
  • Laravel php框架与Yii php 框架的优缺点
  • 上线前端系统
  • 7.C基础_数组
  • DAP-Seq:解锁转录因子结合位点的新钥匙
  • 眼在手外-机器人坐标系与相机坐标系标定方法
  • CTF-web基础 web服务器
  • 实战项目导航
  • 基于Django框架的挂号诊疗系统(源码+论文+部署讲解等)
  • 基于JAVA的物资管理系统设计与实现
  • C语言基础题:迷宫寻路(C语言版)
  • 软设之网络诊断命令
  • 03Go 类型总结
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java,console输出实时的转向GUI textbox
  • java取消线程实例
  • java中具有继承关系的类及其对象初始化顺序
  • PHP变量
  • Spark学习笔记之相关记录
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • spring security oauth2 password授权模式
  • windows-nginx-https-本地配置
  • 阿里云应用高可用服务公测发布
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 手机app有了短信验证码还有没必要有图片验证码?
  • -- 数据结构 顺序表 --Java
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 写给高年级小学生看的《Bash 指南》
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​学习一下,什么是预包装食品?​
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (NSDate) 时间 (time )比较
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (十六)一篇文章学会Java的常用API
  • (四)js前端开发中设计模式之工厂方法模式
  • (四)opengl函数加载和错误处理
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)UDP基本编程步骤
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Windows2003安全设置/维护
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)为C# Windows服务添加安装程序
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法