From 1eefb471180746dda5882344deecd750305fea21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Wed, 30 Oct 2013 11:24:24 +0200 Subject: Support for non-zero centered data in bars Task-number: QTRD-2198 Change-Id: Ief48895d93ac9a8ab70743f3da0fdaf7ccd6ea27 Reviewed-by: Miikka Heikkinen --- src/datavisualization/engine/bars3dcontroller.cpp | 13 +- src/datavisualization/engine/bars3drenderer.cpp | 136 ++++++++++++--------- src/datavisualization/engine/drawer.cpp | 14 +-- src/datavisualization/engine/engine.qrc | 7 +- .../engine/meshes/backgroudFlat.obj | 32 ----- .../engine/meshes/backgroudNegatives.obj | 33 ----- .../engine/meshes/backgroudSmooth.obj | 36 ------ src/datavisualization/engine/meshes/background.obj | 32 +++++ .../engine/meshes/backgroundNegatives.obj | 22 ++++ src/datavisualization/engine/q3dwindow.cpp | 1 - src/datavisualization/engine/scatter3drenderer.cpp | 4 +- src/datavisualization/engine/selectionpointer.cpp | 2 +- src/datavisualization/engine/surface3drenderer.cpp | 4 +- 13 files changed, 152 insertions(+), 184 deletions(-) delete mode 100644 src/datavisualization/engine/meshes/backgroudFlat.obj delete mode 100644 src/datavisualization/engine/meshes/backgroudNegatives.obj delete mode 100644 src/datavisualization/engine/meshes/backgroudSmooth.obj create mode 100644 src/datavisualization/engine/meshes/background.obj create mode 100644 src/datavisualization/engine/meshes/backgroundNegatives.obj (limited to 'src/datavisualization') diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp index dc1a9401..6d1ebbae 100644 --- a/src/datavisualization/engine/bars3dcontroller.cpp +++ b/src/datavisualization/engine/bars3dcontroller.cpp @@ -396,16 +396,15 @@ void Bars3DController::adjustAxisRanges() Q3DValueAxis *valueAxis = static_cast(m_axisY); if (valueAxis && categoryAxisX && categoryAxisZ && valueAxis->isAutoAdjustRange() && proxy) { QPair limits = proxy->dptrc()->limitValues(categoryAxisX->min(), - categoryAxisX->max(), - categoryAxisZ->min(), - categoryAxisZ->max()); + categoryAxisX->max(), + categoryAxisZ->min(), + categoryAxisZ->max()); if (limits.first < 0) { - // TODO: Currently we only support symmetric y-axis for bar graph if there are negative values - qreal maxAbs = qMax(qFabs(limits.first), qFabs(limits.second)); // Call private implementation to avoid unsetting auto adjust flag - valueAxis->dptr()->setRange(-maxAbs, maxAbs); + valueAxis->dptr()->setRange(limits.first, limits.second); } else if (limits.second == 0.0) { - valueAxis->dptr()->setRange(0.0, 1.0); // Only zero value values in data set, set range to something. + // Only zero value values in data set, set range to something. + valueAxis->dptr()->setRange(0.0, 1.0); } else { valueAxis->dptr()->setRange(0.0, limits.second); } diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index 8e8a4e93..0f24c995 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -281,11 +281,6 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, GLint stopBar = m_sliceSelection->size(); GLint stepBar = 1; QVector3D lightPos; - GLfloat negativesComp = 1.0f; - - // Compensate bar scaling a bit to avoid drawing on axis titles when we have negative values - if (m_hasNegativeValues) - negativesComp = 0.67f; // Specify viewport glViewport(m_sliceViewPort.x(), m_sliceViewPort.y(), @@ -318,8 +313,9 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, m_cachedTheme.m_ambientStrength * 2.0f); // Draw the selected row / column - // We need some room for labels underneath; add +0.2f - GLfloat barPosYAdjustment = m_yAdjustment / 2.0f - 0.2f; + GLfloat barPosYAdjustment = 0.2f; // Add a bit of space for labels + if (m_hasNegativeValues) + barPosYAdjustment += m_yAdjustment / 2.0f; QVector3D modelMatrixScaler(m_scaleX, 0.0f, m_scaleZ); QMatrix4x4 projectionViewMatrix = projectionMatrix * viewMatrix; QVector3D barHighlightColor(Utils::vectorFromColor(m_cachedTheme.m_highlightBarColor)); @@ -342,13 +338,13 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, QMatrix4x4 MVPMatrix; QMatrix4x4 itModelMatrix; - GLfloat barPosY = negativesComp * item->translation().y() - barPosYAdjustment; + GLfloat barPosY = item->translation().y() + barPosYAdjustment; if (rowMode) barPosX = item->translation().x(); else barPosX = -(item->translation().z()); // flip z; frontmost bar to the left modelMatrix.translate(barPosX, barPosY, 0.0f); - modelMatrixScaler.setY(negativesComp * item->height()); + modelMatrixScaler.setY(item->height()); modelMatrix.scale(modelMatrixScaler); itModelMatrix.scale(modelMatrixScaler); @@ -409,10 +405,11 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, const Q3DCamera *activeCamera = m_cachedScene->activeCamera(); // Draw labels for bars - QVector3D valuePositionComp(0.0f, m_yAdjustment, 0.0f); - QVector3D negativesRotation(0.0f, 0.0f, 90.0f); + QVector3D valuePositionComp = zeroVector; + if (m_hasNegativeValues) + valuePositionComp.setY(-barPosYAdjustment); + QVector3D sliceValueRotation(0.0f, 0.0f, 90.0f); QVector3D sliceLabelRotation(0.0f, 0.0f, -45.0f); - GLfloat negativesCompPow2 = negativesComp * negativesComp; // Labels in axis caches can be in inverted order depending in orientation bool flipped = (m_xFlipped && rowMode) || (m_zFlipped && !rowMode); @@ -420,17 +417,10 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, for (int col = 0; col < stopBar; col++) { BarRenderItem *item = m_sliceSelection->at(col); // Draw values - if (!m_hasNegativeValues) { - m_drawer->drawLabel(*item, item->sliceLabelItem(), viewMatrix, projectionMatrix, - valuePositionComp, negativesRotation, item->height(), - m_cachedSelectionMode, m_labelShader, m_labelObj, activeCamera, - false, false, Drawer::LabelOver, Qt::AlignTop, true); - } else { - m_drawer->drawLabel(*item, item->sliceLabelItem(), viewMatrix, projectionMatrix, - valuePositionComp, zeroVector, negativesCompPow2 * item->height(), - m_cachedSelectionMode, m_labelShader, m_labelObj, activeCamera, - false, false, Drawer::LabelOver, Qt::AlignCenter, true); - } + m_drawer->drawLabel(*item, item->sliceLabelItem(), viewMatrix, projectionMatrix, + valuePositionComp, sliceValueRotation, item->height(), + m_cachedSelectionMode, m_labelShader, m_labelObj, activeCamera, + false, false, Drawer::LabelOver, Qt::AlignTop, true); // Draw labels if (m_sliceCache->labelItems().size() > col) { @@ -974,10 +964,8 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Bind background shader m_backgroundShader->bind(); - if (m_hasNegativeValues) - glDisable(GL_CULL_FACE); - else - glCullFace(GL_BACK); + // Reset culling + glCullFace(GL_BACK); // Draw background GLfloat rowScaleFactor = m_rowWidth / m_scaleFactor; @@ -989,10 +977,15 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) QMatrix4x4 itModelMatrix; QVector3D backgroundScaler(rowScaleFactor, 1.0f, columnScaleFactor); - modelMatrix.translate(0.0f, 1.0f - m_yAdjustment, 0.0f); + if (m_hasNegativeValues) { + backgroundScaler.setY(0.5f); + modelMatrix.translate(0.0f, m_yAdjustment - 0.5f, 0.0f); + } else { + modelMatrix.translate(0.0f, 1.0f - m_yAdjustment, 0.0f); + } modelMatrix.scale(backgroundScaler); - modelMatrix.rotate(backgroundRotation, 0.0f, 1.0f, 0.0f); itModelMatrix.scale(backgroundScaler); + modelMatrix.rotate(backgroundRotation, 0.0f, 1.0f, 0.0f); itModelMatrix.rotate(backgroundRotation, 0.0f, 1.0f, 0.0f); #ifdef SHOW_DEPTH_TEXTURE_SCENE @@ -1035,6 +1028,49 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Draw the object m_drawer->drawObject(m_backgroundShader, m_backgroundObj); } + + // Draw floor for graph with negatives + if (m_hasNegativeValues) { + modelMatrix = QMatrix4x4(); + itModelMatrix = QMatrix4x4(); + + modelMatrix.translate(0.0f, -m_yAdjustment, 0.0f); + modelMatrix.scale(backgroundScaler); + itModelMatrix.scale(backgroundScaler); + + if (m_yFlipped) { + modelMatrix.rotate(90.0f, 1.0f, 0.0f, 0.0f); + itModelMatrix.rotate(90.0f, 1.0f, 0.0f, 0.0f); + } else { + modelMatrix.rotate(-90.0f, 1.0f, 0.0f, 0.0f); + itModelMatrix.rotate(-90.0f, 1.0f, 0.0f, 0.0f); + } + +#ifdef SHOW_DEPTH_TEXTURE_SCENE + MVPMatrix = depthProjectionViewMatrix * modelMatrix; +#else + MVPMatrix = projectionViewMatrix * modelMatrix; +#endif + // Set changed shader bindings + m_backgroundShader->setUniformValue(m_backgroundShader->model(), modelMatrix); + m_backgroundShader->setUniformValue(m_backgroundShader->nModel(), + itModelMatrix.inverted().transposed()); + m_backgroundShader->setUniformValue(m_backgroundShader->MVP(), MVPMatrix); + +#if !defined(QT_OPENGL_ES_2) + if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) { + // Set shadow shader bindings + QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix; + m_backgroundShader->setUniformValue(m_backgroundShader->depth(), depthMVPMatrix); + // Draw the object + m_drawer->drawObject(m_backgroundShader, m_gridLineObj, 0, m_depthTexture); + } else +#endif + { + // Draw the object + m_drawer->drawObject(m_backgroundShader, m_gridLineObj); + } + } } // Release background shader @@ -1043,12 +1079,6 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Disable textures glDisable(GL_TEXTURE_2D); - // Reset culling - if (m_hasNegativeValues) { - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); - } - // Draw grid lines if (m_cachedIsGridEnabled && m_heightNormalizer) { ShaderHelper *lineShader = m_backgroundShader; @@ -1168,17 +1198,18 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Wall lines: back wall GLfloat heightStep = m_axisCacheY.subSegmentStep(); GLfloat startLine = 0.0f; + int segmentCount = m_axisCacheY.segmentCount() * m_axisCacheY.subSegmentCount(); GLfloat zWallLinePosition = -columnScaleFactor + gridLineOffset; if (m_zFlipped) zWallLinePosition = -zWallLinePosition; if (m_hasNegativeValues) - startLine = -m_heightNormalizer; + startLine = m_axisCacheY.min(); + GLfloat lineHeight = startLine; gridLineScaler = QVector3D(rowScaleFactor, gridLineWidth, gridLineWidth); - for (GLfloat lineHeight = startLine; lineHeight <= m_heightNormalizer; - lineHeight += heightStep) { + for (int segment = 0; segment <= segmentCount; segment++) { QMatrix4x4 modelMatrix; QMatrix4x4 MVPMatrix; QMatrix4x4 itModelMatrix; @@ -1214,6 +1245,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Draw the object m_drawer->drawObject(lineShader, m_gridLineObj); } + lineHeight += heightStep; } // Wall lines: side wall @@ -1226,9 +1258,9 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) else lineRotation = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, 90.0f); + lineHeight = startLine; gridLineScaler = QVector3D(gridLineWidth, gridLineWidth, columnScaleFactor); - for (GLfloat lineHeight = startLine; lineHeight <= m_heightNormalizer; - lineHeight += heightStep) { + for (int segment = 0; segment <= segmentCount; segment++) { QMatrix4x4 modelMatrix; QMatrix4x4 MVPMatrix; QMatrix4x4 itModelMatrix; @@ -1262,13 +1294,13 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Draw the object m_drawer->drawObject(lineShader, m_gridLineObj); } + lineHeight += heightStep; } } // Release bar shader lineShader->release(); } - // TODO: Calculations done temporarily here. When optimizing, move to after data set addition? Keep drawing of the labels here. // Bind label shader m_labelShader->bind(); @@ -1366,7 +1398,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) GLfloat startLine = 0.0f; int labelCount = m_axisCacheY.labels().size(); if (m_hasNegativeValues) - startLine = -m_heightNormalizer; + startLine = m_axisCacheY.min(); GLfloat labelPos = startLine; GLfloat labelMarginXTrans = labelMargin; GLfloat labelMarginZTrans = labelMargin; @@ -1547,12 +1579,6 @@ void Bars3DRenderer::updateAxisRange(Q3DAbstractAxis::AxisOrientation orientatio loadBackgroundMesh(); emit needRender(); } - - // TODO Currently bargraph only supports zero centered or zero minimum ranges - if (min > 0.0 || (min != 0.0 && (qFabs(min) != qFabs(max)))) { - qWarning() << __FUNCTION__ << "Bar graph currently properly supports only " - "zero-centered and zero minimum ranges for Y-axis."; - } } } @@ -1652,7 +1678,7 @@ void Bars3DRenderer::loadGridLineMesh() { if (m_gridLineObj) delete m_gridLineObj; - m_gridLineObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_gridLineObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_gridLineObj->load(); } @@ -1660,7 +1686,7 @@ void Bars3DRenderer::loadLabelMesh() { if (m_labelObj) delete m_labelObj; - m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_labelObj->load(); } @@ -1680,22 +1706,18 @@ void Bars3DRenderer::calculateSceneScalingFactors() (m_cachedRowCount * (m_maxDimension / m_maxSceneSize))); m_scaleX = m_cachedBarThickness.width() / m_scaleFactor; m_scaleZ = m_cachedBarThickness.height() / m_scaleFactor; - //qDebug() << "m_scaleX" << m_scaleX << "m_scaleFactor" << m_scaleFactor; - //qDebug() << "m_scaleZ" << m_scaleZ << "m_scaleFactor" << m_scaleFactor; - //qDebug() << "m_rowWidth:" << m_rowWidth << "m_columnDepth:" << m_columnDepth << "m_maxDimension:" << m_maxDimension; } void Bars3DRenderer::calculateHeightAdjustment() { - m_heightNormalizer = (GLfloat)qMax(qFabs(m_axisCacheY.min()), qFabs(m_axisCacheY.max())); + m_heightNormalizer = GLfloat(qFabs(m_axisCacheY.min()) + qFabs(m_axisCacheY.max())); + GLfloat maxAbs = qFabs(m_axisCacheY.max()); - // 2.0f = max difference between minimum and maximum value after scaling with m_heightNormalizer - GLfloat newAdjustment = 2.0f - ((m_heightNormalizer - m_axisCacheY.min()) / m_heightNormalizer); + GLfloat newAdjustment = maxAbs / m_heightNormalizer; if (newAdjustment != m_yAdjustment) { m_hasHeightAdjustmentChanged = true; m_yAdjustment = newAdjustment; } - //qDebug() << m_yAdjustment; } Bars3DController::SelectionType Bars3DRenderer::isSelected(GLint row, GLint bar) diff --git a/src/datavisualization/engine/drawer.cpp b/src/datavisualization/engine/drawer.cpp index 61454bd8..39fd57cb 100644 --- a/src/datavisualization/engine/drawer.cpp +++ b/src/datavisualization/engine/drawer.cpp @@ -282,15 +282,11 @@ void Drawer::drawLabel(const AbstractRenderItem &item, const LabelItem &labelIte modelMatrix.translate(xPosition + xAlignment, yPosition + yAlignment, zPosition + zAlignment); // Rotate - // TODO: We should convert rotations to use quaternions to avoid rotation order problems - //QQuaternion rotQuatX = QQuaternion::fromAxisAndAngle(1.0f, 0.0f, 0.0f, rotation.x()); - //QQuaternion rotQuatY = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, rotation.y()); - //QQuaternion rotQuatZ = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, rotation.z()); - //QQuaternion rotQuaternion = rotQuatX + rotQuatY + rotQuatZ; - //modelMatrix.rotate(rotQuaternion); - modelMatrix.rotate(rotation.y(), 0.0f, 1.0f, 0.0f); - modelMatrix.rotate(rotation.z(), 0.0f, 0.0f, 1.0f); - modelMatrix.rotate(rotation.x(), 1.0f, 0.0f, 0.0f); + QQuaternion rotQuatX = QQuaternion::fromAxisAndAngle(1.0f, 0.0f, 0.0f, rotation.x()); + QQuaternion rotQuatY = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, rotation.y()); + QQuaternion rotQuatZ = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, rotation.z()); + QQuaternion rotQuaternion = rotQuatY * rotQuatZ * rotQuatX; + modelMatrix.rotate(rotQuaternion); if (useDepth && !rotateAlong) { qreal yComp = qreal(qRadiansToDegrees(qTan(positionComp.y() / cameraDistance))); diff --git a/src/datavisualization/engine/engine.qrc b/src/datavisualization/engine/engine.qrc index 7420ae51..de4a04da 100644 --- a/src/datavisualization/engine/engine.qrc +++ b/src/datavisualization/engine/engine.qrc @@ -8,14 +8,12 @@ meshes/cubeSmooth.obj meshes/cylinderFlat.obj meshes/cylinderSmooth.obj - meshes/backgroudFlat.obj - meshes/backgroudSmooth.obj - meshes/plane.obj + meshes/background.obj + meshes/plane.obj meshes/sphere.obj meshes/sphereSmooth.obj meshes/barFlat.obj meshes/barSmooth.obj - meshes/backgroudNegatives.obj meshes/coneFilledFlat.obj meshes/coneFilledSmooth.obj meshes/cylinderFilledFlat.obj @@ -28,6 +26,7 @@ meshes/cubeFilledSmooth.obj meshes/scatterdot.obj meshes/scatterdotFlat.obj + meshes/backgroundNegatives.obj shaders/default.frag diff --git a/src/datavisualization/engine/meshes/backgroudFlat.obj b/src/datavisualization/engine/meshes/backgroudFlat.obj deleted file mode 100644 index 5eeb1f26..00000000 --- a/src/datavisualization/engine/meshes/backgroudFlat.obj +++ /dev/null @@ -1,32 +0,0 @@ -# Blender v2.66 (sub 0) OBJ File: 'backgroud.blend' -# www.blender.org -o Cube -v 1.000000 -1.000000 -1.000000 -v 1.000000 -1.000000 1.000000 -v -1.000000 -1.000000 1.000000 -v -1.000000 -1.000000 -1.000000 -v 1.000000 1.000000 1.000000 -v -1.000000 1.000000 1.000000 -v -1.000000 1.000000 -1.000000 -vt 0.000000 0.500000 -vt 0.000000 1.000000 -vt 0.500000 1.000000 -vt 0.500000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.000000 -vt 0.500000 0.500000 -vt 0.500000 0.000000 -vt 0.000000 0.000000 -vt 0.500000 0.500000 -vt 0.500000 0.000000 -vt 0.000000 0.500000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -s off -f 1/1/1 4/2/1 3/3/1 -f 2/4/2 3/5/2 6/6/2 -f 3/7/3 4/8/3 7/9/3 -f 2/10/1 1/1/1 3/3/1 -f 5/11/2 2/4/2 6/6/2 -f 6/12/3 3/7/3 7/9/3 diff --git a/src/datavisualization/engine/meshes/backgroudNegatives.obj b/src/datavisualization/engine/meshes/backgroudNegatives.obj deleted file mode 100644 index 4153bfd4..00000000 --- a/src/datavisualization/engine/meshes/backgroudNegatives.obj +++ /dev/null @@ -1,33 +0,0 @@ -# Blender v2.66 (sub 0) OBJ File: 'backgroudNegatives.blend' -# www.blender.org -o Cube -v 1.000000 -1.000000 -1.000000 -v 1.000000 -1.000000 1.000000 -v -1.000000 -1.000000 1.000000 -v -1.000000 -1.000000 -1.000000 -v 1.000000 1.000000 1.000000 -v -1.000000 1.000000 1.000000 -v -1.000000 1.000000 -1.000000 -v 1.000000 -3.000000 1.000000 -v -1.000000 -3.000000 1.000000 -v -1.000000 -3.000000 -1.000000 -vt 0.000100 0.666700 -vt 0.333300 0.666700 -vt 0.333300 0.999900 -vt 0.000100 0.000100 -vt 0.333300 0.000100 -vt 0.333300 0.666500 -vt 0.666500 0.000100 -vt 0.666500 0.666500 -vt 0.000100 0.999900 -vt 0.000100 0.666500 -vn -0.000000 1.000000 0.000000 -vn 0.000000 -0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -s off -f 1/1/1 4/2/1 3/3/1 -f 8/4/2 9/5/2 6/6/2 -f 9/5/3 10/7/3 7/8/3 -f 2/9/1 1/1/1 3/3/1 -f 5/10/2 8/4/2 6/6/2 -f 6/6/3 9/5/3 7/8/3 diff --git a/src/datavisualization/engine/meshes/backgroudSmooth.obj b/src/datavisualization/engine/meshes/backgroudSmooth.obj deleted file mode 100644 index 27d06aea..00000000 --- a/src/datavisualization/engine/meshes/backgroudSmooth.obj +++ /dev/null @@ -1,36 +0,0 @@ -# Blender v2.66 (sub 0) OBJ File: 'backgroud.blend' -# www.blender.org -o Cube -v 1.000000 -1.000000 -1.000000 -v 1.000000 -1.000000 1.000000 -v -1.000000 -1.000000 1.000000 -v -1.000000 -1.000000 -1.000000 -v 1.000000 1.000000 1.000000 -v -1.000000 1.000000 1.000000 -v -1.000000 1.000000 -1.000000 -vt 0.000000 0.501529 -vt 0.001529 1.000000 -vt 0.500000 0.998471 -vt 0.501529 0.500000 -vt 1.000000 0.498471 -vt 0.998471 0.000000 -vt 0.500000 0.498471 -vt 0.498471 0.000000 -vt 0.000000 0.001529 -vt 0.498471 0.500000 -vt 0.500000 0.001529 -vt 0.001529 0.500000 -vn 0.000000 1.000000 0.000000 -vn 0.707083 0.707083 0.000000 -vn 0.577349 0.577349 -0.577349 -vn 0.000000 0.707083 -0.707083 -vn 0.707083 0.000000 -0.707083 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -s 1 -f 1/1/1 4/2/2 3/3/3 -f 2/4/4 3/5/3 6/6/5 -f 3/7/3 4/8/2 7/9/6 -f 2/10/4 1/1/1 3/3/3 -f 5/11/7 2/4/4 6/6/5 -f 6/12/5 3/7/3 7/9/6 diff --git a/src/datavisualization/engine/meshes/background.obj b/src/datavisualization/engine/meshes/background.obj new file mode 100644 index 00000000..5eeb1f26 --- /dev/null +++ b/src/datavisualization/engine/meshes/background.obj @@ -0,0 +1,32 @@ +# Blender v2.66 (sub 0) OBJ File: 'backgroud.blend' +# www.blender.org +o Cube +v 1.000000 -1.000000 -1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +v -1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +vt 0.000000 0.500000 +vt 0.000000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.000000 +vt 0.500000 0.500000 +vt 0.500000 0.000000 +vt 0.000000 0.000000 +vt 0.500000 0.500000 +vt 0.500000 0.000000 +vt 0.000000 0.500000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +s off +f 1/1/1 4/2/1 3/3/1 +f 2/4/2 3/5/2 6/6/2 +f 3/7/3 4/8/3 7/9/3 +f 2/10/1 1/1/1 3/3/1 +f 5/11/2 2/4/2 6/6/2 +f 6/12/3 3/7/3 7/9/3 diff --git a/src/datavisualization/engine/meshes/backgroundNegatives.obj b/src/datavisualization/engine/meshes/backgroundNegatives.obj new file mode 100644 index 00000000..76c7c1d8 --- /dev/null +++ b/src/datavisualization/engine/meshes/backgroundNegatives.obj @@ -0,0 +1,22 @@ +# Blender v2.66 (sub 0) OBJ File: 'backgroudNegativesWall.blend' +# www.blender.org +o Cube +v 0.999999 1.000000 1.000001 +v -1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v 1.000000 -3.000000 1.000000 +v -1.000000 -3.000000 1.000000 +v -1.000000 -3.000000 -1.000000 +vt 0.000100 0.000100 +vt 0.500000 0.000100 +vt 0.500000 0.999900 +vt 0.999900 0.000100 +vt 0.999900 0.999900 +vt 0.000100 0.999900 +vn 0.000000 -0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +s off +f 4/1/1 5/2/1 2/3/1 +f 5/2/2 6/4/2 3/5/2 +f 1/6/1 4/1/1 2/3/1 +f 2/3/2 5/2/2 3/5/2 diff --git a/src/datavisualization/engine/q3dwindow.cpp b/src/datavisualization/engine/q3dwindow.cpp index 2c0729ba..fd65b1be 100644 --- a/src/datavisualization/engine/q3dwindow.cpp +++ b/src/datavisualization/engine/q3dwindow.cpp @@ -67,7 +67,6 @@ Q3DWindow::Q3DWindow(QWindow *parent) d_ptr->m_context->create(); d_ptr->m_context->makeCurrent(this); - qDebug() << "initializeOpenGLFunctions()"; initializeOpenGLFunctions(); const GLubyte *version = glGetString(GL_VERSION); diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index 283020d0..75440cdc 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -1397,7 +1397,7 @@ void Scatter3DRenderer::loadGridLineMesh() { if (m_gridLineObj) delete m_gridLineObj; - m_gridLineObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_gridLineObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_gridLineObj->load(); } @@ -1405,7 +1405,7 @@ void Scatter3DRenderer::loadLabelMesh() { if (m_labelObj) delete m_labelObj; - m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_labelObj->load(); } diff --git a/src/datavisualization/engine/selectionpointer.cpp b/src/datavisualization/engine/selectionpointer.cpp index 19294ac8..0b415df2 100644 --- a/src/datavisualization/engine/selectionpointer.cpp +++ b/src/datavisualization/engine/selectionpointer.cpp @@ -258,7 +258,7 @@ void SelectionPointer::loadLabelMesh() { if (m_labelObj) delete m_labelObj; - m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_labelObj->load(); } diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 3bbade38..d79b5677 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -1813,7 +1813,7 @@ void Surface3DRenderer::loadGridLineMesh() { if (m_gridLineObj) delete m_gridLineObj; - m_gridLineObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_gridLineObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_gridLineObj->load(); } @@ -2003,7 +2003,7 @@ void Surface3DRenderer::loadLabelMesh() { if (m_labelObj) delete m_labelObj; - m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/label")); + m_labelObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/plane")); m_labelObj->load(); } -- cgit v1.2.3