Balsam资源导入工具

该Balsam工具是一款命令行应用程序,是Qt Quick 3D资源处理流程的一部分。其目的是将像Maya3ds MaxBlender这样的数字内容创作工具中创建的资源转换为高效的运行时格式,以便与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许可的。