# hime-display
**Repository Path**: yaliang/hime-display
## Basic Information
- **Project Name**: hime-display
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-10
- **Last Updated**: 2023-11-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Hime Display
> illustrated by [MakoSaikou](https://www.pixiv.net/users/72669923)
[English](./README.md) | 简体中文 | [日本語](./README-JP.md)
[下载](https://hime.xdrv.cn/download/) | [文档](https://hime.xdrv.cn/) | [介绍视频](https://www.bilibili.com/video/BV1Me411u7pF)
此应用旨在打造一个开源、跨平台的通用桌面模型展示器。
## 预览
### 控制面板
### 展示器
什么没看见?那就对了,展示器其实就是一个透明窗口。
## 特性
1. 多种模型类型支持:支持载入 Live2D、MMD、VRoid、Spine 四种模型。
2. 动作捕捉:借助于 Google 的 MediaPipe 对 Live2D、MMD、VRoid 提供了动捕支持。
3. 跨平台:同时对 macOS 与 Windows 提供了支持。
4. 多语言支持: 对简体中文、日语、英语提供了支持。
5. 全面的模型控制:可对模型的进行各种操作,包括骨骼变换,变形,动画播放。
6. 动画转译:MMD 模型可以直接加载来源于 Mixamo 的动画(VRoid 计划之后支持)。
## 基础载入
### 模型库数据库设计
以一个或多个文件路径作为数据源,根据一些模型文件特征,递归检测该路径下的模型,添加至数据库后载入。
### 加载模型的方法
1. 在控制面板中点击`来源`;
2. 然后`添加数据源`,选择模型及动作文件,音频所在的目录;
3. 点击数据源操作中的刷新按钮;
4. 点击控制面板菜单中的`模型`,在模型数据库中选择希望载入的模型,选中的模型将会高亮显示;
5. 然后点击数据库下方的`载入选中模型`。
### 注意事项
1. 不同类型的模型以及音频与动作文件均可放置到同一数据源下。
2. 为提高效率和增强通用性,对于大多数文件类型,该检测过程没有读取文件的内容,主要通过文件扩展名判断,因此即使文件存在问题或者不支持,也有可能被载入到数据库中。
3. 对于模型文件,由于一些类型的模型的文件名称通常不是模型名称,将以模型文件的上级目录名作为模型名称,因此在同一目录下放置多个模型可能命名混乱。
4. 对于音频与动作文件,文件名通常与内容直接相关,因此将直接采用文件名作为名称,同时放到同一个目录下不会造成命名混乱。
5. 添加数据源后可以点击编辑检索类型,默认检测全部类型。
6. 执行刷新操作后,将自动更新统计信息,模型数据库,音频数据库,动作数据库(后两者在 3D 模型的动画控制页面中显示)。
## 模型机能对比
| | MMD | VRoid | Live2D | Spine |
| :------: | :---------------: | :-----------------: | :-------------------------: | :---------------------------: |
| 模型信息 | ✅ | ✅ | ✅ | ✅ |
| 对象变换 | ✅ | ✅ | ✅ | ✅ |
| 动画播放 | ✅ | ❌
(待开发) | ✅ | ✅ |
| 物理模拟 | ✅
(仅动画) | ✅
(所有状态) | ❌
(好像有,还没深究) | ❌
(Spine 跟我扯这个?) |
| 参数控制 | 变形 | 变形 | Parameter
Part | ❌
(人懒没做) |
| 面部捕捉 | ✅ | ✅ | ✅ | ❌
(无参数规范) |
| 全身捕捉 | ✅ | ✅ | ❌
(无参数规范) | ❌
(无参数规范) |
## 主要开发技术
本应用使用前端技术,基于[Electron](https://www.electronjs.org/)开发,构建工具使用了[Vite](https://vitejs.dev/)。
数据库存储采用了[lowdb](https://github.com/typicode/lowdb)。
多语言的支持采用了[i18next](https://www.i18next.com/)。
控制面板采用[Vue](https://vuejs.org/)框架开发,使用了[Element Plus](https://element-plus.org/)组件库。
2D 模型使用[Pixi.js](https://pixijs.com/)作为渲染引擎,3D 模型使用[Three.js](https://threejs.org/)作为渲染引擎。
动作捕捉使用了 Google 的[MediaPipe](https://mediapipe.dev/)进行识别,并使用[Kalidokit](https://github.com/yeemachine/kalidokit)进行捕捉数据解析。
## 开发
```bash
# 安装依赖
yarn
# 启动
yarn start
# 构建(具体build版本可以在根目录下的build.config.js文件中配置)
yarn build
```
### 若安装 electron 出现问题
在国内可能会遇到无法安装 electron 的情况,本来用 cnpm 的话直接完美解决问题,但是由于这个项目使用了 yarn 的 workspace,使用 cnpm 也可能会出现一些问题。如果遇到使用 yarn 命令无法安装 electron 的情况,可以在项目的根目录新建`.yarnrc`文件配置代理源,内容如下:
```
registry "https://registry.npm.taobao.org"
sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
phantomjs_cdnurl "http://cnpmjs.org/downloads"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"
profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
```
## Special Thanks
这是我的初次尝试开发一个完整的应用,各方面经验都十分欠缺。
本项目的文件结构参考了同样使用 Electron 开发的下载工具[Motrix](https://motrix.app/),在此表示感谢。
感谢 [笺染菲素](https://space.bilibili.com/33572615) 测试应用并提供了不少建议。
感谢 [HuiDesktop](https://github.com/HuiDesktop/HuiDesktop) 的作者 [pure01fx](https://github.com/pure01fx) 提供的 Spine 方面的一些技术支持。
感谢 [greenjerry](https://github.com/greenjerry) 对我在物质,精神层面,以及软件和硬件上的大力支持。