从Qt 3D Studio导出
遵循以下指南以在将项目从Qt 3D Studio转换为Qt设计工作室时获得最佳结果。
最佳实践
- 如果UI中的某个部分明显是2D的,请不要从Qt 3D Studio演示中导入它。请在Qt设计工作室中直接实现。
- QML流不能直接导入到Qt设计工作室中的QML元素。由于Qt设计工作室中QML文件没有导入功能,因此需要手动复制。
- 如果您导入整个Qt 3D Studio项目(
.uia
文件),则只使用其实际需要的一部分。对于需要的部分,使用将组件移动到单独的文件,并最终删除项目结构中的其余内容。 - 大多数导入的QML文件中都有额外的
Node
元素级别,并且应该删除以提高性能。一般而言,只有一个子节点的每个Node被认为是一个需要删除的额外级别。 - Qt 3D Studio的幻灯片成为Qt设计工作室的状态,状态变化可能存在问题。始终遍历每个状态变化以确保它们正确无误。
导入资产
自定义材料
自定义材料(Qt 3D Studio中的something.shader文件)未正确导入,需要手动修复。
- 它们被导入为
CustomMaterial { id: something; source: "something" }
,既不起作用也不执行任何操作。 - 完全删除source: "something"。
- something.shader中的顶点着色器部分需要复制到
CustomMaterial
内部的Shader { stage: Shader.Vertex; shader: "vertex shader code here" }
。 - 在something.shader的Metadata中的属性需要手动以相同的名称和正确的类型作为QML属性导入到
CustomMaterial
元素中。 - 将
import QtQuick3D.Materials 1.15
导入语句添加到包含CustomMaterial
元素的文件中。 - 如果自定义材质使用纹理,它们不会自动导入,必须手动添加到项目结构中。
- 许多自定义材质由于Qt Design Studio 1.5中一个开放的bug,在3D或2D视图中无法渲染。要使它们显示,需要运行项目。
标准材质
标准材质的一些属性可能无法正确导入。
- 某些属性的合理值范围在Qt 3D Studio和Qt Design Studio之间可能已更改,需要手动重新定义。
- 可以添加额外的属性,并且可以手动删除。
模型
模型有一些额外的属性(分组),可以删除。
示例:将MyOwnCluster项目从Qt 3D Studio转换为Qt Design Studio
Qt 3D Studio中的My Own Cluster项目
以下步骤描述了如何将My Own Cluster项目从Qt 3D Studio转换为Qt Design Studio。
在Qt Design Studio中创建新项目
- 要在Qt Design Studio中创建新项目,请选择文件 > 新文件或项目,或在欢迎模式中选择新建项目。
- Qt Design Studio在向导中提供了创建不同类型项目的模板,以辅助创建新项目。选择Qt Quick 3D应用模板开始您的全新3D项目。
- 在名称字段中,输入项目的名称。在创建于字段中,输入项目文件的位置,然后选择下一步。
- 在屏幕分辨率字段中,选择用于在桌面或设备上预览UI的屏幕分辨率。您必须选择预定义的屏幕分辨率,稍后将根据原始项目的宽度和高度调整。在Qt Quick控件样式字段中,选择预定义的UI样式,然后选择完成。
- 您的新项目已创建完成。有关在Qt Design Studio中创建项目的更多信息,请参阅创建项目。有关如何开始使用Qt Design Studio的更多信息,请参阅入门。
MyOwnCluster入门
- 返回Qt 3D Studio中的项目,检查演示的大小。选择编辑 > 演示设置,以查看宽度 x 高度的值。
- 根据Qt 3D Studio演示中的屏幕大小调整Qt Design Studio中项目的画布大小。通过在代码视图中编辑Constants.qml文件来实现。如果您看不到代码视图,请选择窗口 > 视图,然后选择代码复选框。在项目视图中,打开导入子文件夹,然后打开以项目命名的子文件夹,双击Constants.qml。将readonly property int width和readonly property int height的值编辑为与Qt 3D Studio演示中的宽度 x 高度值匹配。
- 要删除由向导创建的占位符,请多选文本和view3D组件(Ctrl + 鼠标左键单击),在导航器中右键单击所选项目,然后选择编辑 > 删除。
导入资产
- 选择资产 > .
- 选择要导入的 Qt 3D Studio 项目中的
.uia
文件,然后选择 打开。 - 选择 导入,导入完成后,选择 关闭。
- 从 Qt 3D Studio 导入的 2D 资产现在出现在 > 资产 中。
- 从导入的 Qt 3D Studio 项目生成的 QML 组件现在作为可用的导入出现在 组件 下的 QML 类型。选择 Quick3DAssets.MyOwnCluster 将其导入到您的项目中。
- 导入的 QML 类型现在出现在 组件 中,可以将其添加到项目。
向项目中添加组件
- 将 MyOwnCluster 从 组件 中的 我的 Quick3D 组件 拖到 2D 视图中。
- 在 导航器 中,右击 myOwnCluster 并选择 进入组件。
- 在 代码 视图中找到有问题的行。
- 在行的开头放置两个斜杠(或删除该行)来取消注释有问题的行。
- 在导航器中,访问项目中的每个组件,注释掉(或删除)任何找到的有问题的行。
- 现在您应该在 2D 视图中看到项目的一些部分。
转换 3D 元素
- 将 subpresentation_ADAS 从 组件 > {我的 3D 组件} 拖到 导航器 的层文件夹中。
- 要删除旧的子演示图形矩形,在文件名(在此项目中为 subpresentation_ADAS2_u52017)上右键单击,然后选择 编辑 > 删除。
- 进入组件 subpresentation_ADAS。
- 根据原始 Qt 3D Studio 项目重新定位 3D 视图中的对象和/或摄像机。在某些情况下,简单地更改 z 位置的正负即可达到所需的场景。
参阅 3D 视图以获取有关如何编辑 3D 场景的更多信息。
- 根据原始项目在 subpresentation_ADAS 中重新创建动画。有关在 Qt 设计工作室中创建动画的更多信息,请参阅 创建时间轴动画。
- 转到 时间轴 视图以审阅项目的时序。
转换 2D 元素
- 使用 Qt 设计工作室中可用的 2D QML 元素重新创建原始项目的 2D 元素(所有层)。您可以使用导入的 2D 层作为创建元素的向导。如果原始项目中的 2D 元素有旋转,尤其是在 3D 层中,请确保向 Qt 设计工作室项目添加模拟原始旋转的旋转。例如,具有透视摄像机的单一轴旋转在纯 2D 中需要两个轴的旋转。您可能需要使用 代码 视图来实现类似于 Qt 3D Studio 中对象旋转的旋转。有关在 项 上指定高级转换的更多信息,请参阅 转换。
- 在重新创建 2D 元素后,从 导航器 中删除 2D 层(telltaleLayer_u39332),右键单击组件,然后选择 编辑 > 删除。
- 接下来,您需要从 3D 层(speed_u20335 和 rPM_u10371 来自 layer_32325)中删除 2D 元素。右键单击元素,然后选择 编辑 > 删除。
- 以与 3D 元素相同的方式重新创建 2D 元素的动画。
转换 QML 流
- 在文件资源管理器中找到 QML 流文件。
- 将 QML 流文件移动到导入的主要文件夹下(在此示例中向上一个级别)。
- 确保 QML 流文件的名称以大写字母开头,以便 Qt 设计工作室能够将它们识别为 QML 组件文件。
- 返回 Qt 设计工作室,并进入 MyOwnCluster 组件。现在 QML 流组件出现在 我的 3D 组件 中。
- 将 QML 流组件拖放到 导航器 中的 MyOwnCluster。
- 转到 状态 视图,并在 属性 视图的 可见性 选项卡中,使 QML 流组件仅在正确的状态下可见。
- 接下来,根据原始项目重新创建 QML 流的动画。
- 重新创建现在作为组件导入的 QML 流的所有关键帧。
整理项目结构
- 转到文件资源管理器并整理项目结构,删除在 Qt 设计工作室项目中未使用的文件夹和文件。
- 在 Qt 设计工作室的 项目 视图中也可以删除单个文件。要删除文件,右键单击它,选择 删除文件,然后选择 是。
- 这是整理后的项目结构。
完成
您现在已将 Qt 3D Studio 项目转换为 Qt 设计工作室。
在特定 Qt 许可下可用。
了解更多信息。