majimboo/mviewer

GitHub: majimboo/mviewer

Rust 原生的 Marmoset .mview 场景查看器与导出工具,将专有格式的 3D 场景转换为标准 glTF/GLB,解决资产提取与格式迁移问题。

Stars: 290 | Forks: 76

mviewer icon

# mviewer 用于 Marmoset `.mview` 场景的原生 Rust 导出器。 ![vivfox 导出预览](https://raw.githubusercontent.com/majimboo/mviewer/master/docs/images/sample.gif) ## 下载 预编译的二进制文件可通过 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, 模型提取, 纹理合并, 网络流量审计, 自动笔记, 通知系统, 骨骼动画