majimboo/mviewer
GitHub: majimboo/mviewer
Rust 原生的 Marmoset .mview 场景查看器与导出工具,将专有格式的 3D 场景转换为标准 glTF/GLB,解决资产提取与格式迁移问题。
Stars: 290 | Forks: 76
# mviewer
用于 Marmoset `.mview` 场景的原生 Rust 导出器。

## 下载
预编译的二进制文件可通过 GitHub Actions 发布版获取:
- Windows x64
- Linux x64
- macOS arm64
- macOS x64
最新发布版:[`latest`](https://github.com/majimboo/mviewer/releases/latest)
下载与您的平台相匹配的压缩包:
- Windows 64 位:`mviewer-vX.Y.Z-windows-x64.zip`
- Linux 64 位:`mviewer-vX.Y.Z-linux-x64.tar.gz`
- macOS Apple Silicon:`mviewer-vX.Y.Z-macos-arm64.tar.gz`
- macOS Intel:`mviewer-vX.Y.Z-macos-x64.tar.gz`
解压发布版压缩包后,请运行:
```
mviewer --help
```
## 功能对等
### Marmoset `.mview` / JS 对等
- [x] `.mview` 压缩包解析
- [x] `scene.json` 解析
- [x] 静态 glTF 场景导出
- [x] 动画 glTF 场景导出
- [x] 蒙皮导出
- [x] 相机导出
- [x] 光照导出
- [x] 主 UV 导出
- [x] 修正的 UV 朝向对等
- [x] 压缩法线解码
- [x] 顶点颜色导出
- [x] 材质纹理提取
- [x] Alpha 纹理合并
- [x] 金属度-粗糙度纹理打包
- [x] 桌面 GUI 中嵌入的 Marmoset 运行时预览
- [x] 桌面 GUI 中直接导出 OBJ
- [ ] 针对所有 Marmoset 专属运行时行为的完全原生 glTF 对等
- [x] `.glb` 输出
- [ ] 直接导出 `FBX`
### 项目特性
- [x] Rust 原生命令行工具
- [x] 带有嵌入式 Marmoset 预览的原生桌面 GUI
- [x] Windows、Linux 和 macOS 构建
- [x] GitHub Actions CI 和发布打包
- [x] GitHub Pages 项目站点
- [x] 仓库内包含示例动画测试资源
## 快速开始
```
mviewer input.mview output_dir
```
示例:
```
mviewer test_data\vivfox.mview test_output\vivfox
```
这将为 glTF 写入以下文件:
- `
.gltf`
- `.bin`
- 场景使用的已复制纹理文件
- 当源场景使用单独的 alpha 贴图时合并的 `*_rgba.png` 纹理
对于 GLB:
```
mviewer test_data\vivfox.mview test_output\vivfox_glb --format glb
```
这将写入:
- `.glb`
## GUI 工作流
使用以下命令启动桌面应用:
```
mviewer
```
当前的 GUI 支持:
- 打开本地 `.mview` 文件
- 直接加载支持的 URL,包括公开暴露 `.mview` 的 ArtStation 作品页面
- 通过嵌入的 Marmoset 运行时预览场景
- 导出为 glTF、GLB 或 OBJ/MTL
- 选择每种格式的导出选项
- 记住上次导出的默认设置和最近打开的文件
## 输出格式
mviewer 可将 `.mview` 场景直接导出为 glTF 和 GLB。
桌面 GUI 还可以将选定的网格连同源纹理导出为 OBJ/MTL。
如果您需要其他格式:
- `mview to fbx`:先导出为 glTF,然后使用 Blender 或其他下游工具进行转换
- `mview to obj`:先导出为 glTF,如果您只需要静态几何体/材质再进行转换
- `mview to blender`:将生成的 glTF 导入 Blender
glTF 是主要的交换格式,因为与旧的基于脚本的工作流相比,它能更好地保留现代材质、蒙皮、动画、相机和光照。
## 从源码构建
要求:
- Rust 稳定版工具链
构建:
```
cargo build --release
```
运行 GUI:
```
cargo run
```
运行 CLI:
```
cargo run --release -- [output_dir]
```
## 工作流说明
mviewer 是一个 Rust 原生的 Marmoset `.mview` 查看器、导出器和转换器,专注于 `.mview` 到 glTF 的导出。
如果您正在寻找 `mview viewer`、`mview editor`、`mview to gltf`、`mview to fbx` 或 `mview to obj` 工作流,当前的项目路径是:
`.mview` -> `glTF` -> 可选转换为 `FBX`、`OBJ`、Blender 或其他格式
本仓库不再使用旧的 Python 提取器或 Noesis 插件作为其主要工作流。当前的实现直接读取 `.mview` 压缩包,使用 Rust 后端进行导出,并在桌面 GUI 中使用嵌入的 Marmoset 运行时以实现预览对等。
## 当前限制
- 通用的第三方 glTF 查看器只能看到标准的 glTF 导出
- 直接导出 `FBX` 尚未实现
## 逆向工程参考资料
这些文件仍保留在仓库中作为格式参考:
- `docs/reverse-engineering/marmoset-d3f745560e47d383adc4f6a322092030.js`
较新的打包版 Marmoset JavaScript 是格式和运行时对等工作的主要参考。 标签:3D图形处理, 3D查看器, 3D模型转换, GitHub Actions, GLB, glTF导出, Marmoset, mview解析, OBJ导出, Rust, 可视化界面, 场景导出, 桌面GUI, 模型提取, 纹理合并, 网络流量审计, 自动笔记, 通知系统, 骨骼动画