Three.js教程
3D建模
reze-studio-mmd-webgpu-editor
reze-studio-mmd-webgpu-editor

有人用 WebGPU 在浏览器里做了个 3D 动画编辑器,IK 和物理引擎都有

MMD,全称 MikuMikuDance,是日本开发者樋口优在 2008 年发布的一款 3D 动画制作软件,主要用来给初音未来等虚拟角色制作舞蹈和表演动画。多年来社区积累了大量资源,PMX 格式的模型和 VMD 格式的动作数据构成了整个生态的核心。

但 MikuMikuDance 只有 Windows 版本,安装配置繁琐,不支持在线协作,macOS 和 Linux 用户基本无法直接使用。

Reze Studio 试图解决这个问题。它是一个完全运行在浏览器里的 MMD 动画编辑器,不需要安装任何软件,本地跑起来就能加载 PMX 模型、编辑 VMD 动画。IK(逆运动学,让骨骼自动适配姿势的计算方式)和物理模拟也在浏览器里实现了。

项目由开发者 AmyangXYZ 独立开发,目前处于早期阶段,核心编辑流程已经可以跑通。

渲染层和技术选型

Reze Studio 的渲染层基于作者自己开发的 reze-engine,底层使用 WebGPU。

WebGPU 是浏览器里的下一代图形 API,相比更早普及的 WebGL,它更接近现代 GPU 的工作方式,支持计算着色器,对复杂场景的渲染性能更好。Chrome 113 起正式启用,Safari 和 Firefox 也陆续跟进,目前在主流浏览器里的覆盖情况已经比较稳定。

物理模拟使用的是 Ammo.js,它是 Bullet 物理引擎的 WebAssembly 移植版本。Bullet 被 Blender 和不少游戏引擎采用,Ammo.js 把它的能力带进了浏览器环境。Reze Studio 用它处理 MMD 模型里的布料、头发等软体物理效果。

编辑器界面基于 Next.js 和 shadcn/ui 构建,代码以 TypeScript 为主。

已实现的功能

模型与动画加载

支持加载本地 PMX 模型文件和 VMD 动画文件。加载后可以看到带 IK 计算和物理模拟的完整 3D 动画播放效果,骨骼姿势和布料物理均实时生效。VMD 文件支持导入和导出,编辑完成后可以把结果保存回 VMD 格式,在其他 MMD 工具里继续使用。

时间轴编辑器

时间轴提供了两种视图模式:dope sheet(显示各帧是否有关键帧的概览视图)和 per-channel 曲线编辑器(按骨骼通道分开显示动画插值曲线)。关键帧可以在当前播放位置插入和删除,贝塞尔曲线插值支持逐帧调整,用来控制动作的缓入缓出效果。

骨骼与变形管理

面板里提供骨骼层级列表,可以展开查看模型的完整骨骼结构。变形(Morph)列表显示模型支持的面部表情和形态控制选项,通过滑块或直接输入数值来调整,旋转和平移参数同理支持两种输入方式。

会话持久化

动画数据存储在浏览器的 IndexedDB 里,编辑器状态(视图设置、界面布局等)保存在 localStorage 里。刷新页面不会丢失编辑中的内容,下次打开自动恢复。

键盘快捷键

支持空格键播放/暂停,方向键逐帧移动,Home/End 键跳转到动画的首尾位置。

安装与运行

项目基于 Node.js,克隆仓库后本地运行:

git clone https://github.com/AmyangXYZ/reze-studio.git
cd reze-studio
npm install
npm run dev

启动后访问 http://localhost:4000 打开编辑器。目前没有线上可直接访问的 Demo,需要本地运行。

运行前需要准备好 PMX 格式的模型文件和 VMD 格式的动画文件。PMX 模型可以从 Booth、DeviantArt 等平台找到社区分发的资源,注意各模型有自己的使用授权规则,非商业个人使用为主。

基本操作流程:

步骤操作说明
1启动编辑器访问 localhost:4000
2加载 PMX 模型通过界面选择本地模型文件
3加载 VMD 动画导入动作数据,模型开始播放动画
4在时间轴上编辑插入、删除关键帧,调整插值曲线
5导出 VMD将编辑后的动画保存为 VMD 文件

举个例子:如果有一段舞蹈动画,某几个动作的衔接不够流畅,可以在时间轴里找到对应帧,调整贝塞尔曲线让缓出更自然,或者删掉冗余帧,最后导出修改后的 VMD 文件。

规划中的功能

README 里列出了一批还在规划的方向:变形权重的关键帧支持、动画图层与混合权重、自定义骨骼分组、剪切/复制/粘贴、撤销/重做、3D 变换操控器,以及更长期的动作捕捉导入、实时协作和 AI 辅助动画生成。

目前还没有撤销/重做功能,误操作后只能手动还原,实际编辑时需要注意。

写在最后

Reze Studio 做的事情在技术路线上并不常见:把一套有完整生态支撑的桌面专用工具,选用 WebGPU 这个相对新的底层 API,在浏览器里从头重建。从 IK 计算到物理模拟,这些在桌面客户端里通常依赖专用运行时的能力,这里全部在 Web 环境里实现了。

对前端开发者来说,这个项目有两个值得关注的点:一是作为 WebGPU 在真实项目里落地的参考案例,可以看到 WebGPU 渲染引擎加上 Ammo.js 物理引擎是如何组合工作的;二是 MMD 格式的模型和动画资源在社区里积累量很大,如果想做带角色动画的 Web 3D 项目,这套工具链和数据格式值得了解。

项目处于早期阶段,功能还不完整,线上没有可访问的 Demo,需要本地运行。当前更适合有兴趣参与开发,或者想研究 WebGPU + 物理引擎实现思路的开发者。

GitHub:https://github.com/AmyangXYZ/reze-studio (opens in a new tab)