# 3DGSConvertTool **Repository Path**: playertk/3dgsconvert-tool ## Basic Information - **Project Name**: 3DGSConvertTool - **Description**: gsbox 界面版本 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 3D高斯点云格式转换器 一个基于 Flet 和 gsbox 的现代化 3D 高斯点云格式转换工具,提供友好的图形界面来转换各种 3D 高斯点云格式。
## 🌟 功能特性 ### 🎯 核心功能 - **多格式支持**: 支持 PLY、SPLAT、SPX、SPZ、KSPLAT、SOG 等主流 3D 高斯点云格式 - **双向转换**: 支持所有格式之间的相互转换 - **批量处理**: 支持多个文件的批量转换 - **实时预览**: 转换过程中实时显示进度和日志 - **参数自定义**: 丰富的转换参数配置选项 ### 🔧 高级功能 - **实时转换进度显示**: 可视化进度条和详细状态信息 - **详细的日志输出**: 完整的转换过程记录 - **输出文件自动命名**: 智能文件命名和路径管理 - **磁盘空间检查**: 转换前自动检查可用空间 - **文件验证和安全检查**: 确保输入文件的有效性和安全性 - **模型信息查看**: 查看 3D 模型的详细信息 - **模型合并**: 支持将多个模型合并为单个文件 ### 🎨 用户界面 - **现代化界面**: 基于 Flet 的响应式用户界面 - **直观操作**: 拖拽式文件选择和清晰的参数配置 - **实时反馈**: 即时的操作反馈和状态更新 - **多语言支持**: 支持中英文界面切换 ## 📋 系统要求 ### 必需依赖 - **Python**: 3.8 或更高版本 - **gsbox**: 3D 高斯点云处理工具 - **操作系统**: Windows 10/11、Linux、macOS ### Python 包依赖 ``` flet>=0.28.3 flet-core>=0.28.3 flet-runtime>=0.28.3 pyinstaller>=6.16.0 ``` ### 确保包含所有必要的资源文件 ### 硬件要求 - **内存**: 至少 4GB RAM (推荐 8GB+) - **存储**: 至少 1GB 可用磁盘空间 - **处理器**: 支持 SSE2 指令集的处理器 ## 🚀 安装和运行 ### 系统要求 - Python 3.8+ - Windows 7+ (推荐 Windows 10+) - gsbox 工具 (已包含在项目中) ### 安装步骤 1. **克隆项目** ```bash git clone cd first-flet-app ``` 2. **安装依赖** ```bash uv sync ``` 3. **运行应用程序** ```bash cd src python main.py ``` ### 打包和分发 我们提供了完整的打包解决方案,可以将应用程序打包成独立的可执行文件: ```bash # 自动打包(推荐) python build.py # 手动打包 pyinstaller main.spec ``` 打包完成后,会在 `dist/` 目录下生成: - **主要程序**: `3D高斯点云格式转换器/3D高斯点云格式转换器.exe` - **便携版本**: `3D高斯点云格式转换器-便携版/3D高斯点云格式转换器.exe` 详见 [打包指南](PACKAGING_GUIDE.md) 获取详细信息。 ## 📁 项目结构 ``` first-flet-app/ ├── src/ # 源代码目录 │ ├── main.py # 主应用入口 │ ├── components/ # UI 组件模块 │ │ ├── file_manager.py # 文件管理器 │ │ ├── command_builder.py # 命令构建器 │ │ ├── executor.py # 命令执行器 │ │ └── output_viewer.py # 输出查看器 │ ├── models/ # 数据模型 │ │ ├── conversion_types.py # 转换类型定义 │ │ └── parameters.py # 参数定义 │ └── utils/ # 工具函数 │ ├── color_utils.py # 颜色工具 │ ├── validators.py # 验证器 │ ├── icon_utils.py # 图标工具 │ └── helpers.py # 辅助函数 ├── test/ # 测试目录 │ ├── unit/ # 单元测试 │ ├── integration/ # 集成测试 │ ├── ui/ # UI测试 │ ├── tools/ # 工具测试 │ └── run_tests.py # 测试运行器 ├── gsbox/ # gsbox 工具目录 ├── storage/ # 存储目录 ├── output/ # 输出目录 ├── requirements.txt # Python 依赖 ├── pyproject.toml # 项目配置 └── main.spec # PyInstaller 打包配置 ``` ## 🎯 支持的转换类型 ### PLY 格式转换 - PLY ↔ SPLAT、SPX、SPZ、SOG - PLY → PLY (过滤/变换) ### SPLAT 格式转换 - SPLAT ↔ PLY、SPX、SPZ、SOG ### SPX 格式转换 - SPX ↔ PLY、SPLAT、SPZ、SOG ### SPZ 格式转换 - SPZ ↔ PLY、SPLAT、SPX、SOG ### KSPLAT 格式转换 - KSPLAT ↔ PLY、SPLAT、SPX、SPZ、SOG ### SOG 格式转换 - SOG ↔ PLY、SPLAT、SPX、SPZ ### 其他操作 - **printsplat**: 打印 SPLAT 数据到文本文件 - **join**: 合并多个模型文件 - **info**: 查看模型文件详细信息 ## ⚙️ 转换参数 ### 质量参数 - **quality**: 转换质量 (0-100) - **comment**: 注释信息 - **output_version**: 输出版本 ### SPX/SPZ/SOG 专用参数 - **compression_type**: 压缩类型配置 - **gzip**: 使用 GZIP 压缩(参数值: 0) - **xz**: 使用 XZ 压缩(参数值: 1) - 对应 gsbox 参数: `-ct ` - **alpha**: Alpha 通道值 (0-255),对应 `-a ` - **sh_degree**: 球谐函数阶数 (0-3),对应 `-sh ` - **block_size**: 块大小,默认 65536,对应 `-bs ` - **block_format**: 块格式 (22, 220),对应 `-bf ` ### 变换参数(可选) - **transform_order**: 变换顺序 (RST, RTS, SRT, STR, TRS, TSR) - **rotate_x/y/z**: 坐标轴旋转角度 (度) - **scale**: 缩放因子 - **translate_x/y/z**: 坐标轴平移距离 ### K-means 参数(可选) - **kmeans_iterations**: K-means 迭代次数 (5-50) - **kmeans_nearest_nodes**: 最近节点数 (10-200) ## 🧪 测试 项目包含完整的测试套件,覆盖单元测试、集成测试、UI 测试和工具测试。 ### 运行所有测试 ```bash python test/run_tests.py ``` ### 运行特定类型测试 ```bash python test/run_tests.py unit # 单元测试 python test/run_tests.py integration # 集成测试 python test/run_tests.py ui # UI测试 python test/run_tests.py tools # 工具测试 ``` 详细测试文档请参考 [测试指南](test/TESTING_GUIDE.md)。 ## 📦 打包和分发 ### 创建可执行文件 ```bash python build.py --single-exe ``` ### 打包注意事项 - 确保包含所有必要的资源文件 - 配置正确的图标和元数据 - 测试打包后的应用程序 ## 🔧 开发指南 ### 代码风格 - 遵循 PEP 8 Python 编码规范 - 使用类型提示 - 添加适当的文档字符串 ### 添加新功能 1. 在相应的模块中实现功能 2. 添加必要的测试用例 3. 更新文档和 README 4. 验证所有测试通过 ### 调试技巧 - 使用 `test/tools/` 目录下的调试工具 - 查看详细的日志输出 - 使用断点和调试器 ## 🐛 常见问题 ### Q: 应用程序无法启动? A: 检查 Python 版本是否符合要求,确保所有依赖项已正确安装。 ### Q: 转换失败? A: 验证输入文件格式是否正确,检查 gsbox 是否已正确安装,查看详细错误日志。 ### Q: 界面显示异常? A: 尝试更新显卡驱动,检查系统 DPI 设置,确保 Flet 版本兼容。 ### Q: 如何处理大文件? A: 确保有足够的磁盘空间,考虑分批处理,监控系统资源使用情况。 ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交更改 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request ## 📄 许可证 ### 项目许可证 本项目采用 **GNU General Public License v3.0 (GPL-3.0)** 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ### 第三方依赖许可证 - **gsbox**:3D 高斯点云处理工具,采用 GPL-3.0 许可证 - **Flet**:现代化 UI 框架,采用 Apache 2.0 许可证 ### 许可证说明 由于本项目集成了 GPL-3.0 许可的 gsbox 插件,根据 GPL-3.0 的传染性原则,本项目整体必须采用 GPL-3.0 许可证。这意味着: - 任何基于本项目的衍生作品必须同样采用 GPL-3.0 许可证 - 对外分发包含本项目的软件时,必须提供完整的源代码 - 纯个人使用或者非商业性目的(不对外分发)的场景不受此限制 详细的许可证条款请查看 [GNU GPL v3.0 官方文档](https://www.gnu.org/licenses/gpl-3.0.html)。 ## 👥 联系方式 - **作者**: MarcoTin - **B站**: [https://space.bilibili.com/74228375](https://space.bilibili.com/74228375) - **项目地址**: [项目GitHub地址](https://gitee.com/playertk/3dgsconvert-tool) ## 🙏 致谢 - 感谢 [gsbox](https://github.com/gotoeasy/gsbox) 开发团队提供的优秀 3D 高斯点云处理工具 - 感谢 [Flet](https://github.com/flet-dev/flet) 框架提供的现代化 UI 解决方案 - 感谢所有贡献者和测试者的支持 --- **⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!**