实例化渲染
实例化允许根据变化复制模型。与使用Repeater3D组件相比,模型及其图形资源仅分配一次。重复实例的渲染由GPU在低级别完成。根据模型的复杂程度,这可能带来几个数量级的性能提升。
实际上,实例化是通过定义一个表来完成的,该表指定了每个实例相对于基本模型如何修改。
您可以通过使用在组件 > Qt Quick 3D > Qt Quick 3D中可用的实例化组件,将实例化添加到场景中。
- 实例化
- 实例列表
- 实例列表条目.
从文件中读取实例表
在XML或二进制格式中从文件读取实例表的实例化组件。二进制文件格式使用与上传到GPU的表相同的布局,因此它可以直接映射到内存中。
为了有效,XML文件必须有一个顶层实例表元素。每个实例都由实例表内的实例元素表示。未知元素被静默忽略。
实例元素可以有多个属性。颜色属性通过使用SVG颜色名称(如"red"、"green"或"lightsteelblue")或十六进制表示来指定。Vector3d
和vector4d
属性通过一个以空格分隔的数字字符串指定,未指定的尾随数字表示零。支持的属性包括位置、缩放、欧拉旋转、四元数、自定义和颜色。有关实例表更多信息,请参阅有关FileInstancing QML类型的文档。
要使用实例化组件,可以从组件中将它拖放到场景,在导航器中的场景。
实例化属性
在 属性 > 文件实例化 > 源 中定义包含实例数据的 XML 或二进制文件的位置。
如果文件名有 .bin
扩展名,它假定是指二进制文件。否则它假定是指 XML 文件。如果指定了 XML 文件 foo.xml
,并且文件 foo.xml.bin
存在,则将加载二进制文件 foo.xml.bin
。
定义好 实例化 组件的 源 属性后,在 导航器 中选择一个模型,然后在 属性 > 模型 > 实例化 中选择 实例化 组件的名称。
使用实例列表构建实例表
使用 实例列表 组件来在 Qt 设计工作室中定义实例表。实例表由定义为了 实例列表条目 组件的实例组成,这些组件可以有属性绑定和动画。这提供了很大的灵活性,但也导致了内存开销。因此,不建议对包含大量实例的命令表使用 实例列表。此外,对条目的任何属性更改都将导致整个实例表重新计算并上传到 GPU。
要构建实例表
- 将 实例列表 组件从 组件 > Qt Quick 3D > Qt Quick 3D 拖放到 场景 中的 导航器。
- 将 实例列表条目 组件拖放到 实例列表 组件中创建列表项。
- 在 导航器 中选择 实例列表,然后在 属性 > 实例列表 > 实例 中,通过使用下拉菜单选择要包含在 实例列表 中的每个 实例列表条目。您可以通过单击 图标添加更多属性字段。
- 要定义 实例列表条目,请在 导航器 中选择它,并在 属性 > 实例列表条目 中指定其属性。
- 在 导航器 中选择一个模型组件,然后在 属性 > 实例化 中选择 实例列表 组件的名称。
定义实例列表条目
使用 实例列表条目 组件来指定 实例列表 中的每个实例。
每个 实例列表条目 属性都可以有 绑定 和动画。在 导航器 中选择一个 实例列表条目 来指定 属性 > 实例列表条目 中的属性。
使用 颜色 属性来 指定实例的颜色。
使用 位置 属性指定实例的位置,并通过定义沿 x、y 和 z 轴的缩放因子来指定通过 缩放 属性定义的比例。
使用 旋转 属性设置实例的旋转,该属性指定实例绕 x、y 和 z 轴的旋转艾奥拉向量(以度为单位)。
在特定的 Qt 许可证下可用。
了解更多信息。