实例化渲染

实例化允许根据变化复制模型。与使用Repeater3D组件相比,模型及其图形资源仅分配一次。重复实例的渲染由GPU在低级别完成。根据模型的复杂程度,这可能带来几个数量级的性能提升。

实际上,实例化是通过定义一个表来完成的,该表指定了每个实例相对于基本模型如何修改。

您可以通过使用在组件 > Qt Quick 3D > Qt Quick 3D中可用的实例化组件,将实例化添加到场景中。

  • 实例化
  • 实例列表
  • 实例列表条目.

从文件中读取实例表

在XML或二进制格式中从文件读取实例表的实例化组件。二进制文件格式使用与上传到GPU的表相同的布局,因此它可以直接映射到内存中。

为了有效,XML文件必须有一个顶层实例表元素。每个实例都由实例表内的实例元素表示。未知元素被静默忽略。

实例元素可以有多个属性。颜色属性通过使用SVG颜色名称(如"red"、"green"或"lightsteelblue")或十六进制表示来指定。Vector3dvector4d属性通过一个以空格分隔的数字字符串指定,未指定的尾随数字表示零。支持的属性包括位置、缩放、欧拉旋转、四元数、自定义和颜色。有关实例表更多信息,请参阅有关FileInstancing QML类型的文档。

要使用实例化组件,可以从组件中将它拖放到场景,在导航器中的场景

实例化属性

属性 > 文件实例化 > 中定义包含实例数据的 XML 或二进制文件的位置。

"File Instancing in the Properties View"

如果文件名有 .bin 扩展名,它假定是指二进制文件。否则它假定是指 XML 文件。如果指定了 XML 文件 foo.xml,并且文件 foo.xml.bin 存在,则将加载二进制文件 foo.xml.bin

定义好 实例化 组件的 属性后,在 导航器 中选择一个模型,然后在 属性 > 模型 > 实例化 中选择 实例化 组件的名称。

"The Instancing property"

使用实例列表构建实例表

使用 实例列表 组件来在 Qt 设计工作室中定义实例表。实例表由定义为了 实例列表条目 组件的实例组成,这些组件可以有属性绑定和动画。这提供了很大的灵活性,但也导致了内存开销。因此,不建议对包含大量实例的命令表使用 实例列表。此外,对条目的任何属性更改都将导致整个实例表重新计算并上传到 GPU。

"Instance List and Instance Entries in Navigator"

要构建实例表

  1. 实例列表 组件从 组件 > Qt Quick 3D > Qt Quick 3D 拖放到 场景 中的 导航器
  2. 实例列表条目 组件拖放到 实例列表 组件中创建列表项。

    "Instance List and Instance Entries in Navigator"

  3. 导航器 中选择 实例列表,然后在 属性 > 实例列表 > 实例 中,通过使用下拉菜单选择要包含在 实例列表 中的每个 实例列表条目。您可以通过单击 图标添加更多属性字段。
  4. 要定义 实例列表条目,请在 导航器 中选择它,并在 属性 > 实例列表条目 中指定其属性。
  5. 导航器 中选择一个模型组件,然后在 属性 > 实例化 中选择 实例列表 组件的名称。

定义实例列表条目

使用 实例列表条目 组件来指定 实例列表 中的每个实例。

每个 实例列表条目 属性都可以有 绑定 和动画。在 导航器 中选择一个 实例列表条目 来指定 属性 > 实例列表条目 中的属性。

"Instance List Entry Properties"

使用 颜色 属性来 指定实例的颜色

使用 位置 属性指定实例的位置,并通过定义沿 x、y 和 z 轴的缩放因子来指定通过 缩放 属性定义的比例。

使用 旋转 属性设置实例的旋转,该属性指定实例绕 x、y 和 z 轴的旋转艾奥拉向量(以度为单位)。

在特定的 Qt 许可证下可用。
了解更多信息。