PySide6.QtGraphs.QCustom3DVolume

class QCustom3DVolume

QCustom3DVolume 类向图表添加了一个体积渲染对象。更多

PySide6.QtGraphs.QCustom3DVolume 的继承图

概要

属性

方法

信号

注意

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

详细描述

体积渲染对象是一个带有3D纹理的盒子。体积支持三个切片平面,每个平面沿着体积的一个主轴。

渲染体积对象非常消耗性能,尤其是当体积大部分透明时,因为体积的内容是通过光线追踪来渲染的。性能几乎与体积在屏幕上占据的像素数量成线性比例,因此在较小的视图中显示体积或限制图形的缩放级别是提高性能的简单方法。同样,体积纹理的尺寸对性能有很大影响。如果帧率比体积内容的像素完美渲染更重要,考虑通过将useHighDefShader属性设置为false来关闭高清晰度着色器。

注意

体积对象使用3D纹理,这在OpenGL ES2环境中不受支持。

注意

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

property alphaMultiplierᅟ: float

此属性保存渲染时体积纹理的每个纹素的 alpha 值所乘的值。

此属性可用于为体积引入统一的透明度。如果preserveOpacitytrue,则仅影响最初具有一定透明度的纹理元素,完全透明的纹理元素不受影响。该值不能为负数。默认为1.0f

Access functions:
property colorTableᅟ: list of unsigned int

此属性包含用于索引纹理格式的颜色数组。

如果纹理格式未被索引,则不使用此数组,可以为空。

默认为 0

Access functions:
property drawSliceFramesᅟ: bool

此属性保存是否在体积周围绘制切片框架。

如果此属性值为 true,则会在体积周围绘制由切片索引属性指示的切片框架。如果为 false,则不会绘制任何切片框架。

绘制切片框架与绘制切片是独立的,因此您可以显示完整的体积,并仍然在其周围绘制切片框架。这在您使用renderSlice()来显示图形本身之外的切片时非常有用。

默认为 false

Access functions:
property drawSlicesᅟ: bool

此属性保存是否绘制指定的切片而不是整个体积。

如果此属性值为true,则将绘制由切片索引属性指示的切片,而不是整个体积。如果为false,则始终绘制整个体积。默认为false

注意

切片总是沿着项目轴绘制,因此如果项目旋转,切片也会旋转。

Access functions:
property preserveOpacityᅟ: bool

此属性表示是否将alpha乘数应用于所有纹理像素。

如果此属性值为truealphaMultiplier仅应用于已经具有一定透明度的纹理元素。如果为false,则乘数应用于所有纹理元素的alpha值。默认为true

另请参阅

alphaMultiplier

Access functions:
property sliceFrameColorᅟ: QColor

此属性保存切片框架的颜色。

不支持透明切片框架颜色。

默认为黑色。

另请参阅

drawSliceFrames

Access functions:
property sliceFrameGapsᅟ: QVector3D

此属性保存体积本身与框架在每个维度上留下的空气间隙的大小。

不同维度上的间隙可能不同。这些值是相同维度上体积厚度的分数。这些值不能为负数。

默认为 QVector3D(0.01, 0.01, 0.01)

另请参阅

drawSliceFrames

Access functions:
property sliceFrameThicknessesᅟ: QVector3D

此属性保存每个维度的切片框架的厚度。

这些值是相同维度中体积厚度的分数。这些值不能为负数。

默认为 QVector3D(0.01, 0.01, 0.01)

另请参阅

drawSliceFrames

Access functions:
property sliceFrameWidthsᅟ: QVector3D

此属性保存切片框架的宽度。

宽度在不同的维度上可能不同,因此您可以通过将该维度的值设置为零来省略在体积的某些侧面绘制框架。这些值是相同维度中体积厚度的分数。这些值不能为负数。

默认为 QVector3D(0.01, 0.01, 0.01)

另请参阅

drawSliceFrames

Access functions:
property sliceIndexXᅟ: int

此属性保存纹理数据中的x维度索引,指示要显示的垂直切片。

将任何维度设置为负值表示不绘制该维度的切片或切片框架。如果所有维度都为负值,则不绘制任何切片或切片框架,并且体积正常绘制。

默认为 -1

Access functions:
property sliceIndexYᅟ: int

此属性保存纹理数据中的y维度索引,指示要显示的水平切片。

将任何维度设置为负值表示不绘制该维度的切片或切片框架。如果所有维度都为负值,则不绘制任何切片或切片框架,并且体积正常绘制。

默认为 -1

Access functions:
property sliceIndexZᅟ: int

此属性保存纹理数据中的z维度索引,指示要显示的垂直切片。

