基础介绍
此应用旨在打造一个开源、跨平台的通用桌面模型展示器。
基础载入
模型库数据库设计
以一个或多个文件路径作为数据源,根据一些模型文件特征,递归检测该路径下的模型,添加至数据库后载入。
加载模型的方法
- 在控制面板中点击
来源
; - 然后
添加数据源
,选择模型及动作文件,音频所在的目录; - 点击数据源操作中的刷新按钮;
- 点击控制面板菜单中的
模型
,在模型数据库中选择希望载入的模型,选中的模型将会高亮显示; - 然后点击数据库下方的
载入选中模型
。
注意事项
- 不同类型的模型以及音频与动作文件均可放置到同一数据源下。
- 为提高效率和增强通用性,对于大多数文件类型,该检测过程没有读取文件的内容,主要通过文件扩展名判断,因此即使文件存在问题或者不支持,也有可能被载入到数据库中。
- 对于模型文件,由于一些类型的模型的文件名称通常不是模型名称,将以模型文件的上级目录名作为模型名称,因此在同一目录下放置多个模型可能命名混乱。
- 对于音频与动作文件,文件名通常与内容直接相关,因此将直接采用文件名作为名称,同时放到同一个目录下不会造成命名混乱。
- 添加数据源后可以点击编辑检索类型,默认检测全部类型。
- 执行刷新操作后,将自动更新统计信息,模型数据库,音频数据库,动作数据库(后两者在 3D 模型的动画控制页面中显示)。
模型机能对比
MMD | VRoid | Live2D | Spine | |
---|---|---|---|---|
模型信息 | ✅ | ✅ | ✅ | ✅ |
对象变换 | ✅ | ✅ | ✅ | ✅ |
动画播放 | ✅ | ❌ (待开发) | ✅ | ✅ |
物理模拟 | ✅ (仅动画) | ✅ (所有状态) | ❌ (好像有,还没深究) | ❌ (Spine 跟我扯这个?) |
参数控制 | 变形 | 变形 | Parameter Part | ❌ (人懒没做) |
面部捕捉 | ✅ | ✅ | ✅ | ❌ (无参数规范) |
全身捕捉 | ✅ | ✅ | ❌ (无参数规范) | ❌ (无参数规范) |
主要开发技术
本应用使用前端技术,基于Electron开发,构建工具使用了Vite。
数据库存储采用了lowdb。
多语言的支持采用了i18next。
控制面板采用Vue框架开发,使用了Element Plus组件库。
2D 模型使用Pixi.js作为渲染引擎,3D 模型使用Three.js作为渲染引擎。
动作捕捉使用了 Google 的MediaPipe进行识别,并使用Kalidokit进行进行捕捉数据解析。
Special Thanks
这是我的初次尝试开发一个完整的应用,各方面经验都十分欠缺。
本项目的文件结构参考了同样使用 Electron 开发的下载工具Motrix,在此表示感谢。
感谢 笺染菲素 测试应用并提供了不少建议。
感谢 HuiDesktop 的作者 pure01fx 提供的 Spine 方面的一些技术支持。
感谢 greenjerry 对我在物质,精神层面,以及软件和硬件上的大力支持。