Spec-Zone.ru › Qt 5.12

Класс QCustom3DVolume

Класс QCustom3DVolume добавляет объект, визуализируемый по объёму, в график. Подробнее...

Заголовок: #include <QCustom3DVolume>
С версии: QtDataVisualization 1.2
Инициализируется из: Custom3DVolume
Наследует от: QCustom3DItem
  • Список всех членов, включая наследуемые
  • Устаревшие члены

Свойства

  • alphaMultiplier : float
  • colorTable : QVector<QRgb>
  • drawSliceFrames : bool
  • drawSlices : bool
  • preserveOpacity : bool
  • sliceFrameColor : QColor
  • sliceFrameGaps : QVector3D
  • sliceFrameThicknesses : QVector3D
  • sliceFrameWidths : QVector3D
  • sliceIndexX : int
  • sliceIndexY : int
  • sliceIndexZ : int
  • textureData : QVector<uchar>*
  • textureDepth : int
  • textureHeight : int
  • textureWidth : int
  • useHighDefShader : bool
  • 9 свойств, унаследованных от QCustom3DItem
  • 1 свойство, унаследованное от QObject

Открытые функции

QCustom3DVolume(QObject *parent = nullptr)
QCustom3DVolume(const QVector3D &position, const QVector3D &scaling, const QQuaternion &rotation, int textureWidth, int textureHeight, int textureDepth, QVector<uchar> *textureData, QImage::Format textureFormat, const QVector<QRgb> &colorTable, QObject *parent = nullptr)
virtual ~QCustom3DVolume()
float alphaMultiplier() const
QVector<QRgb> colorTable() const
QVector<uchar> * createTextureData(const QVector<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 QVector<QRgb> &colors)
void setDrawSliceFrames(bool enable)
void setDrawSlices(bool enable)
void setPreserveOpacity(bool enable)
void setSliceFrameColor(const QColor &color)
void setSliceFrameGaps(const QVector3D &values)
void setSliceFrameThicknesses(const QVector3D &values)
void setSliceFrameWidths(const 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 uchar *data)
void setSubTextureData(Qt::Axis axis, int index, const QImage &image)
void setTextureData(QVector<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
QVector<uchar> * textureData() const
int textureDataWidth() const
int textureDepth() const
QImage::Format textureFormat() const
int textureHeight() const
int textureWidth() const
bool useHighDefShader() const
  • 20 функций, унаследованных от QCustom3DItem
  • 31 функций, унаследованных от QObject

Сигналы

void alphaMultiplierChanged(float mult)
void colorTableChanged()
void drawSliceFramesChanged(bool enabled)
void drawSlicesChanged(bool enabled)
void preserveOpacityChanged(bool enabled)
void sliceFrameColorChanged(const QColor &color)
void sliceFrameGapsChanged(const QVector3D &values)
void sliceFrameThicknessesChanged(const QVector3D &values)
void sliceFrameWidthsChanged(const QVector3D &values)
void sliceIndexXChanged(int value)
void sliceIndexYChanged(int value)
void sliceIndexZChanged(int value)
void textureDataChanged(QVector<uchar> *data)
void textureDepthChanged(int value)
void textureFormatChanged(QImage::Format format)
void textureHeightChanged(int value)
void textureWidthChanged(int value)
void useHighDefShaderChanged(bool enabled)
  • 9 сигналов, унаследованных от QCustom3DItem
  • 2 сигнала, унаследованных от QObject

Статические публичные члены

const QMetaObject staticMetaObject
  • 9 статических публичных членов, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 публичный слот, унаследованный от QObject
  • 9 защищенных функций, унаследованных от QObject

Подробное описание

Класс QCustom3DVolume добавляет объемный объект, отображаемый по данным, в график.

Объемный объект представляет собой куб с 3D текстурой. Поддерживаются три плоскости срезов вдоль основных осей объема.

Отображение объемных объектов очень ресурсоемко, особенно при большой прозрачности, так как содержимое объема просчитывается по лучам. Производительность почти линейно зависит от количества пикселей, занимаемых объемом на экране, поэтому уменьшение области отображения или ограничение масштаба графика являются простыми способами повышения производительности. Аналогично, размер текстуры объема сильно влияет на производительность. Если частота кадров важнее, чем точное отображение содержимого объема, отключите высокодетализированную отрисовку, установив свойство useHighDefShader в false.

Примечание: Объемные объекты поддерживаются только с ортогональной проекцией.

Примечание: Объемные объекты используют 3D текстуры, которые не поддерживаются в средах OpenGL ES2.

См. также QAbstract3DGraph::addCustomItem(), QAbstract3DGraph::orthoProjection и useHighDefShader.

Документация свойств

alphaMultiplier : float

Это свойство хранит значение, с которым умножается значение альфа каждого текселя текстуры объема во время отрисовки.

Это свойство можно использовать для введения равномерной прозрачности объема. Если preserveOpacity true, то затронуты только тексели, которые изначально обладают некоторой прозрачностью, а полностью непрозрачные тексели не затронуты. Значение не должно быть отрицательным. По умолчанию 1.0f.

Функции доступа:

float alphaMultiplier() const
void setAlphaMultiplier(float mult)

Сигнал уведомления:

void alphaMultiplierChanged(float mult)

См. также preserveOpacity и textureData.

colorTable : QVector<QRgb>

Это свойство хранит массив, содержащий цвета для индексированных форматов текстур.

Если формат текстуры не индексированный, этот массив не используется и может быть пустым.

По умолчанию 0.

Функции доступа:

QVector<QRgb> colorTable() const
void setColorTable(const QVector<QRgb> &colors)

Сигнал уведомления:

void colorTableChanged()

См. также textureData, setTextureFormat(), и QImage::colorTable().

drawSliceFrames : bool

Это свойство указывает, нужно ли рисовать рамки срезов вокруг объема.

Если это свойство имеет значение true, рамки срезов, указанные свойствами индекса среза, будут нарисованы вокруг объема. Если false, рамки срезов не будут нарисованы.

Отрисовка рамок срезов не зависит от отрисовки самих срезов, поэтому вы можете отображать весь объем и при этом рисовать рамки вокруг него. Это полезно при использовании renderSlice() для отображения срезов вне самого графика.

По умолчанию false.

Функции доступа:

bool drawSliceFrames() const
void setDrawSliceFrames(bool enable)

Сигнал уведомления:

void drawSliceFramesChanged(bool enabled)

См. также sliceIndexX, sliceIndexY, sliceIndexZ, drawSlices и renderSlice().

drawSlices : bool

Это свойство указывает, нужно ли рисовать указанные срезы вместо всего объема.

Если это свойство имеет значение true, срезы, указанные свойствами индекса среза, будут нарисованы вместо всего объема. Если false, всегда будет нарисован весь объем. По умолчанию false.

Примечание: Срезы всегда рисуются вдоль осей элемента, поэтому, если элемент повернут, срезы тоже повернутся.

Функции доступа:

bool drawSlices() const
void setDrawSlices(bool enable)

Сигнал уведомления:

void drawSlicesChanged(bool enabled)

См. также sliceIndexX, sliceIndexY и sliceIndexZ.

preserveOpacity : bool

Это свойство определяет, применяется ли множитель альфа ко всем текселям.

Если это свойство имеет значение true, alphaMultiplier применяется только к текселям, которые уже обладают некоторой прозрачностью. Если false, множитель применяется к значению альфа всех текселей. По умолчанию true.

Функции доступа:

bool preserveOpacity() const
void setPreserveOpacity(bool enable)

Сигнал уведомления:

void preserveOpacityChanged(bool enabled)

См. также alphaMultiplier.

sliceFrameColor : QColor

Это свойство хранит цвет рамки среза.

Прозрачный цвет рамки среза не поддерживается.

По умолчанию чёрный.

Функции доступа:

QColor sliceFrameColor() const
void setSliceFrameColor(const QColor &color)

Сигнал уведомления:

void sliceFrameColorChanged(const QColor &color)

См. также drawSliceFrames.

sliceFrameGaps : QVector3D

Это свойство хранит размер воздушного зазора между самим объёмом и рамкой в каждом измерении.

Зазор может быть разным в разных измерениях. Значения являются долями толщины объема в соответствующем измерении. Значения не могут быть отрицательными.

По умолчанию QVector3D(0.01, 0.01, 0.01).

Функции доступа:

QVector3D sliceFrameGaps() const
void setSliceFrameGaps(const QVector3D &values)

Сигнал уведомления:

void sliceFrameGapsChanged(const QVector3D &values)

См. также drawSliceFrames.

sliceFrameThicknesses : QVector3D

Это свойство хранит толщину рамок срезов для каждого измерения.

Значения являются долями толщины объема в соответствующем измерении. Значения не могут быть отрицательными.

По умолчанию QVector3D(0.01, 0.01, 0.01).

Функции доступа:

QVector3D sliceFrameThicknesses() const
void setSliceFrameThicknesses(const QVector3D &values)

Сигнал уведомления:

void sliceFrameThicknessesChanged(const QVector3D &values)

См. также drawSliceFrames.

sliceFrameWidths : QVector3D

Это свойство хранит ширину рамки среза.

Ширина может отличаться в разных измерениях, поэтому, например, можно отключить рисование рамок по определённым сторонам объема, установив значение для этого измерения в ноль. Значения являются долями толщины объема в соответствующем измерении. Значения не могут быть отрицательными.

По умолчанию QVector3D(0.01, 0.01, 0.01).

Функции доступа:

QVector3D sliceFrameWidths() const
void setSliceFrameWidths(const QVector3D &values)

Сигнал уведомления:

void sliceFrameWidthsChanged(const QVector3D &values)

См. также drawSliceFrames.

sliceIndexX : int

Это свойство содержит индекс x-размерности в данных текстуры, указывающий, какой вертикальный срез отобразить.

Указание любого измерения отрицательным значением означает, что для этого измерения не отрисовывается срез или рамка среза. Если все измерения отрицательны, срезы и рамки срезов не отрисовываются, и объём отображается в обычном режиме.

По умолчанию -1.

Функции доступа:

int sliceIndexX() const
void setSliceIndexX(int value)

Сигнал уведомления:

void sliceIndexXChanged(int value)

См. также textureData, drawSlices и drawSliceFrames.

sliceIndexY : int

Это свойство содержит индекс y-размерности в данных текстуры, указывающий, какой горизонтальный срез отобразить.

Указание любого измерения отрицательным значением означает, что для этого измерения не отрисовывается срез или рамка среза. Если все измерения отрицательны, срезы и рамки срезов не отрисовываются, и объём отображается в обычном режиме.

По умолчанию -1.

Функции доступа:

int sliceIndexY() const
void setSliceIndexY(int value)

Сигнал уведомления:

void sliceIndexYChanged(int value)

См. также textureData, drawSlices и drawSliceFrames.

sliceIndexZ : int

Это свойство содержит индекс z-размерности в данных текстуры, указывающий, какой вертикальный срез отобразить.

Указание любого измерения отрицательным значением означает, что для этого измерения не отрисовывается срез или рамка среза. Если все измерения отрицательны, срезы и рамки срезов не отрисовываются, и объём отображается в обычном режиме.

По умолчанию -1.

Функции доступа:

int sliceIndexZ() const
void setSliceIndexZ(int value)

Сигнал уведомления:

void sliceIndexZChanged(int value)

См. также textureData, drawSlices и drawSliceFrames.

textureData : QVector<uchar>*

Это свойство содержит массив, содержащий данные текстуры в формате, указанном 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 не делится на четыре, для каждой строки x-размерности данных data могут потребоваться добавочные байты заполнения. Функция textureDataWidth() возвращает количество байтов с учётом заполнения. Байты заполнения должны указывать полностью прозрачный цвет, чтобы избежать артефактов отрисовки.

По умолчанию 0.

Функции доступа:

QVector<uchar> * textureData() const
void setTextureData(QVector<uchar> *data)

Сигнал уведомления:

void textureDataChanged(QVector<uchar> *data)

См. также colorTable, setTextureFormat(), setSubTextureData() и textureDataWidth().

textureDepth : int

Это свойство содержит глубину 3D-текстуры, определяющей содержимое объёма в пикселях.

По умолчанию 0.

Примечание: Значение textureData может потребоваться изменить размер или пересоздать, если это значение изменено. По умолчанию 0.

Функции доступа:

int textureDepth() const
void setTextureDepth(int value)

Сигнал уведомления:

void textureDepthChanged(int value)

См. также textureData, textureWidth, textureHeight и setTextureFormat().

textureHeight : int

Это свойство содержит высоту 3D-текстуры, определяющей содержимое объёма в пикселях.

По умолчанию 0.

Примечание: Значение textureData может потребоваться изменить размер или пересоздать, если это значение изменено. По умолчанию 0.

Функции доступа:

int textureHeight() const
void setTextureHeight(int value)

Сигнал уведомления:

void textureHeightChanged(int value)

См. также textureData, textureWidth, textureDepth и setTextureFormat().

textureWidth : int

Это свойство содержит ширину 3D-текстуры, определяющей содержимое объёма в пикселях.

По умолчанию 0.

Примечание: Значение textureData может потребоваться изменить размер или пересоздать, если это значение изменено. По умолчанию 0.

Функции доступа:

int textureWidth() const
void setTextureWidth(int value)

Сигнал уведомления:

void textureWidthChanged(int value)

См. также textureData, textureHeight, textureDepth, setTextureFormat() и textureDataWidth().

useHighDefShader : bool

Это свойство указывает, используется ли высокодетализированный или низкодетализированный шейдер для отрисовки объёма.

Если значение этого свойства true, используется высокодетализированный шейдер. Если оно false, используется низкодетализированный шейдер.

Высококачественный шейдер гарантирует, что при отрисовке объёмной текстуры будут просчитаны все видимые текстурные элементы (тексели). Низкокачественный шейдер отрисовывает лишь приблизительное представление содержимого объёмной текстуры, но с гораздо большей частотой кадров. Низкокачественный шейдер не гарантирует просчёт каждого текселя объёмной текстуры, поэтому может наблюдаться мерцание, если объёмная текстура содержит тонкие отдельные элементы.

Примечание: Это значение не влияет на уровень детализации при отрисовке срезов объёмной текстуры.

По умолчанию значение равно true.

Функции доступа:

bool useHighDefShader() const
void setUseHighDefShader(bool enable)

Сигнал уведомления:

void useHighDefShaderChanged(bool enabled)

См. также renderSlice().

Документация по членам-функциям

QCustom3DVolume::QCustom3DVolume(QObject *parent = nullptr)

Создаёт объёмное 3D-объект с заданным parent.

QCustom3DVolume::QCustom3DVolume(const QVector3D &position, const QVector3D &scaling, const QQuaternion &rotation, int textureWidth, int textureHeight, int textureDepth, QVector<uchar> *textureData, QImage::Format textureFormat, const QVector<QRgb> &colorTable, QObject *parent = nullptr)

Создаёт объёмное 3D-объект с заданными параметрами: position, scaling, rotation, textureWidth, textureHeight, textureDepth, textureData, textureFormat, colorTable и необязательным parent.

См. также textureData, setTextureFormat() и colorTable.

[virtual] QCustom3DVolume::~QCustom3DVolume()

Удаляет объёмный 3D-объект.

QVector<uchar> *QCustom3DVolume::createTextureData(const QVector<QImage *> &images)

Создаёт новый массив данных текстуры из массива images и устанавливает его как textureData для этого объекта. Размеры текстуры также устанавливаются в соответствии с размерами изображения и массива. Все изображения в массиве должны быть одного размера. Если изображения не все в формате QImage::Format_Indexed8, все данные текстуры будут преобразованы в формат QImage::Format_ARGB32. Если изображения в формате QImage::Format_Indexed8, значение colorTable для всего объёма будет взято из первого изображения.

Возвращает указатель на вновь созданный массив.

См. также textureData, textureWidth, textureHeight, textureDepth и setTextureFormat().

QImage QCustom3DVolume::renderSlice(Qt::Axis axis, int index)

Отрисовывает срез, указанный index, вдоль оси, указанной axis, в изображение. Используется формат текстуры этого объекта.

Возвращает отрисованное изображение среза или пустое изображение, если указан неверный индекс.

См. также setTextureFormat().

void QCustom3DVolume::setSliceIndices(int x, int y, int z)

Удобная функция для одновременной установки всех трёх индексов срезов (x, y и z).

См. также textureData.

void QCustom3DVolume::setSubTextureData(Qt::Axis axis, int index, const uchar *data)

Устанавливает отдельную 2D-подтекстуру 3D-текстуры вдоль указанной axis оси объёма. Параметр index определяет подтекстуру для установки. Данные текстуры data должны быть в формате, указанном свойством textureFormat, и иметь размер поперечного сечения текстуры объёма вдоль указанной оси, умноженный на глубину цвета формата текстуры в байтах. Ожидается, что данные data будут упорядочены аналогично данным на изображениях, создаваемых методом renderSlice() вдоль той же оси.

Примечание: Каждая строка x-размера данных должна быть выровнена по 32-битным границам при использовании оси y или z. Если textureFormat равен QImage::Format_Indexed8, а значение textureWidth не делится на четыре, для правильного выравнивания может потребоваться добавление заполняющих байтов к каждой строке x-размера данных data. Заполняющие байты должны указывать полностью прозрачный цвет, чтобы избежать артефактов отображения.

См. также textureData и renderSlice().

void QCustom3DVolume::setSubTextureData(Qt::Axis axis, int index, const QImage &image)

Устанавливает отдельную 2D-подтекстуру 3D-текстуры вдоль указанной axis оси объёма. Параметр index определяет подтекстуру для установки. Исходное изображение image должно быть в формате, указанном свойством textureFormat, если textureFormat — индексированный. Если textureFormat равен QImage::Format_ARGB32, изображение преобразуется в этот формат. Изображение должно иметь размер поперечного сечения текстуры объёма вдоль указанной оси. Ориентация изображения должна соответствовать ориентации изображения среза, создаваемого методом renderSlice() вдоль той же оси.

Примечание: Каждая строка x-размера данных должна быть выровнена по 32-битным границам при использовании оси y или z. Если textureFormat равен QImage::Format_Indexed8, а значение textureWidth не делится на четыре, для правильного выравнивания может потребоваться добавление заполняющих байтов к каждой строке x-размера изображения. Заполняющие байты должны указывать полностью прозрачный цвет, чтобы избежать артефактов отображения. Не гарантируется, что QImage сделает это автоматически.

См. также textureData и renderSlice().

void QCustom3DVolume::setTextureDimensions(int width, int height, int depth)

Удобная функция для одновременной установки всех трёх размеров текстуры (width, height и depth).

См. также textureData.

void QCustom3DVolume::setTextureFormat(QImage::Format format)

Устанавливает формат свойства textureData на format. В настоящее время поддерживаются только два формата: QImage::Format_Indexed8 и QImage::Format_ARGB32. Если указан индексированный формат, необходимо также установить colorTable. По умолчанию используется QImage::Format_ARGB32.

См. также textureFormat(), colorTable и textureData.

int QCustom3DVolume::textureDataWidth() const

Возвращает фактическую ширину данных текстуры. Когда формат текстуры равен QImage::Format_Indexed8, это значение равно textureWidth, выровненному по 32-битной границе. В противном случае это значение равно четырёмкратному значению textureWidth.

QImage::Format QCustom3DVolume::textureFormat() const

Возвращает формат свойства textureData.

См. также setTextureFormat().

[signal] void QCustom3DVolume::textureFormatChanged(QImage::Format format)

Этот сигнал испускается, когда изменяется формат значения textureData.

См. также setTextureFormat().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qcustom3dvolume.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API