#browser #web-gpu #兼容 #模型 #mmd #定位 #miku-miku-dance

mdanceio

MDanceIO是针对浏览器通过wasm的MMD(MikuMikuDance)兼容实现

2个版本

0.1.2 2022年11月7日
0.1.0 2022年8月30日

1788 in Web编程

MIT 许可证

710KB
17K SLoC

MDanceIO

Build Status NPM NPM Crate Maven

mdanceio是一个跨平台的MMD(MikuMikuDance)兼容实现。它通过WebGPU在wasm上针对浏览器进行重写。

此项目仍处于初始开发阶段。

动机

我创建这个项目主要是为了学习Rust和WebGPU。我希望能够提供一个在浏览器中运行的MikuMikuDance实现,以及未来通过云渲染和AR/VR实现。

mdanceio作为一个crate,在特定的SurfaceTextureViewCanvas上提供MMD渲染服务。或者它可以直接返回一个BytesArray。

基于mdanceio还有一个项目,它提供了一个基本的MMD远程渲染服务,通过WebRTC实现。

入门

如何获取支持的模型和动作

您可以从模之屋(PlayBox)获取模型和动作,这是一个社区分享角色模型。

项目构建可能存在错误和未完成的部分。您可以尝试以下测试和良好的模型和动作以开始。

本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来运行演示。

你还需要支持WebGPUGoogle 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