将任何维度设置为负值表示不绘制该维度的切片或切片框架。如果所有维度都为负值,则不绘制任何切片或切片框架,并且体积正常绘制。

默认为 -1

Access functions:
property textureDataᅟ: QList

此属性保存包含纹理数据的数组,格式由textureFormat指定。

这个数组的大小必须至少为 (textureDataWidth * textureHeight * textureDepth * texture format color depth in bytes)。

3D纹理由一堆2D子纹理定义。每个子纹理的大小必须相同(textureDataWidth * textureHeight),堆栈的深度由textureDepth属性定义。每个2D纹理中的数据与具有相同格式的QImage数据相同,因此可以使用QImage::bits()来提供每个子纹理的数据。

新数组的所有权转移到QCustom3DVolume实例。如果设置了另一个数组,则先前的数组将被删除。如果再次设置相同的数组,则假定数组内容已更改并触发图形渲染。

注意

数据的每个x维度行需要32位对齐。如果textureFormat是QImage::Format_Indexed8并且textureWidth值不能被四整除,可能需要在data的每个x维度行添加填充字节。textureDataWidth()函数返回填充的字节数。填充字节应表示完全透明的颜色,以避免渲染伪影。

默认为 0

Access functions:
property textureDepthᅟ: int

此属性保存定义体积内容的3D纹理的深度,单位为像素。

默认为 0

注意

如果此值发生更改,可能需要调整大小或重新创建textureData值。默认为0

Access functions:
property textureHeightᅟ: int

此属性保存定义体积内容的3D纹理的高度,单位为像素。

默认为 0

注意

如果此值发生更改,可能需要调整大小或重新创建textureData值。默认为0

Access functions:
property textureWidthᅟ: int

此属性保存定义体积内容的3D纹理的宽度,单位为像素。

默认为 0

注意

如果此值发生更改,可能需要调整大小或重新创建textureData值。默认为0

Access functions:
property useHighDefShaderᅟ: bool

此属性决定了是否使用高或低清晰度的着色器来渲染体积。

如果此属性值为true,则使用高清着色器。如果为false,则使用低清着色器。

高清晰度着色器确保在渲染体积时对体积纹理的每个可见纹理元素进行采样。低清晰度着色器仅渲染体积内容的粗略近似,但帧率要高得多。低清晰度着色器不保证对体积纹理的每个纹理元素进行采样,因此如果体积包含明显的薄特征,可能会出现闪烁。

注意

此值不会影响渲染体积切片时的细节级别。

默认为 true

另请参阅

renderSlice()

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

父对象QObject

使用给定的parent构建一个自定义的3D体积。

__init__(position, scaling, rotation, textureWidth, textureHeight, textureDepth, textureData, textureFormat, colorTable[, parent=None])
Parameters:
  • positionQVector3D

  • 缩放QVector3D

  • rotationQQuaternion

  • textureWidth – int

  • textureHeight – int

  • textureDepth – int

  • textureDataQList

  • textureFormatFormat

  • colorTable – 无符号整数列表

  • parentQObject

使用给定的positionscalingrotationtextureWidthtextureHeighttextureDepthtextureDatatextureFormatcolorTable和可选的parent构建一个自定义的3D体积。

alphaMultiplier()
Return type:

浮点数

另请参阅

setAlphaMultiplier()

属性 alphaMultiplierᅟ 的获取器。

alphaMultiplierChanged(mult)
Parameters:

mult – 浮点数

属性 alphaMultiplierᅟ 的通知信号。

colorTable()
Return type:

无符号整数列表

另请参阅

setColorTable()

属性 colorTableᅟ 的获取器。

colorTableChanged()

属性 colorTableᅟ 的通知信号。

createTextureData(images)
Parameters:

images – QImage 的列表

Return type:

QList

images数组创建一个新的纹理数据数组,并将其设置为该体积对象的textureData。纹理尺寸也根据图像和数组尺寸进行设置。数组中的所有图像必须具有相同的大小。如果图像不全是QImage::Format_Indexed8格式,所有纹理数据将转换为QImage::Format_ARGB32格式。如果图像是QImage::Format_Indexed8格式,整个体积的colorTable值将从第一张图像中获取。

返回指向新创建的数组的指针。

drawSliceFrames()
Return type:

布尔

另请参阅

setDrawSliceFrames()

属性 drawSliceFramesᅟ 的获取器。

drawSliceFramesChanged(enabled)
Parameters:

enabled – 布尔值

属性 drawSliceFramesᅟ 的通知信号。

drawSlices()
Return type:

布尔

另请参阅

setDrawSlices()

属性 drawSlicesᅟ 的获取器。

drawSlicesChanged(enabled)
Parameters:

enabled – 布尔值

属性 drawSlicesᅟ 的通知信号。

preserveOpacity()
Return type:

布尔

另请参阅

setPreserveOpacity()

属性 preserveOpacityᅟ 的获取器。

preserveOpacityChanged(enabled)
Parameters:

enabled – 布尔值

属性 preserveOpacityᅟ 的通知信号。

renderSlice(axis, index)
Parameters:
  • axisAxis

  • index – 整数

Return type:

QImage

将沿axis指定的轴由index指定的切片渲染为图像。使用此对象的纹理格式。

返回切片的渲染图像,如果指定了无效的索引,则返回空图像。

另请参阅

setTextureFormat()

setAlphaMultiplier(mult)
Parameters:

mult – 浮点数

另请参阅

alphaMultiplier()

属性 alphaMultiplierᅟ 的设置器。

setColorTable(colors)
Parameters:

颜色 – .无符号整数列表

另请参阅

colorTable()

属性 colorTableᅟ 的设置器。

setDrawSliceFrames(enable)
Parameters:

enable – 布尔值

另请参阅

drawSliceFrames()

属性 drawSliceFramesᅟ 的设置器。

setDrawSlices(enable)
Parameters:

enable – 布尔值

另请参阅

drawSlices()

属性 drawSlicesᅟ 的设置器。

setPreserveOpacity(enable)
Parameters:

enable – 布尔值

另请参阅

preserveOpacity()

属性 preserveOpacityᅟ 的设置器。

setSliceFrameColor(color)
Parameters:

颜色QColor

另请参阅

sliceFrameColor()

属性 sliceFrameColorᅟ 的设置器。

setSliceFrameGaps(values)
Parameters:

QVector3D

另请参阅

sliceFrameGaps()

属性 sliceFrameGapsᅟ 的设置器。

setSliceFrameThicknesses(values)
Parameters:

QVector3D

属性 sliceFrameThicknessesᅟ 的设置器。

setSliceFrameWidths(values)
Parameters:

QVector3D

另请参阅

sliceFrameWidths()

属性 sliceFrameWidthsᅟ 的设置器。

setSliceIndexX(value)
Parameters:

– int

另请参阅

sliceIndexX()

属性 sliceIndexXᅟ 的设置器。

setSliceIndexY(value)
Parameters:

– int

另请参阅

sliceIndexY()

属性 sliceIndexYᅟ 的设置器。

setSliceIndexZ(value)
Parameters:

– int

另请参阅

sliceIndexZ()

属性 sliceIndexZᅟ 的设置器。

setSliceIndices(x, y, z)
Parameters:
  • x – 整数

  • y – 整数

  • z – 整数

一个方便的函数,用于一次性设置所有三个切片索引(xyz)。

另请参阅

textureData

setSubTextureData(axis, index, image)
Parameters:

设置3D纹理的单个2D子纹理沿着体积的指定axisindex参数指定要设置的子纹理。如果textureFormat是索引格式,则源image必须符合textureFormat属性指定的格式。如果textureFormat是QImage::Format_ARGB32,则图像将转换为该格式。图像必须具有沿着指定轴的体积纹理的横截面大小。图像的朝向应与沿着相同轴的renderSlice()方法生成的切片图像的朝向相对应。

注意

当针对y轴或z轴时,数据的每个x维度线需要32位对齐。如果textureFormat是QImage::Format_Indexed8且textureWidth值不能被四整除,则可能需要在图像的每个x维度线上添加填充字节以正确对齐。填充字节应表示完全透明的颜色,以避免渲染伪影。不能保证QImage会自动执行此操作。

另请参阅

textureData renderSlice()

setSubTextureData(axis, index, data)
Parameters:
  • axisAxis

  • index – 整数

  • data – 字符串

设置3D纹理的单个2D子纹理沿着体积的指定axis。参数index指定要设置的子纹理。纹理data必须符合textureFormat属性指定的格式,并且具有体积纹理沿指定轴的横截面大小乘以纹理格式颜色深度的字节数。data的排序方式应与renderSlice()方法沿相同轴生成的图像数据类似。

注意

当针对y轴或z轴时,数据的每个x维度线需要32位对齐。如果textureFormat是QImage::Format_Indexed8且textureWidth值不能被四整除,则可能需要在data的每个x维度线上添加填充字节以正确对齐。填充字节应表示完全透明的颜色,以避免渲染伪影。

另请参阅

textureData renderSlice()

setTextureData(arg__1)
Parameters:

arg__1 – .uchar 列表

