欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Live2D(Cubism3.x)网页看板娘设置(一)

程序员文章站 2022-04-28 08:37:02
...

逛博客时发现不少大佬们都在网页上弄个看板娘,很是羡慕,于是就去抄作业了,但是因为设置比较复杂,而且学习成本也比较高,这就导致鱼多渔少,此外就是我所能查到的教程,用的时live2D Cubism2版本的,而我从游戏里面提取出的是3.x版本的模型文件,差别比较大,无奈之下只能去下载了官方的SDK自己摸索着进行设置。

内容较多,一期讲完的话,文字太多也不利于理解,大概分两三期
文章参考:
教程中有些我可能有些东西没提到,或者讲的不明白,大家也可以去看看他们的
猫与向日葵大佬
Perfare大佬
Github上的大佬

相应视频已上传哔哩哔哩:
小白一枚,文章和视频中如果有不对的地方,还请各位大佬指正

Live2D网页看板娘设置教程(一)

1.准备工作:

下载并安装工具

#所有工具软件和步骤均按照参考手册来准备的,可用类似软件替代
#具体安装方式自行百度

#1.Live2D Cubism SDK for Web
下载地址:[官方SDK下载链接](https://www.live2d.com/download/cubism-sdk/)

#2.安装Node.js
下载地址:[Node.js](https://nodejs.org/en/download/)

#3.安装TypeScript
安装方式:用nodejs带的npm来安装,命令: npm install -g typescript

#4.安装Visual Studio Code
下载地址:[官网下载](https://code.visualstudio.com/Download)

2.构建DEMO项目

2.1 为Visual Studio Code 安装所需插件

安装Live Serve r和 Debugger for Chrome插件然后重启软件

2.2安装方式:在下边输入以上关键字,选择install

Live2D(Cubism3.x)网页看板娘设置(一)

2.3.解决npm无法安装依赖包的问题(windows系统)

#进入下载的SDK解压包(CubismSdkForWeb-4-beta.2)所在的位置
#在此处使用命令行工具(cmd),执行下面的命令 
npm install 
#等待执行完毕后即可进入下一步。如过有错,试试管理员模式的cmd或者powershell
#如果还是报错,类似 rollbackFailedOptional这样的,可以尝试使用国内代理
npm config rm proxy
npm config rm https-proxy
#然后使用淘宝的cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
#等待加载完毕后就可以使用cnpm命令了,然后在SDK解压包处使用下面命令代替npm install
cnpm install

2.4.构建SDK提供的项目

1.打开VScode,file -> opne folder 选择你自己解压的SDK的目录

2.然后在上边的菜单栏上找到 Terminal -》 Run Build Tstk ,之后找到  npm :Build-Sample。 

3.点击后等待打包完成。完成之后,会在Sample\TypeScript\Demo文件夹下生成dist文件夹
里面是编译生成的index.js文件,index.html中会用到。

4.打包完毕,接下来测试一下,能自己启动服务器的话,可以把这个项目放进去使用。
没有的话就使用安装的live server(见下图)。
启动后会弹出浏览器,找到项目中的进入Sample->TypeScript->Demo,进入即可

#打包过程会报错,这个是官方提供的SDK里面的BUG,在错误位置进行类型转换成WebGLRenderingContext
#具体的报错地址为:SDK解压目录下的Sample\TypeScript\Demo\src\lappdelegate.ts(67,9)
 #信息为:TS2322: Type 'WebGLRenderingContext | CanvasRenderingContext2D | ImageBitmapRenderingContext' is not assignable to type 'WebGLRenderingContext'.

Live2D(Cubism3.x)网页看板娘设置(一)

3. 根据自己的情况修改Demo

3.1 SDK包的目录结构

项目根目录
├─ .vscode              # Visual Studio Code 的一些配置文件,用vscode编辑改项目时,以上几个一键操作基本基于这里面的配置
├─ Core                 # Cubism Core 顾名思义,核心库
├─ Framework            #包含渲染和动画功能等的源代码的目录
└─ Samples              #示例项目,我们关注的重点
   └─ TypeScript
      └─ Demo           # サンプルプロジェクトが含まれるディレクトリ
         ├─ Resources   # 这里面放的是live2D的模型及动作导出的文件
         └─ src         #这里面是ts脚本文件,使用自己的模型时会修改其中的一些文件

3.2修改文件以导入自己的模型文件

3.2.1.找到 Sample\TypeScript\Demo\src\lappdefine.ts文件
3.2.2.使用文本编辑器打开,定位到以下位置:(这里为我们需要改的地方,将你想要加入的模型文件的文件夹名字填入下面的数组中,不想要的可以从数组中删除)

//找到内容,将你的模型文件夹名字填入这里,也可以先删除不想用的官方模型试试效果
//模型的来源自己百度吧,或者从游戏里面提取
export const ModelDir: string[] = [
  "Haru",
   "Hiyori",
   "Mark",
   "Natori",
   "xiaoxiao",
   "Rice"
] 

3.2.3. 这里面添加完毕你自己找到的模型文件夹名字后,将模型文件夹拷贝到【Sample\TypeScript\Demo\Resources】 文件夹,其他地方均不需要动

注意

1. moc3文件的文件名必须和其文件夹名相同

2.如果感觉自己配置没啥问题的话,仍然加载不出来模型,可以通过浏览器的开发者工具来监控网络请求,看下载链接是否请求是否 被提示【HTTP响应截断】,如果有的话,只能放弃了,再换个模型文件(web前端技术以及live2D都是超级小白,只能放弃这个模型了)

3.进行一些编辑后不要不开服务器直接在本机预览,不然会啥都没有。因为浏览器安全问题,配置文件只能通过网络请求来进行加载,如果直接本地请求的话会报同源策略错误

model3.json文件的一些简单认识

{
"Version": 3,
"FileReferences": {
//模型文件存放位置
"Moc": "Haru11.moc3", 
//贴图文件存放位置
"Textures": [
"Haru.2048/texture_00.png",
"Haru.2048/texture_01.png"
],
//一些特殊动作
"Pose": "Haru.pose3.json",
"Expressions": [
{"Name":"f00","File":"expressions/F01.exp3.json"},
{"Name":"f01","File":"expressions/F02.exp3.json"},
{"Name":"f02","File":"expressions/F03.exp3.json"},
{"Name":"f03","File":"expressions/F04.exp3.json"},
{"Name":"f04","File":"expressions/F05.exp3.json"},
{"Name":"f05","File":"expressions/F06.exp3.json"},
{"Name":"f06","File":"expressions/F07.exp3.json"},
{"Name":"f07","File":"expressions/F08.exp3.json"}
],

//动作模型加载,及简单分类
"Motions": {
//自动播放的动作文件
"Idle": [
{"File":"motions/haru_g_idle.motion3.json" ,"FadeInTime":0.5, "FadeOutTime":0.5}],
//点击头或者其他部位时触发的动作文件
"TapBody": [
 {"File":"motions/haru_g_m06.motion3.json" ,"FadeInTime":0.5, "FadeOutTime":0.5},]
},
//下面的还没弄明白是啥
"UserData": "Haru.userdata3.json"
},
"Groups": [
{
"Target": "Parameter",
"Name": "LipSync",
"Ids": [
"ParamMouthOpenY"
]
},
{
	"Target": "Parameter",
	"Name": "EyeBlink",
	"Ids": [
			"ParamEyeLOpen",
			"ParamEyeROpen"
	]
}
],
"HitAreas": [
	{"Name":"Head", "Id":"HitArea"},
	{"Name":"Body", "Id":"HitArea2"}
]
}
相关标签: Live2D网页看板娘