将Blender中制作的模型导出为FBX并在QT中转化为QMl可直接使用的mesh

一、在Blender中将模型导出为FBX格式。

(一)导出前应进行的前置操作:

1.对模型应用位置、旋转和缩放。选中模型后,按Ctrl+A,选择应用全部。

2.正确为模型创建UV展开、材质及贴图。纹理会导入应用于不同材质ID的图像。建议使用.png或压缩图像格式。

3.对模型添加三角化修改器,并应用。

4.要导出为FBX格式,必须在Blender中安装并启用FBX导出插件。在默认安装Blender时,FBX format默认未启用。如果没有导出为FBX的选项,请按照以下步骤确保已启用插件:

1)选择编辑>偏好设置>插件

2)搜索fbx

3)现在应该可以看到该附加组件,选择其名称旁边的复选框将其启用。

(二)接下来,按照以下步骤导出为FBX:

1.选择文件>导出> FBX (.fbx)

2.在右侧框中,将路径模式切换为复制,并确认选中后方‘内嵌纹理’图标,将向前设置为Y向前,将向上设置为Z向上。对于动画,确保选中动画选项卡。

3.选择导出FBX按钮。

二、使用Balsam 资产导入工具处理Blender导出的FBX模型。

Balsam工具是一款命令行应用程序,是Qt Quick 3D资产调节管道的一部分。其目的是将在Maya3ds MaxBlender等数字内容创建工具中创建的资产转换为高效的运行时格式,以便在Qt Quick 3D中使用。在应用程序中直接引用交换格式是不可能的,也是不合理的,因为在资产内容可用于实时渲染之前,需要大量资源对其进行解析和调节。相反,交换格式可以通过Balsam工具转换为QML组件和资源(如几何图形和纹理)。

有balsamui工具,可通过窗口界面操作

使用方法

balsam [options] sourceFilename

使用示例

要转换testModel.fbx文件中的3D资产,可使用以下命令:

balsam testModel.fbx

这将生成以下文件:

  • meshes/testModel.mesh
  • maps/textureData.png
  • TestModel.qml

这里介绍UI工具的使用。

1.在QT安装目录下找到balsamui程序并打开,具体路径如Qt\6.8.1\mingw_64\bin。

2.在上方Input files输入框中,点击Browse,选择你要转换的fbx文件,在下方Output folder部分,点击Browse选择你要保存生成的文件的路径。

3.点击最上方Settings,有很多3D Scence的设置,根据需要勾选,工具默认会勾选一些必要的选项。与之相对应的命令行工具选项具体含义如下表,请自行对照。

4.点击Input界面最下方的Convert即可。

5.在Qt Quick 3D项目中,通过添加现有文件功能,将生成的qml文件、maps文件夹、meshes文件夹添加进入工程。

6.在Qt Quick 3D项目中使用该QML组件:

import QtQuick3D

TestModel{

   id: modelInstance

}

命令行工具选项含义

选项

含义

--outputPath, -o <outputPath>

设置生成文件的位置。默认为当前目录。

--calculateTangentSpace

计算导入网格的切线和位角。

--dropNormals

删除所有网格所有面的法线。

--fbxPreservePivots

保留 FBX 资产创建的额外枢轴节点(可创建较深的节点层次结构)

--findDegenerates

此步骤会搜索所有网格中的退化基元,并将其转换为适当的线或点。

--findInstances

此步骤会搜索重复的网格,并将其替换为对第一个网格的引用。

--findInvalidData

此步骤会搜索所有网格中的无效数据,如归零的法线矢量或无效的 UV 坐标,并删除/修复它们。这样做的目的是消除一些常见的输出错误。

--fixInfacingNormals

尝试确定哪些网格的法线矢量朝内,并将其反转。

--generateLightmapUV

执行光贴图UV展开并为网格生成额外的UV通道。这些UV数据将用于光贴图制作和运行时的光贴图

--generateMeshLevelsOfDetail

在可能的情况下,通过自动简化源网格来创建网格细节等级。

--generateMipMaps

强制所有导入的纹理组件生成 mip 贴图,以进行 mip 贴图纹理过滤

--generateNormals

为所有网格的所有面生成法线。

--generateSmoothNormals

为网格中的所有顶点生成平滑法线。

--globalScale

此步骤将对模型进行全局缩放。

--globalScaleValue <value>

全局缩放因子由--globalScale使用。

--improveCacheLocality

重新排列三角形,以提高顶点缓存的位置性。

--joinIdenticalVertices

识别并连接所有导入网格中的相同顶点数据集。

--optimizeGraph

优化场景层次结构的后处理步骤。

--optimizeMeshes

减少网格数量的后处理步骤。

--preTransformVertices

移除节点图,并使用节点的局部变换矩阵对所有顶点进行预变换。

--recalculateLodNormals

必要时为生成的网格细节级别计算新的法线。

--recalculateLodNormalsMergeAngle <value>

为"生成网格"的细节级别重新计算法线时,考虑法线平滑/合并的最大角度(度)。

--recalculateLodNormalsSplitAngle <value>

为"生成网格"的详细程度重新计算法线时,考虑法线分割的最大角度(度)。

--removeComponentAnimations

删除网格中的动画组件。

--removeComponentBoneWeights

删除网格中的骨骼权重。

--removeComponentColors

删除网格中的颜色组件。

--removeComponentNormals

删除网格的法线分量。

--removeComponentTangentsAndBitangents

删除网格上的切线和位切线分量。

--removeComponentTextures

删除网格中的任何内嵌纹理组件。

--removeComponentUVs

删除网格中的 UV 组件。

--removeRedundantMaterials

搜索多余/未引用的材料并删除它们。

--splitLargeMeshes

将大网格分割成更小的子网格。

--transformUVCoordinates

此步骤应用每个纹理的UV变换,并将其烘焙为独立的纹理坐标通道。

--useBinaryKeyframes

将关键帧数据记录为二进制文件

--useFloatJointIndices

为GLES 2.0存储浮点数形式的联合索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值