diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/qt3d/modeltweak/qml/ModelTweak.qml | 9 | ||||
-rw-r--r-- | util/qt3d/modeltweak/qml/ModelViewport.qml | 306 | ||||
-rw-r--r-- | util/qt3d/modeltweak/qml/Widgets/ZoomControls.qml | 41 | ||||
-rw-r--r-- | util/qt3d/modeltweak/qml/Widgets/images/zoomin.png | bin | 0 -> 187 bytes | |||
-rw-r--r-- | util/qt3d/modeltweak/qml/Widgets/images/zoomout.png | bin | 0 -> 155 bytes |
5 files changed, 355 insertions, 1 deletions
diff --git a/util/qt3d/modeltweak/qml/ModelTweak.qml b/util/qt3d/modeltweak/qml/ModelTweak.qml index f3b1bc6c..0741a794 100644 --- a/util/qt3d/modeltweak/qml/ModelTweak.qml +++ b/util/qt3d/modeltweak/qml/ModelTweak.qml @@ -74,6 +74,9 @@ Rectangle { stateName: "ZYMaximised" viewportName: "Z,Y axis (right)" + rightVector: Qt.vector3d(0, 0, -1) + upVector: Qt.vector3d(0, 1, 0) + property alias position: transformTranslate.translate; onMouseTranslateX: if (!modelPropertiesPane.translateLocked) position = Qt.vector3d(position.x, position.y, translate.z + (down.x - mouse.x)/translateSensitivity) @@ -98,6 +101,9 @@ Rectangle { stateName: "XYMaximised" viewportName: "X,Y axis (front)" + rightVector: Qt.vector3d(1, 0, 0) + upVector: Qt.vector3d(0, 1, 0) + property alias position: transformTranslate.translate; onMouseTranslateX: if (!modelPropertiesPane.translateLocked)position = Qt.vector3d(translate.x - (down.x - mouse.x)/translateSensitivity, position.y, position.z) @@ -123,6 +129,9 @@ Rectangle { stateName: "XZMaximised" viewportName: "X,Z axis (top)" + rightVector: Qt.vector3d(1, 0, 0) + upVector: Qt.vector3d(0, 0, -1) + property alias position: transformTranslate.translate; onMouseTranslateX: if (!modelPropertiesPane.translateLocked)position = Qt.vector3d(translate.x - (down.x - mouse.x)/translateSensitivity, position.y, position.z) diff --git a/util/qt3d/modeltweak/qml/ModelViewport.qml b/util/qt3d/modeltweak/qml/ModelViewport.qml index 875c1162..c3b7712e 100644 --- a/util/qt3d/modeltweak/qml/ModelViewport.qml +++ b/util/qt3d/modeltweak/qml/ModelViewport.qml @@ -1,5 +1,6 @@ import QtQuick 1.0 import Qt3D 1.0 +import Qt3D.Shapes 1.0 import ModelTweak 1.0 import "Widgets" @@ -34,7 +35,10 @@ Rectangle { property double scaleSensitivity: 32; // the name of this viewport's state - property string stateName + property string stateName; + + property variant upVector: Qt.vector3d(0, 1, 0) + property variant rightVector: Qt.vector3d(0, 1, 0) // the smoothness values for the state change transformations // TODO: this should be alterable via the gui and saved in a settings file @@ -50,6 +54,8 @@ Rectangle { signal mouseScaleX(variant mouse) signal mouseScaleY(variant mouse) + property real cameraZoom: 1.0 + Viewport { id: viewport anchors.fill: parent @@ -59,6 +65,8 @@ Rectangle { // TODO: camera's position/rotation-around-origin/farplane should be alterable via gui camera: Camera { farPlane: 2000 // debugging + projectionType: Camera.Orthographic + viewSize: Qt.size(2*cameraZoom, 2*cameraZoom) } navigation: false @@ -73,6 +81,166 @@ Rectangle { transformTranslate, ] } + + Effect { + id: coordLinesThickEffect + color: "white" + } + Effect { + id: coordLinesThinEffect + color: "black" + } + + // horizontal lines + Line { + id: lineAxisRight + width: 3.0 + vertices: [ + cameraZoom*(-10*rightVector.x), cameraZoom*(-10*rightVector.y), cameraZoom*(-10*rightVector.z), + cameraZoom*(10*rightVector.x), cameraZoom*(10*rightVector.y), cameraZoom*(10*rightVector.z), + cameraZoom*(10*rightVector.x + 0.001*upVector.x), cameraZoom*(10*rightVector.y + 0.001*upVector.y), cameraZoom*(10*rightVector.z + 0.001*upVector.z) + ] + effect: coordLinesThickEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*rightVector.x + 0.25*upVector.x), cameraZoom*(-10*rightVector.y + 0.25*upVector.y), cameraZoom*(-10*rightVector.z + 0.25*upVector.z), + cameraZoom*(10*rightVector.x + 0.25*upVector.x), cameraZoom*(10*rightVector.y + 0.25*upVector.y), cameraZoom*(10*rightVector.z + 0.25*upVector.z), + cameraZoom*(10*rightVector.x + 0.251*upVector.x), cameraZoom*(10*rightVector.y + 0.251*upVector.y), cameraZoom*(10*rightVector.z + 0.251*upVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*rightVector.x + 0.5*upVector.x), cameraZoom*(-10*rightVector.y + 0.5*upVector.y), cameraZoom*(-10*rightVector.z + 0.5*upVector.z), + cameraZoom*(10*rightVector.x + 0.5*upVector.x), cameraZoom*(10*rightVector.y + 0.5*upVector.y), cameraZoom*(10*rightVector.z + 0.5*upVector.z), + cameraZoom*(10*rightVector.x + 0.501*upVector.x), cameraZoom*(10*rightVector.y + 0.501*upVector.y), cameraZoom*(10*rightVector.z + 0.501*upVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*rightVector.x + 0.75*upVector.x), cameraZoom*(-10*rightVector.y + 0.75*upVector.y), cameraZoom*(-10*rightVector.z + 0.75*upVector.z), + cameraZoom*(10*rightVector.x + 0.75*upVector.x), cameraZoom*(10*rightVector.y + 0.75*upVector.y), cameraZoom*(10*rightVector.z + 0.75*upVector.z), + cameraZoom*(10*rightVector.x + 0.751*upVector.x), cameraZoom*(10*rightVector.y + 0.751*upVector.y), cameraZoom*(10*rightVector.z + 0.751*upVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*rightVector.x - 0.25*upVector.x), cameraZoom*(-10*rightVector.y - 0.25*upVector.y), cameraZoom*(-10*rightVector.z - 0.25*upVector.z), + cameraZoom*(10*rightVector.x - 0.25*upVector.x), cameraZoom*(10*rightVector.y - 0.25*upVector.y), cameraZoom*(10*rightVector.z - 0.25*upVector.z), + cameraZoom*(10*rightVector.x - 0.251*upVector.x), cameraZoom*(10*rightVector.y - 0.251*upVector.y), cameraZoom*(10*rightVector.z - 0.251*upVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*rightVector.x - 0.5*upVector.x), cameraZoom*(-10*rightVector.y - 0.5*upVector.y), cameraZoom*(-10*rightVector.z - 0.5*upVector.z), + cameraZoom*(10*rightVector.x - 0.5*upVector.x), cameraZoom*(10*rightVector.y - 0.5*upVector.y), cameraZoom*(10*rightVector.z - 0.5*upVector.z), + cameraZoom*(10*rightVector.x - 0.501*upVector.x), cameraZoom*(10*rightVector.y - 0.501*upVector.y), cameraZoom*(10*rightVector.z - 0.501*upVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*rightVector.x - 0.75*upVector.x), cameraZoom*(-10*rightVector.y - 0.75*upVector.y), cameraZoom*(-10*rightVector.z - 0.75*upVector.z), + cameraZoom*(10*rightVector.x - 0.75*upVector.x), cameraZoom*(10*rightVector.y - 0.75*upVector.y), cameraZoom*(10*rightVector.z - 0.75*upVector.z), + cameraZoom*(10*rightVector.x - 0.751*upVector.x), cameraZoom*(10*rightVector.y - 0.751*upVector.y), cameraZoom*(10*rightVector.z - 0.751*upVector.z) + ] + effect: coordLinesThinEffect + } + + // vertical lines + Line { + id: lineAxisUp + width: 3.0 + vertices: [ + cameraZoom*(-10*upVector.x), cameraZoom*(-10*upVector.y), cameraZoom*(-10*upVector.z), + cameraZoom*(10*upVector.x), cameraZoom*(10*upVector.y), cameraZoom*(10*upVector.z), + cameraZoom*(10*upVector.x + 0.01*rightVector.x), cameraZoom*(10*upVector.y + 0.01*rightVector.y), cameraZoom*(10*upVector.z + 0.01*rightVector.z) + ] + effect: coordLinesThickEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x + 0.25*rightVector.x), cameraZoom*(-10*upVector.y + 0.25*rightVector.y), cameraZoom*(-10*upVector.z + 0.25*rightVector.z), + cameraZoom*(10*upVector.x + 0.25*rightVector.x), cameraZoom*(10*upVector.y + 0.25*rightVector.y), cameraZoom*(10*upVector.z + 0.25*rightVector.z), + cameraZoom*(10*upVector.x + 0.251*rightVector.x), cameraZoom*(10*upVector.y + 0.251*rightVector.y), cameraZoom*(10*upVector.z + 0.251*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x + 0.5*rightVector.x), cameraZoom*(-10*upVector.y + 0.5*rightVector.y), cameraZoom*(-10*upVector.z + 0.5*rightVector.z), + cameraZoom*(10*upVector.x + 0.5*rightVector.x), cameraZoom*(10*upVector.y + 0.5*rightVector.y), cameraZoom*(10*upVector.z + 0.5*rightVector.z), + cameraZoom*(10*upVector.x + 0.501*rightVector.x), cameraZoom*(10*upVector.y + 0.501*rightVector.y), cameraZoom*(10*upVector.z + 0.501*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x + 0.75*rightVector.x), cameraZoom*(-10*upVector.y + 0.75*rightVector.y), cameraZoom*(-10*upVector.z + 0.75*rightVector.z), + cameraZoom*(10*upVector.x + 0.75*rightVector.x), cameraZoom*(10*upVector.y + 0.75*rightVector.y), cameraZoom*(10*upVector.z + 0.75*rightVector.z), + cameraZoom*(10*upVector.x + 0.751*rightVector.x), cameraZoom*(10*upVector.y + 0.751*rightVector.y), cameraZoom*(10*upVector.z + 0.751*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x + 1.00*rightVector.x), cameraZoom*(-10*upVector.y + 1.00*rightVector.y), cameraZoom*(-10*upVector.z + 1.00*rightVector.z), + cameraZoom*(10*upVector.x + 1.00*rightVector.x), cameraZoom*(10*upVector.y + 1.00*rightVector.y), cameraZoom*(10*upVector.z + 1.00*rightVector.z), + cameraZoom*(10*upVector.x + 1.001*rightVector.x), cameraZoom*(10*upVector.y + 1.001*rightVector.y), cameraZoom*(10*upVector.z + 1.001*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x - 0.25*rightVector.x), cameraZoom*(-10*upVector.y - 0.25*rightVector.y), cameraZoom*(-10*upVector.z - 0.25*rightVector.z), + cameraZoom*(10*upVector.x - 0.25*rightVector.x), cameraZoom*(10*upVector.y - 0.25*rightVector.y), cameraZoom*(10*upVector.z - 0.25*rightVector.z), + cameraZoom*(10*upVector.x - 0.251*rightVector.x), cameraZoom*(10*upVector.y - 0.251*rightVector.y), cameraZoom*(10*upVector.z - 0.251*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x - 0.5*rightVector.x), cameraZoom*(-10*upVector.y - 0.5*rightVector.y), cameraZoom*(-10*upVector.z - 0.5*rightVector.z), + cameraZoom*(10*upVector.x - 0.5*rightVector.x), cameraZoom*(10*upVector.y - 0.5*rightVector.y), cameraZoom*(10*upVector.z - 0.5*rightVector.z), + cameraZoom*(10*upVector.x - 0.501*rightVector.x), cameraZoom*(10*upVector.y - 0.501*rightVector.y), cameraZoom*(10*upVector.z - 0.501*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x - 0.75*rightVector.x), cameraZoom*(-10*upVector.y - 0.75*rightVector.y), cameraZoom*(-10*upVector.z - 0.75*rightVector.z), + cameraZoom*(10*upVector.x - 0.75*rightVector.x), cameraZoom*(10*upVector.y - 0.75*rightVector.y), cameraZoom*(10*upVector.z - 0.75*rightVector.z), + cameraZoom*(10*upVector.x - 0.751*rightVector.x), cameraZoom*(10*upVector.y - 0.751*rightVector.y), cameraZoom*(10*upVector.z - 0.751*rightVector.z) + ] + effect: coordLinesThinEffect + } + Line { + width: 1.0 + vertices: [ + cameraZoom*(-10*upVector.x - 1.00*rightVector.x), cameraZoom*(-10*upVector.y - 1.00*rightVector.y), cameraZoom*(-10*upVector.z - 1.00*rightVector.z), + cameraZoom*(10*upVector.x - 1.00*rightVector.x), cameraZoom*(10*upVector.y - 1.00*rightVector.y), cameraZoom*(10*upVector.z - 1.00*rightVector.z), + cameraZoom*(10*upVector.x - 1.001*rightVector.x), cameraZoom*(10*upVector.y - 1.001*rightVector.y), cameraZoom*(10*upVector.z - 1.001*rightVector.z) + ] + effect: coordLinesThinEffect + } + } MouseArea { @@ -122,6 +290,19 @@ Rectangle { } } + ZoomControls { + anchors { + top: view.top; topMargin: 24; + right: view.right; rightMargin: 2; + } + onZoomIn: { + cameraZoom = 0.5 * cameraZoom; + } + onZoomOut: { + cameraZoom = 2.0 * cameraZoom; + } + } + Text { id: viewportText anchors { @@ -131,4 +312,127 @@ Rectangle { color: "white" font.pixelSize: 16 } + + + Text { + id: h_minus100 + text: -1.0*cameraZoom + x: (view.width/10) - 6 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_minus075 + text: -0.75*cameraZoom + x: 2*(view.width/10) - 7 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_minus050 + text: -0.5*cameraZoom + x: 3*(view.width/10) - 8 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_minus025 + text: -0.25*cameraZoom + x: 4*(view.width/10) - 9 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_zero + text: "0.0" + x: (view.width/2) - 10 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_plus025 + text: 0.25*cameraZoom + x: 6*(view.width/10) - 11 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_plus050 + text: 0.5*cameraZoom + x: 7*(view.width/10) - 12 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_plus075 + text: 0.75*cameraZoom + x: 8*(view.width/10) - 13 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + Text { + id: h_plus100 + text: 1.0*cameraZoom + x: 9*(view.width/10) - 14 + y: (view.height/2) - 14 + color: "white" + font.pixelSize: 12 + } + + Text { + id: v_minus075 + text: -0.75*cameraZoom + x: (view.width/2) + y: (view.height/8) - 12 + color: "white" + font.pixelSize: 12 + } + Text { + id: v_minus050 + text: -0.5*cameraZoom + x: (view.width/2) + y: 2*(view.height/8) - 12 + color: "white" + font.pixelSize: 12 + } + Text { + id: v_minus025 + text: -0.25*cameraZoom + x: (view.width/2) + y: 3*(view.height/8) - 12 + color: "white" + font.pixelSize: 12 + } + Text { + id: v_plus025 + text: 0.25*cameraZoom + x: (view.width/2) + y: 5*(view.height/8) - 12 + color: "white" + font.pixelSize: 12 + } + Text { + id: v_plus050 + text: 0.5*cameraZoom + x: (view.width/2) + y: 6*(view.height/8) - 12 + color: "white" + font.pixelSize: 12 + } + Text { + id: v_plus075 + text: 0.75*cameraZoom + x: (view.width/2) + y: 7*(view.height/8) - 12 + color: "white" + font.pixelSize: 12 + } } diff --git a/util/qt3d/modeltweak/qml/Widgets/ZoomControls.qml b/util/qt3d/modeltweak/qml/Widgets/ZoomControls.qml new file mode 100644 index 00000000..accdb54b --- /dev/null +++ b/util/qt3d/modeltweak/qml/Widgets/ZoomControls.qml @@ -0,0 +1,41 @@ +import QtQuick 1.0 +import Qt3D 1.0 +import ModelTweak 1.0 + +Rectangle { + radius: 4 + border.width: 1 + border.color: "#191919" + width: 16 + 2 + height: 16 + 2 + 16 + 2 + color: "#999999" + + signal zoomIn() + signal zoomOut() + + Image { + id: imgIn + source: "images/zoomin.png" + x: 2 + y: 2 + MouseArea { + anchors.fill: parent + onClicked: { + zoomIn() + } + } + } + + Image { + id: imgOut + source: "images/zoomout.png" + x: 2 + y: 20 + MouseArea { + anchors.fill: parent + onClicked: { + zoomOut() + } + } + } +} diff --git a/util/qt3d/modeltweak/qml/Widgets/images/zoomin.png b/util/qt3d/modeltweak/qml/Widgets/images/zoomin.png Binary files differnew file mode 100644 index 00000000..e4434a07 --- /dev/null +++ b/util/qt3d/modeltweak/qml/Widgets/images/zoomin.png diff --git a/util/qt3d/modeltweak/qml/Widgets/images/zoomout.png b/util/qt3d/modeltweak/qml/Widgets/images/zoomout.png Binary files differnew file mode 100644 index 00000000..4c853bc6 --- /dev/null +++ b/util/qt3d/modeltweak/qml/Widgets/images/zoomout.png |