jsonmodelsbasic.qml Example File
canvas3d/jsonmodels/qml/jsonmodels/jsonmodelsbasic.qml/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the QtCanvas3D module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL3$ ** 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 http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPLv3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or later as published by the Free ** Software Foundation and appearing in the file LICENSE.GPL included in ** the packaging of this file. Please review the following information to ** ensure the GNU General Public License version 2.0 requirements will be ** met: http://www.gnu.org/licenses/gpl-2.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.2 import QtQuick.Window 2.1 import QtCanvas3D 1.0 import QtQuick.Controls 1.1 import QtQuick.Layouts 1.1 import "jsonmodels.js" as GLCode Window { visible: true width: 1200 height: 900 property int previousY: 0 property int previousX: 0 Rectangle { id: valuePanel width: 150 height: 100 anchors.left: parent.left anchors.top: parent.top opacity: 0.3 border.color: "black" border.width: 2 radius: 5 z: 1 } ColumnLayout { width: valuePanel.width height: valuePanel.height x: 10 z: 2 Label { font.pixelSize: 20 text: "x angle: " + angle readonly property int angle: canvas3d.xRot } Label { font.pixelSize: 20 text: "y angle: " + angle readonly property int angle: canvas3d.yRot } Label { font.pixelSize: 20 text: "distance: " + distance readonly property int distance: canvas3d.distance * 10 } } ColumnLayout { anchors.fill: parent RowLayout { Layout.fillHeight: true Layout.fillWidth: true Canvas3D { id: canvas3d Layout.fillHeight: true Layout.fillWidth: true property double xRot: 0.0 property double yRot: 45.0 property double distance: 2.0 property double itemSize: 1.0 property double lightX: 0.0 property double lightY: 45.0 property double lightDistance: 2.0 property bool animatingLight: false property bool animatingCamera: false property bool drawWireframe: false onInitializeGL: { GLCode.initializeGL(canvas3d); } onPaintGL: { GLCode.paintGL(canvas3d); } onResizeGL: { GLCode.resizeGL(canvas3d); } MouseArea { anchors.fill: parent onMouseXChanged: { if (previousY !== 0) canvas3d.yRot += mouseY - previousY previousY = mouseY if (canvas3d.yRot > 90) canvas3d.yRot = 90 if (canvas3d.yRot < -90) canvas3d.yRot = -90 } onMouseYChanged: { if (previousX !== 0) canvas3d.xRot += mouseX - previousX previousX = mouseX if (canvas3d.xRot > 180) canvas3d.xRot -= 360 if (canvas3d.xRot < -180) canvas3d.xRot += 360 } onReleased: { previousX = 0 previousY = 0 } onWheel: { canvas3d.distance -= wheel.angleDelta.y / 1000.0 if (canvas3d.distance < 0.5) canvas3d.distance = 0.5 if (canvas3d.distance > 10) canvas3d.distance = 10 } } } } RowLayout { Layout.fillWidth: true Button { id: lightButton Layout.fillWidth: true text: "Animate Light" checkable: true onCheckedChanged: canvas3d.animatingLight = checked } Button { id: cameraButton Layout.fillWidth: true text: "Animate Camera" checkable: true onCheckedChanged: canvas3d.animatingCamera = checked } Button { id: drawButton Layout.fillWidth: true text: "Wireframe" checkable: true onCheckedChanged: canvas3d.drawWireframe = checked } Button { Layout.fillWidth: true text: "Reset" onClicked: { canvas3d.xRot = 0.0 canvas3d.yRot = 45.0 canvas3d.distance = 2.0 canvas3d.itemSize = 1.0 canvas3d.lightX = 0.0 canvas3d.lightY = 45.0 canvas3d.lightDistance = 2.0 lightButton.checked = false cameraButton.checked = false drawButton.checked = false } } Button { Layout.fillWidth: true text: "Quit" onClicked: Qt.quit() } } } SequentialAnimation { loops: Animation.Infinite running: canvas3d.animatingLight NumberAnimation { target: canvas3d property: "lightX" from: 0.0 to: 360.0 duration: 5000 } } SequentialAnimation { loops: Animation.Infinite running: canvas3d.animatingLight NumberAnimation { target: canvas3d property: "lightY" from: 0.0 to: 90.0 duration: 10000 } NumberAnimation { target: canvas3d property: "lightY" from: 90.0 to: 0.0 duration: 10000 } } SequentialAnimation { loops: Animation.Infinite running: canvas3d.animatingLight NumberAnimation { target: canvas3d property: "lightDistance" from: 10.0 to: 0.5 duration: 30000 } NumberAnimation { target: canvas3d property: "lightDistance" from: 0.5 to: 10.0 duration: 30000 } } SequentialAnimation { loops: Animation.Infinite running: canvas3d.animatingCamera NumberAnimation { target: canvas3d property: "xRot" from: -180.0 to: 180.0 duration: 5000 easing.type: Easing.InOutSine } NumberAnimation { target: canvas3d property: "xRot" from: 180.0 to: -180.0 duration: 5000 easing.type: Easing.InOutSine } } SequentialAnimation { loops: Animation.Infinite running: canvas3d.animatingCamera NumberAnimation { target: canvas3d property: "yRot" from: 0.0 to: 90.0 duration: 10000 easing.type: Easing.InOutSine } NumberAnimation { target: canvas3d property: "yRot" from: 90.0 to: 0.0 duration: 10000 easing.type: Easing.InOutSine } } SequentialAnimation { loops: Animation.Infinite running: canvas3d.animatingCamera NumberAnimation { target: canvas3d property: "distance" from: 10.0 to: 0.5 duration: 30000 easing.type: Easing.InOutSine } NumberAnimation { target: canvas3d property: "distance" from: 0.5 to: 10.0 duration: 30000 easing.type: Easing.InOutSine } } }