QCustom3DVolume Class
La classe QCustom3DVolume ajoute un objet rendu en volume à un graphique. En savoir plus...
| En-tête : | #include <QCustom3DVolume> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Graphs) target_link_libraries(mytarget PRIVATE Qt6::Graphs) |
| qmake : | QT += graphs |
| En QML : | Custom3DVolume |
| Hérite de : | QCustom3DItem |
- Liste de tous les membres, y compris les membres hérités
- QCustom3DVolume fait partie des classes C++Qt Graphs pour la 3D.
Propriétés
|
|
Fonctions publiques
| QCustom3DVolume(QObject *parent = nullptr) | |
| QCustom3DVolume(QVector3D position, QVector3D scaling, const QQuaternion &rotation, int textureWidth, int textureHeight, int textureDepth, QList<uchar> *textureData, QImage::Format textureFormat, const QList<QRgb> &colorTable, QObject *parent = nullptr) | |
| virtual | ~QCustom3DVolume() override |
| float | alphaMultiplier() const |
| QList<QRgb> | colorTable() const |
| QList<uchar> * | createTextureData(const QList<QImage *> &images) |
| bool | drawSliceFrames() const |
| bool | drawSlices() const |
| bool | preserveOpacity() const |
| QImage | renderSlice(Qt::Axis axis, int index) |
| void | setAlphaMultiplier(float mult) |
| void | setColorTable(const QList<QRgb> &colors) |
| void | setDrawSliceFrames(bool enable) |
| void | setDrawSlices(bool enable) |
| void | setPreserveOpacity(bool enable) |
| void | setSliceFrameColor(QColor color) |
| void | setSliceFrameGaps(QVector3D values) |
| void | setSliceFrameThicknesses(QVector3D values) |
| void | setSliceFrameWidths(QVector3D values) |
| void | setSliceIndexX(int value) |
| void | setSliceIndexY(int value) |
| void | setSliceIndexZ(int value) |
| void | setSliceIndices(int x, int y, int z) |
| void | setSubTextureData(Qt::Axis axis, int index, const QImage &image) |
| void | setSubTextureData(Qt::Axis axis, int index, const uchar *data) |
| void | setTextureData(QList<uchar> *data) |
| void | setTextureDepth(int value) |
| void | setTextureDimensions(int width, int height, int depth) |
| void | setTextureFormat(QImage::Format format) |
| void | setTextureHeight(int value) |
| void | setTextureWidth(int value) |
| void | setUseHighDefShader(bool enable) |
| QColor | sliceFrameColor() const |
| QVector3D | sliceFrameGaps() const |
| QVector3D | sliceFrameThicknesses() const |
| QVector3D | sliceFrameWidths() const |
| int | sliceIndexX() const |
| int | sliceIndexY() const |
| int | sliceIndexZ() const |
| QList<uchar> * | textureData() const |
| int | textureDataWidth() const |
| int | textureDepth() const |
| QImage::Format | textureFormat() const |
| int | textureHeight() const |
| int | textureWidth() const |
| bool | useHighDefShader() const |
Signaux
| void | alphaMultiplierChanged(float mult) |
| void | colorTableChanged() |
| void | drawSliceFramesChanged(bool enabled) |
| void | drawSlicesChanged(bool enabled) |
| void | preserveOpacityChanged(bool enabled) |
| void | sliceFrameColorChanged(QColor color) |
| void | sliceFrameGapsChanged(QVector3D values) |
| void | sliceFrameThicknessesChanged(QVector3D values) |
| void | sliceFrameWidthsChanged(QVector3D values) |
| void | sliceIndexXChanged(int value) |
| void | sliceIndexYChanged(int value) |
| void | sliceIndexZChanged(int value) |
| void | textureDataChanged(QList<uchar> *data) |
| void | textureDepthChanged(int value) |
| void | textureFormatChanged(QImage::Format format) |
| void | textureHeightChanged(int value) |
| void | textureWidthChanged(int value) |
| void | useHighDefShaderChanged(bool enabled) |
Description détaillée
Un objet à rendu volumique est une boîte dotée d’une texture 3D. Trois plans de coupe sont pris en charge pour le volume, un le long de chaque axe principal du volume.
Le rendu des objets volumétriques est très gourmand en ressources, en particulier lorsque le volume est largement transparent, car le contenu du volume fait l'objet d'un traçage de rayons. Les performances évoluent de manière quasi linéaire avec le nombre de pixels que le volume occupe à l'écran ; afficher le volume dans une vue plus petite ou limiter le niveau de zoom du graphique constituent donc des moyens simples d'améliorer les performances. De même, les dimensions de la texture du volume ont un impact important sur les performances. Si la fréquence d’images est plus importante qu’un rendu au pixel près du contenu du volume, envisagez de désactiver le shader haute définition en définissant la propriété « useHighDefShader » sur « false ».
Remarque : les objetsvolumétriques utilisent des textures 3D, qui ne sont pas prises en charge dans les environnements OpenGL ES2.
Remarque : seuls deux formats sont pris en charge : QImage::Format_Indexed8 et QImage::Format_ARGB32. Si un format indexé est spécifié, colorTable doit également être défini. La valeur par défaut est QImage::Format_ARGB32.
Voir également Q3DGraphsWidgetItem::addCustomItem() et useHighDefShader.
Documentation sur les propriétés
alphaMultiplier : float
Cette propriété contient la valeur par laquelle la valeur alpha de chaque texel de la texture de volume est multipliée au moment du rendu.
Cette propriété permet d’appliquer une transparence uniforme au volume. Si la valeur de « preserveOpacity » est « true », seuls les texels présentant une certaine transparence initiale sont affectés ; les texels entièrement opaques ne le sont pas. La valeur ne doit pas être négative. La valeur par défaut est « 1.0f ».
Fonctions d’accès :
| float | alphaMultiplier() const |
| void | setAlphaMultiplier(float mult) |
Signal de notification :
| void | alphaMultiplierChanged(float mult) |
Voir également preserveOpacity et textureData.
colorTable : QList<QRgb>
Cette propriété contient le tableau renfermant les couleurs pour les formats de texture indexés.
Si le format de texture n'est pas indexé, ce tableau n'est pas utilisé et peut être vide.
Valeur par défaut : 0.
Fonctions d'accès :
| QList<QRgb> | colorTable() const |
| void | setColorTable(const QList<QRgb> &colors) |
Signal de notification :
| void | colorTableChanged() |
Voir également textureData, setTextureFormat() et QImage::colorTable().
drawSliceFrames : bool
Cette propriété détermine si des cadres de coupe sont dessinés autour du volume.
Si la valeur de cette propriété est « true », les cadres des coupes indiqués par les propriétés d’index de coupe seront dessinés autour du volume. Si elle est « false », aucun cadre de coupe ne sera dessiné.
Le tracé des cadres de coupe est indépendant de celui des coupes ; vous pouvez donc afficher le volume complet tout en dessinant les cadres de coupe autour de celui-ci. Cela s’avère utile lorsque vous utilisez ` renderSlice()` pour afficher les coupes en dehors du graphique lui-même.
La valeur par défaut est false.
Fonctions d’accès :
| bool | drawSliceFrames() const |
| void | setDrawSliceFrames(bool enable) |
Signal de notification :
| void | drawSliceFramesChanged(bool enabled) |
Voir également sliceIndexX, sliceIndexY, sliceIndexZ, drawSlices et renderSlice().
drawSlices : bool
Cette propriété détermine si les tranches spécifiées sont dessinées à la place du volume complet.
Si la valeur de cette propriété est « true », les tranches indiquées par les propriétés d’index de tranche seront dessinées à la place du volume complet. Si elle est « false », le volume complet sera toujours dessiné. La valeur par défaut est « false ».
Remarque : les tranches sont toujours dessinées selon les axes de l’élément ; ainsi, si l’élément est pivoté, les tranches le sont également.
Fonctions d’accès :
| bool | drawSlices() const |
| void | setDrawSlices(bool enable) |
Signal de notification :
| void | drawSlicesChanged(bool enabled) |
Voir également sliceIndexX, sliceIndexY et sliceIndexZ.
preserveOpacity : bool
Cette propriété indique si le multiplicateur alpha est appliqué à tous les texels.
Si la valeur de cette propriété est « true », « alphaMultiplier » n’est appliqué qu’aux texels présentant déjà une certaine transparence. Si elle est « false », le multiplicateur est appliqué à la valeur alpha de tous les texels. La valeur par défaut est « true ».
Fonctions d’accès :
| bool | preserveOpacity() const |
| void | setPreserveOpacity(bool enable) |
Signal de notification :
| void | preserveOpacityChanged(bool enabled) |
Voir également alphaMultiplier.
sliceFrameColor : QColor
Cette propriété définit la couleur du cadre de la tranche.
La couleur transparente n'est pas prise en charge pour le cadre de tranche.
La valeur par défaut est le noir.
Fonctions d'accès :
| QColor | sliceFrameColor() const |
| void | setSliceFrameColor(QColor color) |
Signal de notification :
| void | sliceFrameColorChanged(QColor color) |
Voir également drawSliceFrames.
sliceFrameGaps : QVector3D
Cette propriété définit la largeur de l'espace d'air laissé entre le volume lui-même et le cadre dans chaque dimension.
Cet espace peut varier selon les dimensions. Les valeurs sont exprimées en fractions de l'épaisseur du volume dans la même dimension. Les valeurs ne peuvent pas être négatives.
Valeur par défaut : QVector3D(0.01, 0.01, 0.01).
Fonctions d'accès :
| QVector3D | sliceFrameGaps() const |
| void | setSliceFrameGaps(QVector3D values) |
Signal de notification :
| void | sliceFrameGapsChanged(QVector3D values) |
Voir également drawSliceFrames.
sliceFrameThicknesses : QVector3D
Cette propriété contient l'épaisseur des cadres de coupe pour chaque dimension.
Les valeurs sont des fractions de l'épaisseur du volume dans la même dimension. Les valeurs ne peuvent pas être négatives.
Valeur par défaut : QVector3D(0.01, 0.01, 0.01).
Fonctions d'accès :
| QVector3D | sliceFrameThicknesses() const |
| void | setSliceFrameThicknesses(QVector3D values) |
Signal de notification :
| void | sliceFrameThicknessesChanged(QVector3D values) |
Voir également drawSliceFrames.
sliceFrameWidths : QVector3D
Cette propriété définit la largeur du cadre de la tranche.
La largeur peut varier selon les dimensions ; vous pouvez ainsi, par exemple, omettre l'affichage des cadres sur certains côtés du volume en définissant la valeur de cette dimension sur zéro. Les valeurs sont exprimées en fractions de l'épaisseur du volume dans la même dimension. Les valeurs ne peuvent pas être négatives.
Valeur par défaut : QVector3D(0.01, 0.01, 0.01).
Fonctions d'accès :
| QVector3D | sliceFrameWidths() const |
| void | setSliceFrameWidths(QVector3D values) |
Signal de notification :
| void | sliceFrameWidthsChanged(QVector3D values) |
Voir également drawSliceFrames.
sliceIndexX : int
Cette propriété contient l'index de la dimension x dans les données de texture, indiquant quelle tranche verticale doit être affichée.
Si une dimension est définie sur une valeur négative, cela signifie qu’aucune tranche ni aucun cadre de tranche n’est dessiné pour cette dimension. Si toutes les dimensions sont négatives, aucune tranche ni aucun cadre de tranche n’est dessiné et le volume est affiché normalement.
Valeur par défaut : -1.
Fonctions d'accès :
| int | sliceIndexX() const |
| void | setSliceIndexX(int value) |
Signal de notification :
| void | sliceIndexXChanged(int value) |
Voir également textureData, drawSlices et drawSliceFrames.
sliceIndexY : int
Cette propriété contient l'index de la dimension y dans les données de texture, indiquant quelle coupe horizontale doit être affichée.
Si une dimension est définie sur une valeur négative, cela signifie qu'aucune coupe ni aucun cadre de coupe n'est dessiné pour cette dimension. Si toutes les dimensions sont négatives, aucune coupe ni aucun cadre de coupe n'est dessiné et le volume est affiché normalement.
Valeur par défaut : -1.
Fonctions d'accès :
| int | sliceIndexY() const |
| void | setSliceIndexY(int value) |
Signal de notification :
| void | sliceIndexYChanged(int value) |
Voir également textureData, drawSlices et drawSliceFrames.
sliceIndexZ : int
Cette propriété contient l'index de la dimension z dans les données de texture, indiquant quelle tranche verticale doit être affichée.
Si une dimension est définie sur une valeur négative, cela signifie qu'aucune tranche ni aucun cadre de tranche n'est dessiné pour cette dimension. Si toutes les dimensions sont négatives, aucune tranche ni aucun cadre de tranche n'est dessiné et le volume s'affiche normalement.
Valeur par défaut : -1.
Fonctions d'accès :
| int | sliceIndexZ() const |
| void | setSliceIndexZ(int value) |
Signal de notification :
| void | sliceIndexZChanged(int value) |
Voir également textureData, drawSlices et drawSliceFrames.
textureData : QList<uchar>*
Cette propriété contient le tableau renfermant les données de texture au format spécifié par textureFormat.
La taille de ce tableau doit être au moins égale à (textureDataWidth * textureHeight * textureDepth * texture format color depth in bytes).
Une texture 3D est définie par une pile de sous-textures 2D. Chaque sous-texture doit être de taille identique (textureDataWidth * textureHeight), et la profondeur de la pile est définie par la propriété textureDepth. Les données de chaque texture 2D sont identiques à celles d’un objet QImage de même format ; ainsi, la fonction QImage::bits() peut être utilisée pour fournir les données de chaque sous-texture.
La propriété du nouveau tableau est transférée à l’instance QCustom3DVolume. Si un autre tableau est défini, le tableau précédent est supprimé. Si le même tableau est défini à nouveau, on suppose que son contenu a été modifié et le rendu du graphe est déclenché.
Remarque : chaque ligne de la dimension x des données doit être alignée sur 32 bits. Si textureFormat est QImage::Format_Indexed8 et que la valeur de textureWidth n’est pas divisible par quatre, il peut être nécessaire d’ajouter des octets de remplissage à chaque ligne de la dimension x de data. La fonction textureDataWidth() renvoie le nombre d’octets de remplissage. Les octets de remplissage doivent correspondre à une couleur entièrement transparente afin d’éviter tout artefact de rendu.
La valeur par défaut est 0.
Fonctions d’accès :
| QList<uchar> * | textureData() const |
| void | setTextureData(QList<uchar> *data) |
Signal de notification :
| void | textureDataChanged(QList<uchar> *data) |
Voir également colorTable, setTextureFormat(), setSubTextureData() et textureDataWidth().
textureDepth : int
Cette propriété indique la profondeur, en pixels, de la texture 3D définissant le contenu volumétrique.
Valeur par défaut : 0.
Remarque : la valeur « textureData » peut nécessiter un redimensionnement ou une recréation si cette valeur est modifiée. La valeur par défaut est « 0 ».
Fonctions d'accès :
| int | textureDepth() const |
| void | setTextureDepth(int value) |
Signal de notification :
| void | textureDepthChanged(int value) |
Voir également textureData, textureWidth, textureHeight et setTextureFormat().
textureHeight : int
Cette propriété contient la hauteur, en pixels, de la texture 3D définissant le contenu volumétrique.
La valeur par défaut est « 0 ».
Remarque : la valeur « textureData » peut nécessiter un redimensionnement ou une recréation si cette valeur est modifiée. La valeur par défaut est « 0 ».
Fonctions d'accès :
| int | textureHeight() const |
| void | setTextureHeight(int value) |
Signal de notification :
| void | textureHeightChanged(int value) |
Voir également textureData, textureWidth, textureDepth et setTextureFormat().
textureWidth : int
Cette propriété indique, en pixels, la largeur de la texture 3D définissant le contenu du volume.
Valeur par défaut : 0.
Remarque : la valeur « textureData » peut nécessiter un redimensionnement ou une recréation si cette valeur est modifiée. La valeur par défaut est « 0 ».
Fonctions d'accès :
| int | textureWidth() const |
| void | setTextureWidth(int value) |
Signal de notification :
| void | textureWidthChanged(int value) |
Voir également textureData, textureHeight, textureDepth, setTextureFormat() et textureDataWidth().
useHighDefShader : bool
Cette propriété détermine si un shader haute ou basse définition est utilisé pour le rendu du volume.
Si la valeur de cette propriété est « true », un shader haute définition est utilisé. Si elle est « false », un shader basse définition est utilisé.
Le shader haute définition garantit que chaque texel visible de la texture du volume est échantillonné lors du rendu du volume. Le shader basse définition ne rend qu’une approximation grossière du contenu du volume, mais à une fréquence d’images bien plus élevée. Le shader basse définition ne garantit pas que chaque texel de la texture du volume soit échantillonné ; il peut donc y avoir un scintillement si le volume contient des éléments fins bien distincts.
Remarque : cette valeur n’affecte pas le niveau de détail lors du rendu des coupes du volume.
Valeur par défaut : true.
Fonctions d’accès :
| bool | useHighDefShader() const |
| void | setUseHighDefShader(bool enable) |
Signal de notification :
| void | useHighDefShaderChanged(bool enabled) |
Voir également renderSlice().
Documentation des fonctions membres
[explicit] QCustom3DVolume::QCustom3DVolume(QObject *parent = nullptr)
Crée un volume 3D personnalisé à partir de l'parent.
[explicit] QCustom3DVolume::QCustom3DVolume(QVector3D position, QVector3D scaling, const QQuaternion &rotation, int textureWidth, int textureHeight, int textureDepth, QList<uchar> *textureData, QImage::Format textureFormat, const QList<QRgb> &colorTable, QObject *parent = nullptr)
Crée un volume 3D personnalisé à partir des paramètres suivants : position, scaling, rotation, textureWidth, textureHeight, textureDepth, textureData, textureFormat, colorTable et, en option, parent.
Voir également textureData, setTextureFormat() et colorTable.
[override virtual noexcept] QCustom3DVolume::~QCustom3DVolume()
Supprime le volume 3D personnalisé.
QList<uchar> *QCustom3DVolume::createTextureData(const QList<QImage *> &images)
Crée un nouveau tableau de données de texture à partir d’un tableau de type « images » et le définit comme texture « textureData » pour cet objet volumique. Les dimensions de l sont également définies en fonction des dimensions de l’image et du tableau. Toutes les images du tableau doivent être de la même taille. Si les images ne sont pas toutes au format QImage::Format_Indexed8, toutes les données de texture seront converties au format QImage::Format_ARGB32. Si les images sont au format QImage::Format_Indexed8, la valeur colorTable pour l’ensemble du volume sera extraite de la première image.
Renvoie un pointeur vers le tableau nouvellement créé.
Voir également textureData, textureWidth, textureHeight, textureDepth et setTextureFormat().
QImage QCustom3DVolume::renderSlice(Qt::Axis axis, int index)
Affiche sous forme d'image la tranche spécifiée par index le long de l'axe spécifié par axis. Le format de texture de cet objet est utilisé.
Renvoie l’image rendue de la tranche, ou une image nulle si un index non valide est spécifié.
Voir également setTextureFormat().
void QCustom3DVolume::setSliceIndices(int x, int y, int z)
Une fonction pratique permettant de définir simultanément les trois indices de tranche (x, y et z).
Voir également textureData.
void QCustom3DVolume::setSubTextureData(Qt::Axis axis, int index, const QImage &image)
Définit une seule sous-texture 2D de la texture 3D le long de l'axis e spécifiée du volume. Le paramètre ` index ` spécifie la sous-texture à définir. L'image source doit être au format spécifié par la propriété « textureFormat » si « textureFormat » est indexé. Si « textureFormat » est « QImage::Format_ARGB32 », l'image est convertie dans ce format. L'image doit avoir la taille de la section transversale de la texture du volume le long de l'axe spécifié. L'orientation de l'image doit correspondre à l'orientation de l'image de coupe produite par la méthode « renderSlice() » le long du même axe.
Remarque : chaque ligne de la dimension x des données doit être alignée sur 32 bits lorsque l’on cible l’axe y ou l’axe z. Si textureFormat est QImage::Format_Indexed8 et que la valeur de textureWidth n’est pas divisible par quatre, il peut être nécessaire d’ajouter des octets de remplissage à chaque ligne de la dimension x de l’image afin de l’aligner correctement. Les octets de remplissage doivent correspondre à une couleur entièrement transparente afin d’éviter les artefacts de rendu. Il n’est pas garanti que la fonction ` QImage ` effectue cette opération automatiquement.
Voir également textureData et renderSlice().
void QCustom3DVolume::setSubTextureData(Qt::Axis axis, int index, const uchar *data)
Définit une seule sous-texture 2D de la texture 3D le long de l'axis e spécifiée du volume. Le paramètre index spécifie la sous-texture à définir. L'data de la texture doit être au format spécifié par la propriété textureFormat et avoir une taille égale à la section transversale de la texture du volume le long de l'axe spécifié, multipliée par la profondeur de couleur du format de texture en octets. L'data doit être ordonnée de la même manière que les données des images produites par la méthode renderSlice() le long du même axe.
Remarque : chaque ligne de la dimension x des données doit être alignée sur 32 bits lorsque l’axe ciblé est l’axe y ou l’axe z. Si textureFormat est QImage::Format_Indexed8 et que la valeur de textureWidth n’est pas divisible par quatre, il peut être nécessaire d’ajouter des octets de remplissage à chaque ligne de la dimension x de l’ data afin de l’aligner correctement. Les octets de remplissage doivent indiquer une couleur entièrement transparente afin d’éviter les artefacts de rendu.
Voir également textureData et renderSlice().
void QCustom3DVolume::setTextureDimensions(int width, int height, int depth)
Une fonction pratique permettant de définir simultanément les trois dimensions de la texture (width, height et depth).
Voir également textureData.
void QCustom3DVolume::setTextureFormat(QImage::Format format)
Définit le format de la propriété textureData sur format. Seuls deux formats sont actuellement pris en charge : QImage::Format_Indexed8 et QImage::Format_ARGB32. Si un format indexé est spécifié, colorTable doit également être défini. La valeur par défaut est QImage::Format_ARGB32.
Voir également textureFormat(), colorTable et textureData.
int QCustom3DVolume::textureDataWidth() const
Renvoie la largeur réelle des données de texture. Lorsque le format de texture est « QImage::Format_Indexed8 », cette valeur est égale à « textureWidth », alignée sur une limite de 32 bits. Dans le cas contraire, cette valeur est égale à quatre fois « textureWidth ».
QImage::Format QCustom3DVolume::textureFormat() const
Renvoie le format de la valeur de la propriété « textureData ».
Voir aussi setTextureFormat().
[signal] void QCustom3DVolume::textureFormatChanged(QImage::Format format)
Ce signal est émis lorsque l'format e de la valeur « textureData » change.
Voir également setTextureFormat().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.