PySide6.QtQuick3D.QQuick3DInstancing

class QQuick3DInstancing

用于定义实例表的基类。More_

PySide6.QtQuick3D.QQuick3DInstancing 的继承图

概要

属性

方法

虚拟方法

插槽

信号

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QQuick3DInstancing 类可以被继承,用于在 Qt Quick 3D 场景中为模型指定自定义实例表。

这个类是抽象的:要使用它,请创建一个子类并实现 getInstanceBuffer()

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property depthSortingEnabledᅟ: bool

保存实例表的深度排序启用值。启用后,实例将从离摄像机最远的实例到最近的实例进行排序和渲染,即从后到前。如果禁用(默认情况下),实例将按照它们在实例表中指定的顺序进行渲染。

注意

实例仅相互排序。实例不会与场景中的其他对象进行排序。

注意

排序增加了帧准备时间,特别是在实例数量较大的情况下。

Access functions:
property hasTransparencyᅟ: bool

如果实例化表中包含在渲染模型时应使用的alpha值,请将此属性设置为true。此属性仅在模型不透明时才有意义:如果模型具有透明的材质,或者不透明度小于1,则无论此属性如何设置,都将使用表中的alpha值。

注意

启用alpha混合可能会导致实例重叠时出现渲染问题。详情请参阅alpha混合和实例化文档。

Access functions:
property instanceCountOverrideᅟ: int

设置此属性以限制实例数量,而无需重新生成或重新上传实例表。这允许以非常低的成本对渲染的实例数量进行动画处理。

Access functions:
__init__([parent=None])
Parameters:

父级QQuick3DObject

static calculateTableEntry(position, scale, eulerRotation, color[, customData={}])
Parameters:
Return type:

InstanceTableEntry

position scale eulerRotation colorcustomData 转换为标准顶点着色器期望的实例表格式。典型模式:

QByteArray MyInstanceTable::getInstanceBuffer(int *instanceCount)
{
    QByteArray instanceData;

    ...

    auto entry = calculateTableEntry({xPos, yPos, zPos}, {xScale, yScale, zScale}, {xRot, yRot, zRot}, color, {});
    instanceData.append(reinterpret_cast<const char *>(&entry), sizeof(entry));
static calculateTableEntryFromQuaternion(position, scale, rotation, color[, customData={}])
Parameters:
Return type:

InstanceTableEntry

position scale rotation colorcustomData 转换为标准顶点着色器所期望的实例表格式。

这与 calculateTableEntry() 相同,只是使用四元数来指定旋转。

depthSortingEnabled()
Return type:

布尔

属性 depthSortingEnabledᅟ 的获取器。

depthSortingEnabledChanged()

属性 depthSortingEnabledᅟ 的通知信号。

abstract getInstanceBuffer()
Return type:

QByteArray

实现此函数以返回实例表的内容。实例的数量应在instanceCount中返回。子类负责在必要时缓存结果。如果实例表发生变化,子类应调用markDirty()

hasTransparency()
Return type:

布尔

另请参阅

setHasTransparency()

属性 hasTransparencyᅟ 的获取器。

hasTransparencyChanged()

属性 hasTransparencyᅟ 的通知信号。

instanceBuffer(instanceCount)
Parameters:

instanceCount – int

Return type:

QByteArray

instanceColor(index)
Parameters:

索引 – int

Return type:

QColor

instanceCountOverride()
Return type:

整数

属性 instanceCountOverrideᅟ 的获取器。

instanceCountOverrideChanged()

属性 instanceCountOverrideᅟ 的通知信号。

instanceCustomData(index)
Parameters:

索引 – int

Return type:

QVector4D

instanceNodeDirty()
instancePosition(index)
Parameters:

索引 – int

Return type:

QVector3D

instanceRotation(index)
Parameters:

索引 – int

Return type:

QQuaternion

instanceScale(index)
Parameters:

索引 – int

Return type:

QVector3D

instanceTableChanged()
markDirty()

标记实例数据已更改,必须重新上传。

setDepthSortingEnabled(enabled)
Parameters:

enabled – 布尔值

另请参阅

depthSortingEnabled()

属性 depthSortingEnabledᅟ 的设置器。

setHasTransparency(hasTransparency)
Parameters:

hasTransparency – 布尔值

另请参阅

hasTransparency()

属性 hasTransparencyᅟ 的设置器。

setInstanceCountOverride(instanceCountOverride)
Parameters:

instanceCountOverride – int

属性 instanceCountOverrideᅟ 的设置器。

class InstanceTableEntry

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

PySide6.QtQuick3D.QQuick3DInstancing.InstanceTableEntry.row0
PySide6.QtQuick3D.QQuick3DInstancing.InstanceTableEntry.row1
PySide6.QtQuick3D.QQuick3DInstancing.InstanceTableEntry.row2
PySide6.QtQuick3D.QQuick3DInstancing.InstanceTableEntry.color
PySide6.QtQuick3D.QQuick3DInstancing.InstanceTableEntry.instanceData
getColor()
Return type:

QColor

getPosition()
Return type:

QVector3D

getRotation()
Return type:

QQuaternion

getScale()
Return type:

QVector3D