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