- class QCustom3DVolume¶
The
QCustom3DVolume
class adds a volume rendered object to a graph. More…Synopsis¶
Properties¶
alphaMultiplierᅟ
- Value that the alpha value of every texel of the volume texture is multiplied with at the render timecolorTableᅟ
- Array containing the colors for indexed texture formatsdrawSliceFramesᅟ
- Whether slice frames are drawn around the volumedrawSlicesᅟ
- Whether the specified slices are drawn instead of the full volumepreserveOpacityᅟ
- Whether the alpha multiplier is applied to all texelssliceFrameColorᅟ
- Color of the slice framesliceFrameGapsᅟ
- Size of the air gap left between the volume itself and the frame in each dimensionsliceFrameThicknessesᅟ
- Thickness of the slice frames for each dimensionsliceFrameWidthsᅟ
- Width of the slice framesliceIndexXᅟ
- X-dimension index into the texture data indicating which vertical slice to showsliceIndexYᅟ
- Y-dimension index into the texture data indicating which horizontal slice to showsliceIndexZᅟ
- Z-dimension index into the texture data indicating which vertical slice to showtextureDataᅟ
- Array containing the texture data in the format specified by textureFormattextureDepthᅟ
- Depth of the 3D texture defining the volume content in pixelstextureHeightᅟ
- Height of the 3D texture defining the volume content in pixelstextureWidthᅟ
- Width of the 3D texture defining the volume content in pixelsuseHighDefShaderᅟ
- Whether a high or low definition shader is used to render the volume
Methods¶
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()
Signals¶
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description¶
A volume rendered object is a box with a 3D texture. Three slice planes are supported for the volume, one along each main axis of the volume.
Rendering volume objects is very performance intensive, especially when the volume is largely transparent, as the contents of the volume are ray-traced. The performance scales nearly linearly with the amount of pixels that the volume occupies on the screen, so showing the volume in a smaller view or limiting the zoom level of the graph are easy ways to improve performance. Similarly, the volume texture dimensions have a large impact on performance. If the frame rate is more important than pixel-perfect rendering of the volume contents, consider turning the high definition shader off by setting the
useHighDefShader
property tofalse
.Note
Volumetric objects utilize 3D textures, which are not supported in OpenGL ES2 environments.
See also
Note
Properties can be used directly when
from __feature__ import true_property
is used or via accessor functions otherwise.- property alphaMultiplierᅟ: float¶
This property holds The value that the alpha value of every texel of the volume texture is multiplied with at the render time..
This property can be used to introduce uniform transparency to the volume. If
preserveOpacity
istrue
, only texels with at least some transparency to begin with are affected, and fully opaque texels are not affected. The value must not be negative. Defaults to1.0f
.See also
- Access functions:
- property colorTableᅟ: list of unsigned int¶
This property holds The array containing the colors for indexed texture formats..
If the texture format is not indexed, this array is not used and can be empty.
Defaults to
0
.See also
- Access functions:
- property drawSliceFramesᅟ: bool¶
This property holds Whether slice frames are drawn around the volume..
If this property value is
true
, the frames of slices indicated by slice index properties will be drawn around the volume. If it isfalse
, no slice frames will be drawn.Drawing slice frames is independent of drawing slices, so you can show the full volume and still draw the slice frames around it. This is useful when using
renderSlice()
to display the slices outside the graph itself.Defaults to
false
.- Access functions:
- property drawSlicesᅟ: bool¶
This property holds Whether the specified slices are drawn instead of the full volume..
If this property value is
true
, the slices indicated by slice index properties will be drawn instead of the full volume. If it isfalse
, the full volume will always be drawn. Defaults tofalse
.Note
The slices are always drawn along the item axes, so if the item is rotated, the slices are rotated as well.
See also
- Access functions:
- property preserveOpacityᅟ: bool¶
This property holds Whether the alpha multiplier is applied to all texels..
If this property value is
true
,alphaMultiplier
is only applied to texels that already have some transparency. If it isfalse
, the multiplier is applied to the alpha value of all texels. Defaults totrue
.See also
- Access functions:
This property holds The color of the slice frame..
Transparent slice frame color is not supported.
Defaults to black.
See also
- Access functions:
This property holds The size of the air gap left between the volume itself and the frame in each dimension..
The gap can be different on different dimensions. The values are fractions of the volume thickness in the same dimension. The values cannot be negative.
Defaults to
QVector3D(0.01, 0.01, 0.01)
.See also
- Access functions:
This property holds The thickness of the slice frames for each dimension..
The values are fractions of the volume thickness in the same dimension. The values cannot be negative.
Defaults to
QVector3D(0.01, 0.01, 0.01)
.See also
- Access functions:
This property holds The width of the slice frame..
The width can be different on different dimensions, so you can for example omit drawing the frames on certain sides of the volume by setting the value for that dimension to zero. The values are fractions of the volume thickness in the same dimension. The values cannot be negative.
Defaults to
QVector3D(0.01, 0.01, 0.01)
.See also
- Access functions:
- property sliceIndexXᅟ: int¶
This property holds The x-dimension index into the texture data indicating which vertical slice to show..
Setting any dimension to negative indicates no slice or slice frame for that dimension is drawn. If all dimensions are negative, no slices or slice frames are drawn and the volume is drawn normally.
Defaults to
-1
.See also
- Access functions:
- property sliceIndexYᅟ: int¶
This property holds The y-dimension index into the texture data indicating which horizontal slice to show..
Setting any dimension to negative indicates no slice or slice frame for that dimension is drawn. If all dimensions are negative, no slices or slice frames are drawn and the volume is drawn normally.
Defaults to
-1
.See also
- Access functions:
- property sliceIndexZᅟ: int¶
This property holds The z-dimension index into the texture data indicating which vertical slice to show..
Setting any dimension to negative indicates no slice or slice frame for that dimension is drawn. If all dimensions are negative, no slices or slice frames are drawn and the volume is drawn normally.
Defaults to
-1
.See also
- Access functions:
- property textureDataᅟ: QList¶
This property holds The array containing the texture data in the format specified by
textureFormat
..The size of this array must be at least (
textureDataWidth * textureHeight * textureDepth * texture format color depth in bytes
).A 3D texture is defined by a stack of 2D subtextures. Each subtexture must be of identical size (
textureDataWidth * textureHeight
), and the depth of the stack is defined by thetextureDepth
property. The data in each 2D texture is identical to a QImage data with the same format, so QImage::bits() can be used to supply the data for each subtexture.Ownership of the new array transfers to the
QCustom3DVolume
instance. If another array is set, the previous array is deleted. If the same array is set again, it is assumed that the array contents have been changed and the graph rendering is triggered.Note
Each x-dimension line of the data needs to be 32-bit aligned. If
textureFormat
is QImage::Format_Indexed8 and thetextureWidth
value is not divisible by four, padding bytes might need to be added to each x-dimension line of thedata
. ThetextureDataWidth()
function returns the padded byte count. The padding bytes should indicate a fully transparent color to avoid rendering artifacts.Defaults to
0
.- Access functions:
- property textureDepthᅟ: int¶
This property holds The depth of the 3D texture defining the volume content in pixels..
Defaults to
0
.Note
The
textureData
value may need to be resized or recreated if this value is changed. Defaults to0
.- Access functions:
- property textureHeightᅟ: int¶
This property holds The height of the 3D texture defining the volume content in pixels..
Defaults to
0
.Note
The
textureData
value may need to be resized or recreated if this value is changed. Defaults to0
.- Access functions:
- property textureWidthᅟ: int¶
This property holds The width of the 3D texture defining the volume content in pixels..
Defaults to
0
.Note
The
textureData
value may need to be resized or recreated if this value is changed. Defaults to0
.- Access functions:
- property useHighDefShaderᅟ: bool¶
This property holds Whether a high or low definition shader is used to render the volume..
If this property value is
true
, a high definition shader is used. If it isfalse
, a low definition shader is used.The high definition shader guarantees that every visible texel of the volume texture is sampled when the volume is rendered. The low definition shader renders only a rough approximation of the volume contents, but at a much higher frame rate. The low definition shader does not guarantee that every texel of the volume texture is sampled, so there may be flickering if the volume contains distinct thin features.
Note
This value does not affect the level of detail when rendering the slices of the volume.
Defaults to
true
.See also
- Access functions:
Constructs a custom 3D volume with the given
parent
.- __init__(position, scaling, rotation, textureWidth, textureHeight, textureDepth, textureData, textureFormat, colorTable[, parent=None])
- Parameters:
position –
QVector3D
scaling –
QVector3D
rotation –
QQuaternion
textureWidth – int
textureHeight – int
textureDepth – int
textureData –
QList
textureFormat –
Format
colorTable – .list of unsigned int
parent –
QObject
Constructs a custom 3D volume with the given
position
,scaling
,rotation
,textureWidth
,textureHeight
,textureDepth
,textureData
,textureFormat
,colorTable
, and optionalparent
.See also
- alphaMultiplier()¶
- Return type:
float
See also
Getter of property
alphaMultiplierᅟ
.- alphaMultiplierChanged(mult)¶
- Parameters:
mult – float
Notification signal of property
alphaMultiplierᅟ
.- colorTable()¶
- Return type:
.list of unsigned int
See also
Getter of property
colorTableᅟ
.- colorTableChanged()¶
Notification signal of property
colorTableᅟ
.- createTextureData(images)¶
- Parameters:
images – .list of QImage
- Return type:
QList
Creates a new texture data array from an array of
images
and sets it astextureData
for this volume object. The texture dimensions are also set according to image and array dimensions. All of the images in the array must be the same size. If the images are not all in the QImage::Format_Indexed8 format, all texture data will be converted into the QImage::Format_ARGB32 format. If the images are in the QImage::Format_Indexed8 format, thecolorTable
value for the entire volume will be taken from the first image.Returns a pointer to the newly created array.
- drawSliceFrames()¶
- Return type:
bool
See also
Getter of property
drawSliceFramesᅟ
.- drawSliceFramesChanged(enabled)¶
- Parameters:
enabled – bool
Notification signal of property
drawSliceFramesᅟ
.- drawSlices()¶
- Return type:
bool
See also
Getter of property
drawSlicesᅟ
.- drawSlicesChanged(enabled)¶
- Parameters:
enabled – bool
Notification signal of property
drawSlicesᅟ
.- preserveOpacity()¶
- Return type:
bool
See also
Getter of property
preserveOpacityᅟ
.- preserveOpacityChanged(enabled)¶
- Parameters:
enabled – bool
Notification signal of property
preserveOpacityᅟ
.Renders the slice specified by
index
along the axis specified byaxis
into an image. The texture format of this object is used.Returns the rendered image of the slice, or a null image if an invalid index is specified.
See also
- setAlphaMultiplier(mult)¶
- Parameters:
mult – float
See also
Setter of property
alphaMultiplierᅟ
.- setColorTable(colors)¶
- Parameters:
colors – .list of unsigned int
See also
Setter of property
colorTableᅟ
.- setDrawSliceFrames(enable)¶
- Parameters:
enable – bool
See also
Setter of property
drawSliceFramesᅟ
.- setDrawSlices(enable)¶
- Parameters:
enable – bool
See also
Setter of property
drawSlicesᅟ
.- setPreserveOpacity(enable)¶
- Parameters:
enable – bool
See also
Setter of property
preserveOpacityᅟ
.Setter of property
sliceFrameColorᅟ
.Setter of property
sliceFrameGapsᅟ
.Setter of property
sliceFrameThicknessesᅟ
.Setter of property
sliceFrameWidthsᅟ
.- setSliceIndexX(value)¶
- Parameters:
value – int
See also
Setter of property
sliceIndexXᅟ
.- setSliceIndexY(value)¶
- Parameters:
value – int
See also
Setter of property
sliceIndexYᅟ
.- setSliceIndexZ(value)¶
- Parameters:
value – int
See also
Setter of property
sliceIndexZᅟ
.- setSliceIndices(x, y, z)¶
- Parameters:
x – int
y – int
z – int
A convenience function for setting all three slice indices (
x
,y
, andz
) at once.See also
Sets a single 2D subtexture of the 3D texture along the specified
axis
of the volume. Theindex
parameter specifies the subtexture to set. The sourceimage
must be in the format specified by thetextureFormat
property iftextureFormat
is indexed. IftextureFormat
is QImage::Format_ARGB32, the image is converted to that format. The image must have the size of the cross-section of the volume texture along the specified axis. The orientation of the image should correspond to the orientation of the slice image produced byrenderSlice()
method along the same axis.Note
Each x-dimension line of the data needs to be 32-bit aligned when targeting the y-axis or z-axis. If
textureFormat
is QImage::Format_Indexed8 and thetextureWidth
value is not divisible by four, padding bytes might need to be added to each x-dimension line of the image to properly align it. The padding bytes should indicate a fully transparent color to avoid rendering artifacts. It is not guaranteed that QImage will do this automatically.See also
- setSubTextureData(axis, index, data)
- Parameters:
axis –
Axis
index – int
data – str
Sets a single 2D subtexture of the 3D texture along the specified
axis
of the volume. Theindex
parameter specifies the subtexture to set. The texturedata
must be in the format specified by thetextureFormat
property and have the size of the cross-section of the volume texture along the specified axis multiplied by the texture format color depth in bytes. Thedata
is expected to be ordered similarly to the data in images produced by therenderSlice()
method along the same axis.Note
Each x-dimension line of the data needs to be 32-bit aligned when targeting the y-axis or z-axis. If
textureFormat
is QImage::Format_Indexed8 and thetextureWidth
value is not divisible by four, padding bytes might need to be added to each x-dimension line of thedata
to properly align it. The padding bytes should indicate a fully transparent color to avoid rendering artifacts.See also
- setTextureData(arg__1)¶
- Parameters:
arg__1 – .list of uchar
- setTextureDepth(value)¶
- Parameters:
value – int
See also
Setter of property
textureDepthᅟ
.- setTextureDimensions(width, height, depth)¶
- Parameters:
width – int
height – int
depth – int
A convenience function for setting all three texture dimensions (
width
,height
, anddepth
) at once.See also
Sets the format of the
textureData
property toformat
. Only two formats are supported currently: QImage::Format_Indexed8 and QImage::Format_ARGB32. If an indexed format is specified,colorTable
must also be set. Defaults to QImage::Format_ARGB32.See also
- setTextureHeight(value)¶
- Parameters:
value – int
See also
Setter of property
textureHeightᅟ
.- setTextureWidth(value)¶
- Parameters:
value – int
See also
Setter of property
textureWidthᅟ
.- setUseHighDefShader(enable)¶
- Parameters:
enable – bool
See also
Setter of property
useHighDefShaderᅟ
.- sliceFrameColor()¶
- Return type:
See also
Getter of property
sliceFrameColorᅟ
.Notification signal of property
sliceFrameColorᅟ
.- sliceFrameGaps()¶
- Return type:
See also
Getter of property
sliceFrameGapsᅟ
.Notification signal of property
sliceFrameGapsᅟ
.- sliceFrameThicknesses()¶
- Return type:
See also
Getter of property
sliceFrameThicknessesᅟ
.Notification signal of property
sliceFrameThicknessesᅟ
.- sliceFrameWidths()¶
- Return type:
See also
Getter of property
sliceFrameWidthsᅟ
.Notification signal of property
sliceFrameWidthsᅟ
.- sliceIndexX()¶
- Return type:
int
See also
Getter of property
sliceIndexXᅟ
.- sliceIndexXChanged(value)¶
- Parameters:
value – int
Notification signal of property
sliceIndexXᅟ
.- sliceIndexY()¶
- Return type:
int
See also
Getter of property
sliceIndexYᅟ
.- sliceIndexYChanged(value)¶
- Parameters:
value – int
Notification signal of property
sliceIndexYᅟ
.- sliceIndexZ()¶
- Return type:
int
See also
Getter of property
sliceIndexZᅟ
.- sliceIndexZChanged(value)¶
- Parameters:
value – int
Notification signal of property
sliceIndexZᅟ
.- textureData()¶
- Return type:
QList
See also
Getter of property
textureDataᅟ
.- textureDataChanged(data)¶
- Parameters:
data –
QList
Notification signal of property
textureDataᅟ
.- textureDataWidth()¶
- Return type:
int
Returns the actual texture data width. When the texture format is QImage::Format_Indexed8, this value equals
textureWidth
aligned to a 32-bit boundary. Otherwise, this value equals four timestextureWidth
.- textureDepth()¶
- Return type:
int
See also
Getter of property
textureDepthᅟ
.- textureDepthChanged(value)¶
- Parameters:
value – int
Notification signal of property
textureDepthᅟ
.Returns the format of the
textureData
property value.See also
This signal is emitted when the
format
of thetextureData
value changes.See also
- textureHeight()¶
- Return type:
int
See also
Getter of property
textureHeightᅟ
.- textureHeightChanged(value)¶
- Parameters:
value – int
Notification signal of property
textureHeightᅟ
.- textureWidth()¶
- Return type:
int
See also
Getter of property
textureWidthᅟ
.- textureWidthChanged(value)¶
- Parameters:
value – int
Notification signal of property
textureWidthᅟ
.- useHighDefShader()¶
- Return type:
bool
See also
Getter of property
useHighDefShaderᅟ
.- useHighDefShaderChanged(enabled)¶
- Parameters:
enabled – bool
Notification signal of property
useHighDefShaderᅟ
.