QCustom3DVolume Class
QCustom3DVolume 클래스는 그래프에 볼륨 렌더링된 오브젝트를 추가합니다. 더 보기...
Header: | #include <QCustom3DVolume> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DataVisualization) target_link_libraries(mytarget PRIVATE Qt6::DataVisualization) |
qmake: | QT += datavisualization |
이후: | QtDataVisualization 1.2 |
QML에서: | Custom3DVolume |
상속합니다: | QCustom3DItem |
속성
|
|
공공 기능
QCustom3DVolume(QObject *parent = nullptr) | |
QCustom3DVolume(const QVector3D &position, const 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() |
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(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 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 |
신호
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(QList<uchar> *data) |
void | textureDepthChanged(int value) |
void | textureFormatChanged(QImage::Format format) |
void | textureHeightChanged(int value) |
void | textureWidthChanged(int value) |
void | useHighDefShaderChanged(bool enabled) |
상세 설명
볼륨 렌더링 오브젝트는 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 : QList<QRgb>
이 프로퍼티에는 인덱싱된 텍스처 형식의 색상이 포함된 배열이 저장됩니다.
텍스처 포맷이 인덱싱되지 않은 경우 이 배열은 사용되지 않으며 비어 있을 수 있습니다.
기본값은 0
입니다.
함수에 액세스합니다:
QList<QRgb> | colorTable() const |
void | setColorTable(const QList<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
이 속성은 슬라이스 프레임의 너비를 보유합니다.
너비는 치수마다 다를 수 있으므로 예를 들어 해당 치수의 값을 0으로 설정하여 볼륨의 특정 면에 프레임을 그리는 것을 생략할 수 있습니다. 값은 동일한 치수의 볼륨 두께의 분수입니다. 값은 음수가 될 수 없습니다.
기본값은 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 : QList<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 값이 4로 나눌 수 없는 경우 data 의 각 x 차원 라인에 패딩 바이트를 추가해야 할 수 있습니다. textureDataWidth() 함수는 패딩된 바이트 수를 반환합니다. 패딩 바이트는 렌더링 아티팩트를 방지하기 위해 완전히 투명한 색상을 나타내야 합니다.
기본값은 0
입니다.
액세스 함수:
QList<uchar> * | textureData() const |
void | setTextureData(QList<uchar> *data) |
알림 신호:
void | textureDataChanged(QList<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()도 참조하세요 .
멤버 함수 문서
[explicit]
QCustom3DVolume::QCustom3DVolume(QObject *parent = nullptr)
주어진 parent 으로 커스텀 3D 볼륨을 생성합니다.
[explicit]
QCustom3DVolume::QCustom3DVolume(const QVector3D &position, const QVector3D &scaling, const QQuaternion &rotation, int textureWidth, int textureHeight, int textureDepth, QList<uchar> *textureData, QImage::Format textureFormat, const QList<QRgb> &colorTable, QObject *parent = nullptr)
주어진 position, scaling, rotation, textureWidth, textureHeight, textureDepth, textureData, textureFormat, colorTable 및 선택 사항인 parent 를 사용하여 사용자 정의 3D 볼륨을 구성합니다.
textureData, setTextureFormat() 및 colorTable 를참조하십시오 .
[virtual noexcept]
QCustom3DVolume::~QCustom3DVolume()
사용자 지정 3D 볼륨을 삭제합니다.
QList<uchar> *QCustom3DVolume::createTextureData(const QList<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)
axis 에 지정된 축을 따라 index 에 지정된 슬라이스를 이미지로 렌더링합니다. 이 객체의 텍스처 형식이 사용됩니다.
슬라이스의 렌더링된 이미지를 반환하거나 잘못된 인덱스가 지정된 경우 null 이미지를 반환합니다.
setTextureFormat()도 참조하세요 .
void QCustom3DVolume::setSliceIndices(int x, int y, int z)
세 가지 슬라이스 인덱스(x, y, z)를 한 번에 설정할 수 있는 편리한 기능입니다.
textureData도 참조하세요 .
void QCustom3DVolume::setSubTextureData(Qt::Axis axis, int index, const QImage &image)
볼륨의 지정된 axis 을 따라 3D 텍스처의 단일 2D 서브 텍스처를 설정합니다. index 파라미터는 설정할 서브텍스처를 지정합니다. textureFormat 이 인덱싱된 경우 소스 image 는 textureFormat 속성에서 지정한 형식이어야 합니다. textureFormat 가 QImage::Format_ARGB32 인 경우 이미지가 해당 형식으로 변환됩니다. 이미지의 크기는 지정된 축을 따라 볼륨 텍스처의 단면 크기여야 합니다. 이미지의 방향은 같은 축을 따라 renderSlice() 메서드로 생성된 슬라이스 이미지의 방향과 일치해야 합니다.
참고: Y축 또는 Z축을 타겟팅할 때는 데이터의 각 X축 선이 32비트 정렬되어야 합니다. textureFormat 가 QImage::Format_Indexed8 이고 textureWidth 값이 4로 나눌 수 없는 경우 이미지의 각 x 차원 라인에 패딩 바이트를 추가하여 올바르게 정렬해야 할 수 있습니다. 패딩 바이트는 렌더링 아티팩트를 방지하기 위해 완전히 투명한 색상을 나타내야 합니다. QImage 이 이 작업을 자동으로 수행한다는 보장은 없습니다.
textureData 및 renderSlice()도 참조하세요 .
void QCustom3DVolume::setSubTextureData(Qt::Axis axis, int index, const uchar *data)
볼륨의 지정된 axis 을 따라 3D 텍스처의 단일 2D 서브 텍스처를 설정합니다. index 파라미터는 설정할 서브 텍스처를 지정합니다. 텍스처 data 는 textureFormat 속성에서 지정한 형식이어야 하며 지정된 축을 따라 볼륨 텍스처의 단면 크기에 텍스처 형식 색 농도를 바이트 단위로 곱한 값이어야 합니다. data 은 renderSlice() 메서드로 생성된 이미지의 데이터와 동일한 축을 따라 유사하게 정렬될 것으로 예상됩니다.
참고: Y축 또는 Z축을 대상으로 할 때 데이터의 각 X축 라인은 32비트 정렬되어야 합니다. textureFormat 가 QImage::Format_Indexed8 이고 textureWidth 값이 4로 나눌 수 없는 경우, 올바르게 정렬하려면 data 의 각 x 차원 라인에 패딩 바이트를 추가해야 할 수 있습니다. 패딩 바이트는 렌더링 아티팩트를 방지하기 위해 완전히 투명한 색상을 나타내야 합니다.
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 인 경우 이 값은 32비트 경계에 정렬된 textureWidth 과 같습니다. 그렇지 않으면 이 값은 textureWidth 의 4배입니다.
QImage::Format QCustom3DVolume::textureFormat() const
textureData 속성 값의 형식을 반환합니다.
setTextureFormat()도 참조하세요 .
[signal]
void QCustom3DVolume::textureFormatChanged(QImage::Format format)
이 신호는 textureData 값의 format 값이 변경될 때 발생합니다.
setTextureFormat()도 참조하세요 .
© 2025 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.