2个版本
| 0.1.2 | 2022年11月7日 |
|---|---|
| 0.1.0 | 2022年8月30日 |
1788 in Web编程
710KB
17K SLoC
MDanceIO
mdanceio是一个跨平台的MMD(MikuMikuDance)兼容实现。它通过WebGPU在wasm上针对浏览器进行重写。
此项目仍处于初始开发阶段。
动机
我创建这个项目主要是为了学习Rust和WebGPU。我希望能够提供一个在浏览器中运行的MikuMikuDance实现,以及未来通过云渲染和AR/VR实现。
mdanceio作为一个crate,在特定的Surface、TextureView或Canvas上提供MMD渲染服务。或者它可以直接返回一个BytesArray。
基于mdanceio还有一个项目,它提供了一个基本的MMD远程渲染服务,通过WebRTC实现。
入门
如何获取支持的模型和动作
您可以从模之屋(PlayBox)获取模型和动作,这是一个社区分享角色模型。
项目构建可能存在错误和未完成的部分。您可以尝试以下测试和良好的模型和动作以开始。
- 模型:【原神】砂糖Sucrose
- ◆模型提供:miHoYo
- ◆模型改造:观海
- 动作:神里凌华传说任务舞蹈
- 动作:Lct火红枣
本README中的示例GIF使用了上述模型和动作。
示例
示例将在本地窗口中播放具有特定动作的模型。
cargo run --package mdanceio --example winit_app -- --model <Model Path> --motion <Motion Path>
您也可以将其构建为可执行文件。
cargo build --package mdanceio --example winit_app --release
您还可以通过Actions获取可执行文件。
WebGPU演示
您可以通过此处访问演示(需要启用#enable-unsafe-webgpu的Chrome Canary)。
WebGL演示
您可以通过使用WebGL的演示。
先决条件
安装wasm-pack,一个Rust到Wasm的工作流程工具。
你需要nodejs来运行演示。
你还需要支持WebGPU的Google Chrome Canary,并启用功能标志#enable-unsafe-webgpu。
构建wasm包
wasm-pack build mdanceio --out-dir ../target/pkg
构建需要环境变量:RUSTFLAGS=--cfg=web_sys_unstable_apis
运行Web演示
cd mdance-demo
npm install
npm run start
你还可以在Actions中获取预构建的web包。
远程渲染
我有一个关于如何使用mdanceio作为渲染服务的演示项目在这里。
该服务使用WebRTC与浏览器通信。
你可以按照其指导进行操作。
目标平台支持
| 平台 | 支持 |
|---|---|
| Windows | ✅ |
| Linux | 🆗 |
| MacOS | 🆗 |
| 浏览器(WebGPU) | ✅ |
| 浏览器(WebGL) | 🆗 |
| Android | 🛠️ |
| OpenXR | 🛠️ |
✅ = 首选支持 🆗 = 尽力支持 🛠️ = 不支持,但计划中
文件格式支持
模型格式
| 格式 | 支持 |
|---|---|
| PMX | ✅ |
| PMD | ❌ |
运动格式
| 格式 | 支持 |
|---|---|
| VMD | ✅ |
| NMD | ❌ |
未来计划
- 核心功能尚未完成。我们将在未来涵盖所有MikuMikuDance功能。
- 我对在AR/VR环境中支持
mdanceio感兴趣。我们将提取AR使用的SDK并提供一个演示。 - 提供支持云渲染的架构。
- 提供对MME或类似技术的支持。
依赖项
~18–33MB
~587K SLoC