diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-09-12 11:27:24 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-09-12 12:15:02 +0300 |
commit | e5f6ab99b413ad9b8481ad923c5a4a5bc6513ff2 (patch) | |
tree | 85fd24fe13281b882e989a5f6826bc3cdad41446 /examples/datavisualization/volumetric/volumetric.cpp | |
parent | ddb9be979d93b7e17f1067dc6056de54d9828b29 (diff) |
Implement volume slice frames
Change-Id: I409f3c95892b26ca6097dd4509109fc9978b9900
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples/datavisualization/volumetric/volumetric.cpp')
-rw-r--r-- | examples/datavisualization/volumetric/volumetric.cpp | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/examples/datavisualization/volumetric/volumetric.cpp b/examples/datavisualization/volumetric/volumetric.cpp index 54e930d2..80df4bd5 100644 --- a/examples/datavisualization/volumetric/volumetric.cpp +++ b/examples/datavisualization/volumetric/volumetric.cpp @@ -58,6 +58,9 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter) m_sliceIndexX(lowDetailSize / 2), m_sliceIndexY(lowDetailSize / 4), m_sliceIndexZ(lowDetailSize / 2), + m_slicingX(false), + m_slicingY(false), + m_slicingZ(false), m_mediumDetailRB(0), m_highDetailRB(0), m_lowDetailData(0), @@ -79,6 +82,7 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter) m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone); m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront); m_graph->setOrthoProjection(true); + m_graph->activeTheme()->setBackgroundEnabled(false); toggleAreaAll(true); @@ -162,6 +166,12 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter) m_volumeItem->setColorTable(m_colorTable1); + m_volumeItem->setSliceFrameGaps(QVector3D(0.01f, 0.02f, 0.01f)); + m_volumeItem->setSliceFrameThicknesses(QVector3D(0.0025f, 0.005f, 0.0025f)); + m_volumeItem->setSliceFrameWidths(QVector3D(0.0025f, 0.005f, 0.0025f)); + m_volumeItem->setDrawSliceFrames(false); + handleSlicingChanges(); + m_graph->addCustomItem(m_volumeItem); m_timer.start(0); @@ -226,20 +236,20 @@ void VolumetricModifier::setAlphaMultiplierLabel(QLabel *label) void VolumetricModifier::sliceX(int enabled) { - if (m_volumeItem) - m_volumeItem->setSliceIndexX(enabled ? m_sliceIndexX : -1); + m_slicingX = enabled; + handleSlicingChanges(); } void VolumetricModifier::sliceY(int enabled) { - if (m_volumeItem) - m_volumeItem->setSliceIndexY(enabled ? m_sliceIndexY : -1); + m_slicingY = enabled; + handleSlicingChanges(); } void VolumetricModifier::sliceZ(int enabled) { - if (m_volumeItem) - m_volumeItem->setSliceIndexZ(enabled ? m_sliceIndexZ : -1); + m_slicingZ = enabled; + handleSlicingChanges(); } void VolumetricModifier::adjustSliceX(int value) @@ -482,6 +492,12 @@ void VolumetricModifier::toggleAreaMountain(bool enabled) } } +void VolumetricModifier::setDrawSliceFrames(int enabled) +{ + if (m_volumeItem) + m_volumeItem->setDrawSliceFrames(enabled); +} + void VolumetricModifier::initHeightMap(QString fileName, QVector<uchar> &layerData) { QImage heightImage(fileName); @@ -607,6 +623,25 @@ void VolumetricModifier::excavateMineBlock(int textureSize, int dataIndex, int s } } +void VolumetricModifier::handleSlicingChanges() +{ + if (m_volumeItem) { + if (m_slicingX || m_slicingY || m_slicingZ) { + // Only show slices of selected dimensions + m_volumeItem->setDrawSlices(true); + m_volumeItem->setSliceIndexX(m_slicingX ? m_sliceIndexX : -1); + m_volumeItem->setSliceIndexY(m_slicingY ? m_sliceIndexY : -1); + m_volumeItem->setSliceIndexZ(m_slicingZ ? m_sliceIndexZ : -1); + } else { + // Show slice frames for all dimenstions when not actually slicing + m_volumeItem->setDrawSlices(false); + m_volumeItem->setSliceIndexX(m_sliceIndexX); + m_volumeItem->setSliceIndexY(m_sliceIndexY); + m_volumeItem->setSliceIndexZ(m_sliceIndexZ); + } + } +} + void VolumetricModifier::initMineShaftArray() { m_mineShaftArray << QPair<QVector3D, QVector3D>(QVector3D(0.7f, 0.1f, 0.7f), |