Balsam资源导入工具
该Balsam工具是一款命令行应用程序,是Qt Quick 3D资源处理流程的一部分。其目的是将像Maya、3ds Max或Blender这样的数字内容创作工具中创建的资源转换为高效的运行时格式,以便与Qt Quick 3D一起使用。直接在应用程序中引用交换格式是不可行的,也没有意义,因为需要大量的资源来解析和处理资源内容,使其可用于实时渲染。相反,这些交换格式可以通过Balsam工具转换为QML组件以及诸如几何和纹理之类的资源。
使用方法
balsam [options] sourceFilename
示例用法
要使用balsam将名为testModel.fbx
的文件中的3D资源进行转换,可以使用以下命令
balsam testModel.fbx
这将生成以下文件
meshes/testModel.mesh
TestModel.qml
然后可以使用这个QML组件在Qt Quick 3D项目中使用
import QtQuick3D TestModel { id: modelInstance }
支持的3D资源类型
- Wavefront (.obj)
- COLLADA (.dae)
- FBX (.fbx)
- STL (.stl)
- PLY (.ply)
- GLTF2 (.gltf, .glb)
一些支持这些格式的资源允许嵌入或引用纹理资产。只要Qt也支持这些资源,这些资源也是支持的。
基于图像的光照烘焙
Balsam也支持从.hdr文件生成预过滤的立方体贴图图像。指定以.hdr扩展名结尾的文件作为输入,将生成一个具有相同名称但扩展名为.ktx的文件。应用程序可以分发结果.ktx文件,并从纹理中引用该文件,该纹理与SceneEnvironment::lightProbe相关联。这避免了基于图像的光照所需的昂贵运行时处理。有关更多信息,请参阅预生成IBL立方体贴图。
支持选项
以下表格列出了balsam转换资源文件时识别的命令行选项
注意:对于每个布尔选项,可以使用--disable-<option-name>
。
选项 | 描述 |
---|---|
--outputPath, -o <outputPath> | 设置放置生成的文件的位置。默认为当前目录。 |
--calculateTangentSpace | 计算导入网格的切线和副切线。 |
--joinIdenticalVertices | 识别并连接所有导入网格中的相同顶点数据集。 |
--generateNormals | 为所有网格的所有面生成法线。 |
--generateSmoothNormals | 为网格中的所有顶点生成平滑法线。 |
– 分割大网格 | 将大网格分割成更小的子网格。 |
– 预变换顶点 | 移除节点图,并使用节点局部的变换矩阵预变换所有顶点。 |
– 提高缓存局部性 | 重新排序三角形,以获得更好的顶点缓存局部性。 |
– 移除冗余材质 | 查找冗余/未引用的材质并移除它们。 |
– 修复向内指的法线 | 尝试确定哪些网格有指向内部的法线向量并反转它们。 |
– 查找退化项 | 此步骤在所有网格中搜索退化原语,并将它们转换为适当的线或点。 |
– 查找无效数据 | 此步骤在所有网格中搜索无效数据,例如归零的法线向量或无效的UV坐标,并移除/修复它们。这是为了消除一些常见的导出器错误。 |
– 变换UV坐标 | 此步骤应用每纹理UV变换,并将它们烘焙到独立的纹理坐标通道中。 |
– 查找实例 | 此步骤搜索重复的网格,并用第一个网格的引用替换它们。 |
– 优化网格 | 一个后处理步骤,用于减少网格数量。 |
– 优化图 | 一个后处理步骤,用于优化场景层次结构。 |
– 使用浮点关节索引 | 将关节索引存储为浮点数以供GLES 2.0使用。 |
– 全局缩放 | 此步骤将对模型执行全局缩放。 |
– 全局缩放值 <值> | 由 –全局缩放 使用的全局缩放因子。 |
– 忽略法线 | 忽略所有网格的所有面的法线。 |
– 移除组件法线 | 从网格中移除法线组件。 |
– 移除组件切线和平行切线 | 从网格中移除切线和切线组件。 |
– 移除组件颜色 | 从网格中移除任何颜色组件。 |
– 移除组件UV | 从网格中移除任何UV组件。 |
– 移除组件骨权重 | 从网格中移除任何骨权重。 |
– 移除组件动画 | 从网格中移除任何动画组件。 |
– 移除组件纹理 | 从网格中移除任何嵌入式纹理组件。 |
– fbx保留枢轴 | 保留由FBX资产创建的额外枢轴节点(可以创建深层节点层次结构)。 |
– 生成米泊图 | 强制所有导入的纹理组件生成米泊图以进行米泊图纹理过滤。 |
– 使用二进制关键帧 | 将关键帧数据记录为二进制文件。 |
– 生成光照贴图UV | 执行光照贴图UV展开并为网格生成额外的UV通道。然后,此UV数据由光照贴图烘焙器和运行时光照贴图使用。 |
– 生成网格细节级别 | 如有必要,通过自动简化源网格来创建网格细节级别。 |
– 重新计算细节级别法线 | 在必要时为生成的网格细节级别计算新的法线。 |
– 重新计算细节级别法线合并角度 <值> | 在重新计算用于生成的网格细节级别的正常情况下,考虑的正常平滑/合并的最大角度(以度为单位)。 |
– 重新计算细节级别法线分割角度 <值> | 在重新计算用于生成的网格细节级别的正常情况下,考虑的正常分割的最大角度(以度为单位)。 |
© 2024Qt公司有限公司。本文档中包含的文档贡献是各自所有者的版权。本文档是根据自由软件基金会发布的GNU自由文档许可版1.3许可的。