From c7120bde92d1ad3402fb8a093187e6b752da244f Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Wed, 20 Nov 2019 18:01:34 +0200 Subject: [PATCH] QmlDesigner: Implement axis helper on 3D edit view Axis helper shows up on top right corner of 3D edit view. Clicking on axis helper arms zooms camera on that side of the selected object. Change-Id: Ibd81a933036f7965f825e3dc97ad7156da62e14c Fixes: QDS-1205 Reviewed-by: Thomas Hartmann --- .../qmlpuppet/mockfiles/AutoScaleHelper.qml | 1 + .../qml/qmlpuppet/mockfiles/AxisHelper.qml | 133 ++++++++++++++++++ .../qml/qmlpuppet/mockfiles/AxisHelperArm.qml | 70 +++++++++ .../mockfiles/EditCameraController.qml | 10 ++ .../qml/qmlpuppet/mockfiles/EditView3D.qml | 17 ++- .../qml/qmlpuppet/mockfiles/IconGizmo.qml | 2 - .../qml/qmlpuppet/mockfiles/Overlay2D.qml | 7 +- .../mockfiles/meshes/axishelper.mesh | Bin 0 -> 158516 bytes .../qml2puppet/editor3d/generalhelper.cpp | 59 ++++++++ .../qml2puppet/editor3d/generalhelper.h | 4 + share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc | 3 + 11 files changed, 297 insertions(+), 9 deletions(-) create mode 100644 share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml create mode 100644 share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelperArm.qml create mode 100644 share/qtcreator/qml/qmlpuppet/mockfiles/meshes/axishelper.mesh diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/AutoScaleHelper.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/AutoScaleHelper.qml index cec64b32b57..dc4c38d1009 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/AutoScaleHelper.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/AutoScaleHelper.qml @@ -81,6 +81,7 @@ Node { MouseArea3D { id: helper + active: false view3D: overlayNode.view3D } } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml new file mode 100644 index 00000000000..86c60db7213 --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick3D 1.0 + +View3D { + id: axisHelperView + + property var editCameraCtrl + property Node selectedNode + + camera: axisHelperCamera + + Node { + OrthographicCamera { + id: axisHelperCamera + rotation: editCameraCtrl.camera.rotation + position: editCameraCtrl.camera.position.minus(editCameraCtrl._lookAtPoint) + .normalized().times(600) + } + + AutoScaleHelper { + id: autoScale + view3D: axisHelperView + position: axisHelperGizmo.scenePosition + } + + Node { + id: axisHelperGizmo + scale: autoScale.getScale(Qt.vector3d(4, 4, 4)) + + AxisHelperArm { + id: armX + rotation: Qt.vector3d(0, 0, -90) + color: Qt.rgba(1, 0, 0, 1) + hoverColor: Qt.lighter(Qt.rgba(1, 0, 0, 1)) + view3D: axisHelperView + camRotPos: Qt.vector3d(0, 90, 0) + camRotNeg: Qt.vector3d(0, -90, 0) + } + + AxisHelperArm { + id: armY + rotation: Qt.vector3d(0, 0, 0) + color: Qt.rgba(0, 0.6, 0, 1) + hoverColor: Qt.lighter(Qt.rgba(0, 0.6, 0, 1)) + view3D: axisHelperView + camRotPos: Qt.vector3d(-90, 0, 0) + camRotNeg: Qt.vector3d(90, 0, 0) + } + + AxisHelperArm { + id: armZ + rotation: Qt.vector3d(90, 0, 0) + color: Qt.rgba(0, 0, 1, 1) + hoverColor: Qt.lighter(Qt.rgba(0, 0, 1, 1)) + view3D: axisHelperView + camRotPos: Qt.vector3d(0, 0, 0) + camRotNeg: Qt.vector3d(0, 180, 0) + } + } + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + acceptedButtons: Qt.LeftButton + + property var pickObj: null + + function cancelHover() + { + if (pickObj) { + pickObj.hovering = false; + pickObj = null; + } + } + + function pick(mouse) + { + var result = axisHelperView.pick(mouse.x, mouse.y); + if (result.objectHit) { + if (result.objectHit !== pickObj) { + cancelHover(); + pickObj = result.objectHit; + pickObj.hovering = true; + } + } else { + cancelHover(); + } + } + + onPositionChanged: { + pick(mouse); + } + + onPressed: { + pick(mouse); + if (pickObj) { + axisHelperView.editCameraCtrl.fitObject(axisHelperView.selectedNode, + pickObj.cameraRotation); + } else { + mouse.accepted = false; + } + } + + onExited: cancelHover() + onCanceled: cancelHover() + } +} diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelperArm.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelperArm.qml new file mode 100644 index 00000000000..23d2f9bbaf3 --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelperArm.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick3D 1.0 + +Node { + id: armRoot + property alias posModel: posModel + property alias negModel: negModel + property View3D view3D + property color hoverColor + property color color + property vector3d camRotPos + property vector3d camRotNeg + + Model { + id: posModel + + property bool hovering: false + property vector3d cameraRotation: armRoot.camRotPos + + source: "meshes/axishelper.mesh" + materials: DefaultMaterial { + id: posMat + emissiveColor: posModel.hovering ? armRoot.hoverColor : armRoot.color + lighting: DefaultMaterial.NoLighting + } + pickable: true + } + + Model { + id: negModel + + property bool hovering: false + property vector3d cameraRotation: armRoot.camRotNeg + + source: "#Sphere" + y: -6 + scale: Qt.vector3d(0.025, 0.025, 0.025) + materials: DefaultMaterial { + id: negMat + emissiveColor: negModel.hovering ? armRoot.hoverColor : armRoot.color + lighting: DefaultMaterial.NoLighting + } + pickable: true + } +} diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml index 90f82bd341e..dba7e30f96c 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml @@ -30,6 +30,7 @@ Item { id: cameraCtrl property Camera camera: null + property View3D view3d: null property vector3d _lookAtPoint property vector3d _pressPoint @@ -44,6 +45,15 @@ Item { property real _defaultCameraLookAtDistance: 0 property Camera _prevCamera: null + function fitObject(targetObject, rotation) + { + camera.rotation = rotation; + var newLookAtAndZoom = _generalHelper.fitObjectToCamera( + camera, _defaultCameraLookAtDistance, targetObject, view3d); + _lookAtPoint = newLookAtAndZoom.toVector3d(); + _zoomFactor = newLookAtAndZoom.w; + } + function zoomRelative(distance) { _zoomFactor = _generalHelper.zoomCamera(camera, distance, _defaultCameraLookAtDistance, diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml index 3ce3c5deabe..19443113ee3 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml @@ -248,8 +248,7 @@ Window { id: gizmoLabel targetNode: moveGizmo.visible ? moveGizmo : scaleGizmo targetView: overlayView - offsetX: 0 - offsetY: 45 + offset: Qt.vector3d(0, 45, 0) visible: targetNode.dragging Rectangle { @@ -285,6 +284,7 @@ Window { id: cameraControl camera: editView.camera anchors.fill: parent + view3d: editView } } @@ -357,9 +357,18 @@ Window { } } - Column { - y: 8 + AxisHelper { anchors.right: parent.right + anchors.top: parent.top + width: 100 + height: width + editCameraCtrl: cameraControl + selectedNode : viewWindow.selectedNode + } + + Column { + anchors.left: parent.left + anchors.bottom: parent.bottom CheckBox { id: editLightCheckbox checked: false diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml index ebc52a126aa..3d4183a9dc5 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/IconGizmo.qml @@ -49,8 +49,6 @@ Node { id: iconOverlay targetNode: iconGizmo targetView: view3D - offsetX: 0 - offsetY: 0 visible: iconGizmo.visible && !isBehindCamera parent: view3D diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/Overlay2D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/Overlay2D.qml index ce8c85bffb4..f4a85226b78 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/Overlay2D.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/Overlay2D.qml @@ -31,8 +31,7 @@ Item { property Node targetNode property View3D targetView - property real offsetX: 0 - property real offsetY: 0 + property vector3d offset: Qt.vector3d(0, 0, 0) property bool isBehindCamera @@ -56,7 +55,9 @@ Item { function updateOverlay() { var scenePos = targetNode ? targetNode.scenePosition : Qt.vector3d(0, 0, 0); - var scenePosWithOffset = Qt.vector3d(scenePos.x + offsetX, scenePos.y + offsetY, scenePos.z); + var scenePosWithOffset = Qt.vector3d(scenePos.x + offset.x, + scenePos.y + offset.y, + scenePos.z + offset.z); var viewPos = targetView ? targetView.mapFrom3DScene(scenePosWithOffset) : Qt.vector3d(0, 0, 0); root.x = viewPos.x; diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/meshes/axishelper.mesh b/share/qtcreator/qml/qmlpuppet/mockfiles/meshes/axishelper.mesh new file mode 100644 index 0000000000000000000000000000000000000000..3e9e4958e4b694eb6bbd34185ff7a5e703866572 GIT binary patch literal 158516 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

Q&Ic9{)-CAfm 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 #include +#include +#include +#include +#include +#include +#include +#include #include +#include #include namespace QmlDesigner { @@ -126,6 +134,57 @@ float GeneralHelper::zoomCamera(QQuick3DCamera *camera, float distance, float de return newZoomFactor; } +// Return value contains new lookAt point (xyz) and zoom factor (w) +QVector4D GeneralHelper::fitObjectToCamera(QQuick3DCamera *camera, float defaultLookAtDistance, + QQuick3DNode *targetObject, QQuick3DViewport *viewPort) +{ + if (!camera) + return QVector4D(0.f, 0.f, 0.f, 1.f); + + QVector3D lookAt = targetObject ? targetObject->scenePosition() : QVector3D(); + + // Get object bounds + qreal maxExtent = 200.; + if (auto modelNode = qobject_cast(targetObject)) { + auto targetPriv = QQuick3DObjectPrivate::get(targetObject); + if (auto renderModel = static_cast(targetPriv->spatialNode)) { + QWindow *window = static_cast(viewPort->window()); + if (window) { + auto context = QSSGRenderContextInterface::getRenderContextInterface(quintptr(window)); + if (!context.isNull()) { + auto bufferManager = context->bufferManager(); + QSSGBounds3 bounds = renderModel->getModelBounds(bufferManager); + QVector3D center = bounds.center(); + const QVector3D e = bounds.extents(); + const QVector3D s = targetObject->sceneScale(); + qreal maxScale = qSqrt(qreal(s.x() * s.x() + s.y() * s.y() + s.z() * s.z())); + maxExtent = qSqrt(qreal(e.x() * e.x() + e.y() * e.y() + e.z() * e.z())); + maxExtent *= maxScale; + + // Adjust lookAt to look directly at the center of the object bounds + QMatrix4x4 m = targetObject->sceneTransform(); + lookAt = m.map(center); + } + } + } + } + + // Reset camera position to default zoom + QMatrix4x4 m = camera->sceneTransform(); + const float *dataPtr(m.data()); + QVector3D newLookVector(-dataPtr[8], -dataPtr[9], -dataPtr[10]); + newLookVector.normalize(); + newLookVector *= defaultLookAtDistance; + + camera->setPosition(lookAt + newLookVector); + + // Emprically determined algorithm for nice zoom + float newZoomFactor = qBound(.0001f, float(maxExtent / 700.), 10000.f); + + return QVector4D(lookAt, + zoomCamera(camera, 0, defaultLookAtDistance, lookAt, newZoomFactor, false)); +} + } } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h index fbf1658924a..f667a974423 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h @@ -28,6 +28,8 @@ #ifdef QUICK3D_MODULE #include +#include +#include #include #include @@ -53,6 +55,8 @@ public: Q_INVOKABLE float zoomCamera(QQuick3DCamera *camera, float distance, float defaultLookAtDistance, const QVector3D &lookAt, float zoomFactor, bool relative); + Q_INVOKABLE QVector4D fitObjectToCamera(QQuick3DCamera *camera, float defaultLookAtDistance, + QQuick3DNode *targetObject, QQuick3DViewport *viewPort); signals: void overlayUpdateNeeded(); diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc b/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc index f27f93e0d45..c82164c1ff9 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet.qrc @@ -27,10 +27,13 @@ mockfiles/RotateGizmo.qml mockfiles/RotateRing.qml mockfiles/SelectionBox.qml + mockfiles/AxisHelper.qml + mockfiles/AxisHelperArm.qml mockfiles/meshes/arrow.mesh mockfiles/meshes/scalerod.mesh mockfiles/meshes/ring.mesh mockfiles/meshes/ringselect.mesh + mockfiles/meshes/axishelper.mesh mockfiles/images/editor_camera.png mockfiles/images/editor_camera@2x.png mockfiles/images/light-pick-icon.png