setTextureDepth(value)
Parameters:

– int

另请参阅

textureDepth()

属性 textureDepthᅟ 的设置器。

setTextureDimensions(width, height, depth)
Parameters:
  • width – int

  • height – int

  • depth – int

一个方便的函数,用于一次性设置所有三个纹理维度(widthheightdepth)。

另请参阅

textureData

setTextureFormat(format)
Parameters:

formatFormat

设置textureData属性的格式为format。目前仅支持两种格式:QImage::Format_Indexed8 和 QImage::Format_ARGB32。如果指定了索引格式,还必须设置colorTable。默认为 QImage::Format_ARGB32。

setTextureHeight(value)
Parameters:

– int

另请参阅

textureHeight()

属性 textureHeightᅟ 的设置器。

setTextureWidth(value)
Parameters:

– int

另请参阅

textureWidth()

属性 textureWidthᅟ 的设置器。

setUseHighDefShader(enable)
Parameters:

enable – 布尔值

另请参阅

useHighDefShader()

属性 useHighDefShaderᅟ 的设置器。

sliceFrameColor()
Return type:

QColor

另请参阅

setSliceFrameColor()

属性 sliceFrameColorᅟ 的获取器。

sliceFrameColorChanged(color)
Parameters:

颜色QColor

属性 sliceFrameColorᅟ 的通知信号。

sliceFrameGaps()
Return type:

QVector3D

另请参阅

setSliceFrameGaps()

属性 sliceFrameGapsᅟ 的获取器。

sliceFrameGapsChanged(values)
Parameters:

QVector3D

属性 sliceFrameGapsᅟ 的通知信号。

sliceFrameThicknesses()
Return type:

QVector3D

属性 sliceFrameThicknessesᅟ 的获取器。

sliceFrameThicknessesChanged(values)
Parameters:

QVector3D

属性 sliceFrameThicknessesᅟ 的通知信号。

sliceFrameWidths()
Return type:

QVector3D

另请参阅

setSliceFrameWidths()

属性 sliceFrameWidthsᅟ 的获取器。

sliceFrameWidthsChanged(values)
Parameters:

QVector3D

属性 sliceFrameWidthsᅟ 的通知信号。

sliceIndexX()
Return type:

整数

另请参阅

setSliceIndexX()

属性 sliceIndexXᅟ 的获取器。

sliceIndexXChanged(value)
Parameters:

– int

属性 sliceIndexXᅟ 的通知信号。

sliceIndexY()
Return type:

整数

另请参阅

setSliceIndexY()

属性 sliceIndexYᅟ 的获取器。

sliceIndexYChanged(value)
Parameters:

– int

属性 sliceIndexYᅟ 的通知信号。

sliceIndexZ()
Return type:

整数

另请参阅

setSliceIndexZ()

属性 sliceIndexZᅟ 的获取器。

sliceIndexZChanged(value)
Parameters:

– int

属性 sliceIndexZᅟ 的通知信号。

textureData()
Return type:

QList

另请参阅

setTextureData()

属性 textureDataᅟ 的获取器。

textureDataChanged(data)
Parameters:

数据QList

属性 textureDataᅟ 的通知信号。

textureDataWidth()
Return type:

整数

返回实际的纹理数据宽度。当纹理格式为QImage::Format_Indexed8时,此值等于textureWidth对齐到32位边界。否则,此值等于textureWidth的四倍。

textureDepth()
Return type:

整数

另请参阅

setTextureDepth()

属性 textureDepthᅟ 的获取器。

textureDepthChanged(value)
Parameters:

– int

属性 textureDepthᅟ 的通知信号。

textureFormat()
Return type:

格式

返回textureData属性值的格式。

另请参阅

setTextureFormat()

textureFormatChanged(format)
Parameters:

formatFormat

textureData值的format发生变化时,会发出此信号。

另请参阅

setTextureFormat()

textureHeight()
Return type:

整数

另请参阅

setTextureHeight()

属性 textureHeightᅟ 的获取器。

textureHeightChanged(value)
Parameters:

– int

属性 textureHeightᅟ 的通知信号。

textureWidth()
Return type:

整数

另请参阅

setTextureWidth()

属性 textureWidthᅟ 的获取器。

textureWidthChanged(value)
Parameters:

– int

属性 textureWidthᅟ 的通知信号。

useHighDefShader()
Return type:

布尔

另请参阅

setUseHighDefShader()

属性 useHighDefShaderᅟ 的获取器。

useHighDefShaderChanged(enabled)
Parameters:

enabled – 布尔值

属性 useHighDefShaderᅟ 的通知信号。