summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-10-30 11:24:24 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-10-30 11:41:47 +0200
commit1eefb471180746dda5882344deecd750305fea21 (patch)
tree29eb520aa36fdcb38930bb7bdc037f2481e5dda1 /src/datavisualization
parent897922a711bacea0aceef657e5f62821784eccd8 (diff)
Support for non-zero centered data in bars
Task-number: QTRD-2198 Change-Id: Ief48895d93ac9a8ab70743f3da0fdaf7ccd6ea27 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp13
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp136
-rw-r--r--src/datavisualization/engine/drawer.cpp14
-rw-r--r--src/datavisualization/engine/engine.qrc7
-rw-r--r--src/datavisualization/engine/meshes/backgroudNegatives.obj33
-rw-r--r--src/datavisualization/engine/meshes/backgroudSmooth.obj36
-rw-r--r--src/datavisualization/engine/meshes/background.obj (renamed from src/datavisualization/engine/meshes/backgroudFlat.obj)0
-rw-r--r--src/datavisualization/engine/meshes/backgroundNegatives.obj22
-rw-r--r--src/datavisualization/engine/q3dwindow.cpp1
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp4
-rw-r--r--src/datavisualization/engine/selectionpointer.cpp2
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp4
12 files changed, 120 insertions, 152 deletions
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<Q3DValueAxis *>(m_axisY);
if (valueAxis && categoryAxisX && categoryAxisZ && valueAxis->isAutoAdjustRange() && proxy) {
QPair<GLfloat, GLfloat> 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 @@
<file alias="barSmooth">meshes/cubeSmooth.obj</file>
<file alias="cylinder">meshes/cylinderFlat.obj</file>
<file alias="cylinderSmooth">meshes/cylinderSmooth.obj</file>
- <file alias="background">meshes/backgroudFlat.obj</file>
- <file alias="backgroundSmooth">meshes/backgroudSmooth.obj</file>
- <file alias="label">meshes/plane.obj</file>
+ <file alias="background">meshes/background.obj</file>
+ <file alias="plane">meshes/plane.obj</file>
<file alias="sphere">meshes/sphere.obj</file>
<file alias="sphereSmooth">meshes/sphereSmooth.obj</file>
<file alias="bevelbar">meshes/barFlat.obj</file>
<file alias="bevelbarSmooth">meshes/barSmooth.obj</file>
- <file alias="negativeBackground">meshes/backgroudNegatives.obj</file>
<file alias="coneFull">meshes/coneFilledFlat.obj</file>
<file alias="coneSmoothFull">meshes/coneFilledSmooth.obj</file>
<file alias="cylinderFull">meshes/cylinderFilledFlat.obj</file>
@@ -28,6 +26,7 @@
<file alias="barSmoothFull">meshes/cubeFilledSmooth.obj</file>
<file alias="dotSmooth">meshes/scatterdot.obj</file>
<file alias="dot">meshes/scatterdotFlat.obj</file>
+ <file alias="negativeBackground">meshes/backgroundNegatives.obj</file>
</qresource>
<qresource prefix="/shaders">
<file alias="fragment">shaders/default.frag</file>
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/backgroudFlat.obj b/src/datavisualization/engine/meshes/background.obj
index 5eeb1f26..5eeb1f26 100644
--- a/src/datavisualization/engine/meshes/backgroudFlat.obj
+++ b/src/datavisualization/engine/meshes/background.obj
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();
}