# LTX2GLTF **Repository Path**: eferaw/ltx2gltf ## Basic Information - **Project Name**: LTX2GLTF - **Description**: LTX到gltf的转换脚本 - **Primary Language**: Unknown - **License**: Zlib - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-21 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LTX2GLTF 本项目提供 `LTX -> glTF/glb` 转换能力,包含两个主要部分: - `LTX2GLTF/`:核心转换库,供其他 C++ 程序调用 - `TestLTX2GLTF/`:控制台测试程序,用于手工执行转换 本文只介绍这两个目录的使用方法。 ## 1. LTX2GLTF 的使用方法 `LTX2GLTF` 采用 PIMPL 设计模式,对外只暴露一个简洁的转换接口,头文件位于 [LTX2GLTF/LTX2GLTF.h](./LTX2GLTF/LTX2GLTF.h)。 ### 1.1 公开接口 ```cpp namespace LTX2GLTFParas { enum class OutputFormat { Gltf, Glb }; struct ConversionParams { bool prettyPrintJson = true; bool generateNormals = true; bool deduplicateMeshes = true; OutputFormat outputFormat = OutputFormat::Gltf; }; } // namespace LTX2GLTFParas class LTX2GLTF { public: LTX2GLTF(); ~LTX2GLTF(); bool ConvertLTXFileToGLTF( const std::string& inputPath, const std::string& outputPath, const LTX2GLTFParas::ConversionParams& paras = {}); std::string GetLastError() const; }; ``` ### 1.2 参数说明 - `inputPath`:输入的 `.ltx` 文件路径 - `outputPath`:输出文件路径 - 当 `outputFormat = Gltf` 时,应传入 `.gltf` 文件路径 - 当 `outputFormat = Glb` 时,应传入 `.glb` 文件路径 - `prettyPrintJson`:仅对 `.gltf` 生效,控制 JSON 是否格式化输出 - `generateNormals`:控制是否自动生成法线 - `deduplicateMeshes`:控制是否复用重复 mesh - `GetLastError()`:当转换失败时返回错误信息 ### 1.3 最小示例 导出为 `.gltf`: ```cpp #include "LTX2GLTF.h" #include int main() { LTX2GLTF converter; LTX2GLTFParas::ConversionParams params; params.outputFormat = LTX2GLTFParas::OutputFormat::Gltf; const bool ok = converter.ConvertLTXFileToGLTF( "D:\\model.ltx", "D:\\out\\model.gltf", params); if (!ok) { std::cerr << converter.GetLastError() << std::endl; return 1; } return 0; } ``` 导出为 `.glb`: ```cpp LTX2GLTF converter; LTX2GLTFParas::ConversionParams params; params.outputFormat = LTX2GLTFParas::OutputFormat::Glb; if (!converter.ConvertLTXFileToGLTF( "D:\\model.ltx", "D:\\out\\model.glb", params)) { std::cerr << converter.GetLastError() << std::endl; } ``` ### 1.4 输出说明 - 单个零件导出为 `.gltf` 时,通常会生成: - `xxx.gltf` - `xxx.bin` - 装配体导出为 `.gltf` 时,根目录下会生成: - 一个根 `xxx.gltf` - 多个按 mesh 拆分的 `.bin` 文件 - 导出为 `.glb` 时,通常只生成一个单独的 `.glb` 文件 ## 2. TestLTX2GLTF 的使用方法 `TestLTX2GLTF` 是一个控制台程序,用于快速测试 `LTX2GLTF` 的转换效果。 ### 2.1 在 Visual Studio 中运行 将 `TestLTX2GLTF` 设为启动项目后直接运行,会打开命令行窗口并进入循环交互模式。 程序内置默认路径: - 默认 LTX 目录: - `D:\ACIS\ACIS_lighter\LTX2GLTF\code\LTX2GLTF\TestCase\Part` - 默认 glTF/glb 输出根目录: - `D:\ACIS\ACIS_lighter\LTX2GLTF\code\GLTF` 在交互模式下: - 直接输入文件名即可,例如: - `1_RibbedHandwheel.ltx` - `1_RibbedHandwheel` - 如果未写扩展名,程序会自动补 `.ltx` - 输出结果会保存到: - `默认输出根目录\模型同名文件夹\` 例如输入: ```text 1_RibbedHandwheel ``` 若当前格式为 `gltf`,则输出类似: ```text D:\ACIS\ACIS_lighter\LTX2GLTF\code\GLTF\1_RibbedHandwheel\1_RibbedHandwheel.gltf ``` ### 2.2 交互命令 交互模式支持以下命令: - `/inputdir`:修改默认 LTX 目录 - `/outputdir`:修改默认输出根目录 - `/format`:切换输出格式,支持 `gltf` 或 `glb` - `/help`:重新打印帮助信息 - `/quit`:退出程序 ### 2.3 命令行参数模式 除了交互模式,也可以直接通过命令行参数运行: ```bash TestLTX2GLTF [gltf|glb] ``` 示例: ```bash TestLTX2GLTF D:\demo\part.ltx D:\demo\out gltf TestLTX2GLTF D:\demo\part.ltx D:\demo\out glb ``` 执行成功后,程序会在指定输出目录下生成与输入文件同名的 `.gltf` 或 `.glb` 文件。 ## 3. 构建说明 - 本项目依赖以下第三方库: - `zipper` `v1.0.4` - `zlib` `v1.2.13` - `draco` `v1.5.7` - 这些依赖库位于仓库的 `3rdParty/` 目录下,并已在 Visual Studio 工程中完成配置(可替换为自己的库) - 当前工程建议使用 `x64` 配置构建 - `LTX2GLTF` 与 `TestLTX2GLTF` 均已配置为 Visual Studio 工程 - 一般情况下,先构建 `LTX2GLTF`,再运行 `TestLTX2GLTF` 即可