PySide6.QtGraphs.QCustom3DVolume¶
- class QCustom3DVolume¶
QCustom3DVolume
类向图表添加了一个体积渲染对象。更多…概要¶
属性¶
alphaMultiplierᅟ
- 渲染时,体积纹理中每个纹理元素的alpha值与之相乘的值colorTableᅟ
- 包含索引纹理格式颜色的数组drawSliceFramesᅟ
- 是否在体积周围绘制切片框架drawSlicesᅟ
- 是否绘制指定的切片而不是整个体积preserveOpacityᅟ
- 是否将alpha乘数应用于所有纹理像素sliceFrameColorᅟ
- 切片框架的颜色sliceFrameGapsᅟ
- 体积本身与框架在每个维度上留下的空气间隙的大小sliceFrameThicknessesᅟ
- 每个维度的切片框架厚度sliceFrameWidthsᅟ
- 切片框架的宽度sliceIndexXᅟ
- 表示要显示的垂直切片的纹理数据的X维度索引sliceIndexYᅟ
- Y维度索引,指示要显示的纹理数据的水平切片sliceIndexZᅟ
- Z维度索引,指示要显示的垂直切片textureDataᅟ
- 包含纹理数据的数组,格式由textureFormat指定textureDepthᅟ
- 定义体积内容的3D纹理的深度,单位为像素textureHeightᅟ
- 定义体积内容的3D纹理的高度,单位为像素textureWidthᅟ
- 定义体积内容的3D纹理的宽度,单位为像素useHighDefShaderᅟ
- 是否使用高或低清晰度的着色器来渲染体积
方法¶
def
__init__()
def
colorTable()
def
drawSlices()
def
renderSlice()
def
setColorTable()
def
setDrawSlices()
def
setSliceIndexX()
def
setSliceIndexY()
def
setSliceIndexZ()
def
setTextureData()
def
sliceFrameGaps()
def
sliceIndexX()
def
sliceIndexY()
def
sliceIndexZ()
def
textureData()
def
textureDepth()
def
textureFormat()
def
textureHeight()
def
textureWidth()
信号¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
体积渲染对象是一个带有3D纹理的盒子。体积支持三个切片平面,每个平面沿着体积的一个主轴。
渲染体积对象非常消耗性能,尤其是当体积大部分透明时,因为体积的内容是通过光线追踪来渲染的。性能几乎与体积在屏幕上占据的像素数量成线性比例,因此在较小的视图中显示体积或限制图形的缩放级别是提高性能的简单方法。同样,体积纹理的尺寸对性能有很大影响。如果帧率比体积内容的像素完美渲染更重要,考虑通过将
useHighDefShader
属性设置为false
来关闭高清晰度着色器。注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property alphaMultiplierᅟ: float¶
此属性保存渲染时体积纹理的每个纹素的 alpha 值所乘的值。
此属性可用于为体积引入统一的透明度。如果
preserveOpacity
为true
,则仅影响最初具有一定透明度的纹理元素,完全透明的纹理元素不受影响。该值不能为负数。默认为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乘数应用于所有纹理像素。
如果此属性值为
true
,alphaMultiplier
仅应用于已经具有一定透明度的纹理元素。如果为false
,则乘数应用于所有纹理元素的alpha值。默认为true
。另请参阅
- Access functions:
此属性保存切片框架的颜色。
不支持透明切片框架颜色。
默认为黑色。
另请参阅
- Access functions:
此属性保存体积本身与框架在每个维度上留下的空气间隙的大小。
不同维度上的间隙可能不同。这些值是相同维度上体积厚度的分数。这些值不能为负数。
默认为
QVector3D(0.01, 0.01, 0.01)
。另请参阅
- Access functions:
此属性保存每个维度的切片框架的厚度。
这些值是相同维度中体积厚度的分数。这些值不能为负数。
默认为
QVector3D(0.01, 0.01, 0.01)
。另请参阅
- Access functions:
此属性保存切片框架的宽度。
宽度在不同的维度上可能不同,因此您可以通过将该维度的值设置为零来省略在体积的某些侧面绘制框架。这些值是相同维度中体积厚度的分数。这些值不能为负数。
默认为
QVector3D(0.01, 0.01, 0.01)
。另请参阅
- 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
。另请参阅
- Access functions:
使用给定的
parent
构建一个自定义的3D体积。- __init__(position, scaling, rotation, textureWidth, textureHeight, textureDepth, textureData, textureFormat, colorTable[, parent=None])
- Parameters:
position –
QVector3D
缩放 –
QVector3D
rotation –
QQuaternion
textureWidth – int
textureHeight – int
textureDepth – int
textureData –
QList
textureFormat –
Format
colorTable – 无符号整数列表
parent –
QObject
使用给定的
position
、scaling
、rotation
、textureWidth
、textureHeight
、textureDepth
、textureData
、textureFormat
、colorTable
和可选的parent
构建一个自定义的3D体积。- alphaMultiplier()¶
- Return type:
浮点数
另请参阅
属性
alphaMultiplierᅟ
的获取器。- alphaMultiplierChanged(mult)¶
- Parameters:
mult – 浮点数
属性
alphaMultiplierᅟ
的通知信号。- colorTable()¶
- Return type:
无符号整数列表
另请参阅
属性
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:
布尔
另请参阅
属性
drawSliceFramesᅟ
的获取器。- drawSliceFramesChanged(enabled)¶
- Parameters:
enabled – 布尔值
属性
drawSliceFramesᅟ
的通知信号。- drawSlices()¶
- Return type:
布尔
另请参阅
属性
drawSlicesᅟ
的获取器。- drawSlicesChanged(enabled)¶
- Parameters:
enabled – 布尔值
属性
drawSlicesᅟ
的通知信号。- preserveOpacity()¶
- Return type:
布尔
另请参阅
属性
preserveOpacityᅟ
的获取器。- preserveOpacityChanged(enabled)¶
- Parameters:
enabled – 布尔值
属性
preserveOpacityᅟ
的通知信号。将沿
axis
指定的轴由index
指定的切片渲染为图像。使用此对象的纹理格式。返回切片的渲染图像,如果指定了无效的索引,则返回空图像。
另请参阅
- setAlphaMultiplier(mult)¶
- Parameters:
mult – 浮点数
另请参阅
属性
alphaMultiplierᅟ
的设置器。- setColorTable(colors)¶
- Parameters:
颜色 – .无符号整数列表
另请参阅
属性
colorTableᅟ
的设置器。- setDrawSliceFrames(enable)¶
- Parameters:
enable – 布尔值
另请参阅
属性
drawSliceFramesᅟ
的设置器。- setDrawSlices(enable)¶
- Parameters:
enable – 布尔值
另请参阅
属性
drawSlicesᅟ
的设置器。- setPreserveOpacity(enable)¶
- Parameters:
enable – 布尔值
另请参阅
属性
preserveOpacityᅟ
的设置器。属性
sliceFrameColorᅟ
的设置器。属性
sliceFrameGapsᅟ
的设置器。属性
sliceFrameThicknessesᅟ
的设置器。属性
sliceFrameWidthsᅟ
的设置器。- setSliceIndexX(value)¶
- Parameters:
值 – int
另请参阅
属性
sliceIndexXᅟ
的设置器。- setSliceIndexY(value)¶
- Parameters:
值 – int
另请参阅
属性
sliceIndexYᅟ
的设置器。- setSliceIndexZ(value)¶
- Parameters:
值 – int
另请参阅
属性
sliceIndexZᅟ
的设置器。- setSliceIndices(x, y, z)¶
- Parameters:
x – 整数
y – 整数
z – 整数
一个方便的函数,用于一次性设置所有三个切片索引(
x
、y
和z
)。另请参阅
设置3D纹理的单个2D子纹理沿着体积的指定
axis
。index
参数指定要设置的子纹理。如果textureFormat
是索引格式,则源image
必须符合textureFormat
属性指定的格式。如果textureFormat
是QImage::Format_ARGB32,则图像将转换为该格式。图像必须具有沿着指定轴的体积纹理的横截面大小。图像的朝向应与沿着相同轴的renderSlice()
方法生成的切片图像的朝向相对应。注意
当针对y轴或z轴时,数据的每个x维度线需要32位对齐。如果
textureFormat
是QImage::Format_Indexed8且textureWidth
值不能被四整除,则可能需要在图像的每个x维度线上添加填充字节以正确对齐。填充字节应表示完全透明的颜色,以避免渲染伪影。不能保证QImage会自动执行此操作。另请参阅
- setSubTextureData(axis, index, data)
- Parameters:
axis –
Axis
index – 整数
data – 字符串
设置3D纹理的单个2D子纹理沿着体积的指定
axis
。参数index
指定要设置的子纹理。纹理data
必须符合textureFormat
属性指定的格式,并且具有体积纹理沿指定轴的横截面大小乘以纹理格式颜色深度的字节数。data
的排序方式应与renderSlice()
方法沿相同轴生成的图像数据类似。注意
当针对y轴或z轴时,数据的每个x维度线需要32位对齐。如果
textureFormat
是QImage::Format_Indexed8且textureWidth
值不能被四整除,则可能需要在data
的每个x维度线上添加填充字节以正确对齐。填充字节应表示完全透明的颜色,以避免渲染伪影。另请参阅
- setTextureData(arg__1)¶
- Parameters:
arg__1 – .uchar 列表
- setTextureDepth(value)¶
- Parameters:
值 – int
另请参阅
属性
textureDepthᅟ
的设置器。- setTextureDimensions(width, height, depth)¶
- Parameters:
width – int
height – int
depth – int
一个方便的函数,用于一次性设置所有三个纹理维度(
width
、height
和depth
)。另请参阅
设置
textureData
属性的格式为format
。目前仅支持两种格式:QImage::Format_Indexed8 和 QImage::Format_ARGB32。如果指定了索引格式,还必须设置colorTable
。默认为 QImage::Format_ARGB32。- setTextureHeight(value)¶
- Parameters:
值 – int
另请参阅
属性
textureHeightᅟ
的设置器。- setTextureWidth(value)¶
- Parameters:
值 – int
另请参阅
属性
textureWidthᅟ
的设置器。- setUseHighDefShader(enable)¶
- Parameters:
enable – 布尔值
另请参阅
属性
useHighDefShaderᅟ
的设置器。- sliceFrameColor()¶
- Return type:
另请参阅
属性
sliceFrameColorᅟ
的获取器。属性
sliceFrameColorᅟ
的通知信号。- sliceFrameGaps()¶
- Return type:
另请参阅
属性
sliceFrameGapsᅟ
的获取器。属性
sliceFrameGapsᅟ
的通知信号。属性
sliceFrameThicknessesᅟ
的获取器。属性
sliceFrameThicknessesᅟ
的通知信号。属性
sliceFrameWidthsᅟ
的获取器。属性
sliceFrameWidthsᅟ
的通知信号。- sliceIndexX()¶
- Return type:
整数
另请参阅
属性
sliceIndexXᅟ
的获取器。- sliceIndexXChanged(value)¶
- Parameters:
值 – int
属性
sliceIndexXᅟ
的通知信号。- sliceIndexY()¶
- Return type:
整数
另请参阅
属性
sliceIndexYᅟ
的获取器。- sliceIndexYChanged(value)¶
- Parameters:
值 – int
属性
sliceIndexYᅟ
的通知信号。- sliceIndexZ()¶
- Return type:
整数
另请参阅
属性
sliceIndexZᅟ
的获取器。- sliceIndexZChanged(value)¶
- Parameters:
值 – int
属性
sliceIndexZᅟ
的通知信号。- textureData()¶
- Return type:
QList
另请参阅
属性
textureDataᅟ
的获取器。- textureDataChanged(data)¶
- Parameters:
数据 –
QList
属性
textureDataᅟ
的通知信号。- textureDataWidth()¶
- Return type:
整数
返回实际的纹理数据宽度。当纹理格式为QImage::Format_Indexed8时,此值等于
textureWidth
对齐到32位边界。否则,此值等于textureWidth
的四倍。- textureDepth()¶
- Return type:
整数
另请参阅
属性
textureDepthᅟ
的获取器。- textureDepthChanged(value)¶
- Parameters:
值 – int
属性
textureDepthᅟ
的通知信号。返回
textureData
属性值的格式。另请参阅
当
textureData
值的format
发生变化时,会发出此信号。另请参阅
- textureHeight()¶
- Return type:
整数
另请参阅
属性
textureHeightᅟ
的获取器。- textureHeightChanged(value)¶
- Parameters:
值 – int
属性
textureHeightᅟ
的通知信号。- textureWidth()¶
- Return type:
整数
另请参阅
属性
textureWidthᅟ
的获取器。- textureWidthChanged(value)¶
- Parameters:
值 – int
属性
textureWidthᅟ
的通知信号。- useHighDefShader()¶
- Return type:
布尔
属性
useHighDefShaderᅟ
的获取器。- useHighDefShaderChanged(enabled)¶
- Parameters:
enabled – 布尔值
属性
useHighDefShaderᅟ
的通知信号。