Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-132107

3D surface graph bugs

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 6.8.0
    • Graphs: 3D
    • None
    • All
    • 715734e1f (dev), 97761510b (6.9), 4ad9c4b45 (6.8)

    Description

      • Same in datavis ItemModelSurfaceDataProxy "columnRolePattern" and "columnRoleReplace" (as well as their row equivalents) do not work.
        Minimal reproducible example:
        import QtQuick
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            Surface3DSeries {
              id: surfaceSeries
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                rowRole: "xPos"
                columnRole: "timestamp"
                columnRolePattern: /(?:\d{2}.){2}(\d{4})/ // Match date, capture only year
                columnRoleReplace: "\\1" // Present the captured year
                yPosRole: "yPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = 0; i <= 10; ++i) {
                for (let j = 2000; j <= 2015; ++j) {
                  dataModel.append({"xPos": i, "yPos": i + j, "timestamp": "10.10." + j})
                }
              }
            }
          }
        }
        
      • Fix: Clear picked status of models when clearing selection "clearSelection" method does not drop selection, it only nullifies the floating label contents, leaving empty border.
        Minimal reproducible example:
        import QtQuick
        import QtQuick.Controls
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            Surface3DSeries {
              id: surfaceSeries
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                columnRole: "xPos"
                yPosRole: "yPos"
                rowRole: "zPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = -10; i < 10; ++i) {
                for (let j = -10; j < 10; ++j) {
                  dataModel.append({"xPos": i, "yPos": i * j, "zPos": j})
                }
              }
            }
          }
        
          Button {
            anchors {
              top: surfaceGraph.top
              horizontalCenter: parent.horizontalCenter
            }
            text: "Clear selection"
            onClicked: {
              surfaceGraph.clearSelection()
            }
          }
        }
        
      • Fixed in Qt 6.8.1 Surface3DSeries "mesh" property does not influence the selection pointer shape.
        Minimal reproducible example:
        import QtQuick
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            Surface3DSeries {
              id: surfaceSeries
        
              mesh: Abstract3DSeries.Mesh.Pyramid
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                rowRole: "xPos"
                columnRole: "zPos"
                yPosRole: "yPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = 0; i <= 10; ++i) {
                for (let j = 20; j <= 30; ++j) {
                  dataModel.append({"xPos": i, "yPos": i + j, "zPos": j})
                }
              }
            }
          }
        }
        
      • "cameraTargetPosition" property does not work as described in the docs; values are not clamped, "x" coordinate 1.0 value does not translate to the edge of the X axis, "z" coordinate value does not translate to the edge of the Z axis but instead moves further from the graph as the value increases.
        Minimal reproducible example:
        import QtQuick
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            cameraTargetPosition: Qt.vector3d(1.0, 0, 5.0)
        
            Surface3DSeries {
              id: surfaceSeries
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                rowRole: "xPos"
                columnRole: "zPos"
                yPosRole: "yPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = 0; i <= 10; ++i) {
                for (let j = 20; j <= 30; ++j) {
                  dataModel.append({"xPos": i, "yPos": i + j, "zPos": j})
                }
              }
            }
          }
        }
        
      • This is a documented known issue (and there is a separate ticket for it) ** 3D surface graph does not seem to cast any shadow on the background despite "shadowStrength" property set to a significant value.
        Minimal reproducible example:
        import QtQuick
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            shadowStrength: 100
        
            Surface3DSeries {
              id: surfaceSeries
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                rowRole: "xPos"
                columnRole: "zPos"
                yPosRole: "yPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = 0; i <= 10; ++i) {
                for (let j = 20; j <= 30; ++j) {
                  dataModel.append({"xPos": i, "yPos": i * j, "zPos": j})
                }
              }
            }
          }
        }
        
      • Using LogValue3DAxisFormatter for Y axis crashes the application.
        Minimal reproducible example:
        import QtQuick
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            axisY: Value3DAxis {
              formatter: LogValue3DAxisFormatter {}
            }
        
            Surface3DSeries {
              id: surfaceSeries
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                rowRole: "xPos"
                columnRole: "zPos"
                yPosRole: "yPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = 0; i <= 10; ++i) {
                for (let j = 20; j <= 30; ++j) {
                  dataModel.append({"xPos": i, "yPos": i * j, "zPos": j})
                }
              }
            }
          }
        }
        
      • Fixed in Qt 6.8.2 "labelAutoAngle" continuous label angle adjustment when rotating graph does not work - it changes the angle, however, when either the graph is rotated so that the graph background shifts.
        Minimal reproducible example:
        import QtQuick
        import QtGraphs
        
        Window {
          id: root
          width: 1280
          height: 960
          visible: true
          title: qsTr("Graphs 3D - Surface Graph")
        
          Surface3D {
            id: surfaceGraph
            anchors.fill: parent
        
            axisX: Value3DAxis {
              labelAutoAngle: 90
            }
        
            axisY: Value3DAxis {
              labelAutoAngle: 90
            }
        
            axisZ: Value3DAxis {
              labelAutoAngle: 90
            }
        
            Surface3DSeries {
              id: surfaceSeries
        
              ItemModelSurfaceDataProxy {
                itemModel: dataModel
                rowRole: "xPos"
                columnRole: "zPos"
                yPosRole: "yPos"
              }
            }
          }
        
          ListModel {
            id: dataModel
            Component.onCompleted: {
              for (let i = 0; i <= 10; ++i) {
                for (let j = 20; j <= 30; ++j) {
                  dataModel.append({"xPos": i, "yPos": i * j, "zPos": j})
                }
              }
            }
          }
        }
        

      Attachments

        For Gerrit Dashboard: QTBUG-132107
        # Subject Branch Project Status CR V

        Activity

          People

            oulu_hillbilly Sami Varanka
            bartoszrudzki Bartosz Rudzki
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes