diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2015-11-07 19:02:14 +0000 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-11-17 19:41:18 +0000 |
commit | 26a118cfbce29014864f6cdddae66cccb65ffb4f (patch) | |
tree | daea9f2fc41c1df586c35cd56daa61f920ce5b58 /examples/qt3d/multiviewport | |
parent | ace675a084ab944a245500b9f54be653126c3147 (diff) |
Remove transforms property of QTransform
Compound transformations are now built up using QMatrix4x4 in both QML
and C++. Updating examples accordingly.
Change-Id: I03c9abf1f6cdd1b56226dc0e16a7ad5ce84516dd
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'examples/qt3d/multiviewport')
-rw-r--r-- | examples/qt3d/multiviewport/QuadViewportFrameGraph.qml | 80 | ||||
-rw-r--r-- | examples/qt3d/multiviewport/SimpleCamera.qml | 61 | ||||
-rw-r--r-- | examples/qt3d/multiviewport/main.qml | 186 | ||||
-rw-r--r-- | examples/qt3d/multiviewport/multiviewport.qrc | 2 |
4 files changed, 210 insertions, 119 deletions
diff --git a/examples/qt3d/multiviewport/QuadViewportFrameGraph.qml b/examples/qt3d/multiviewport/QuadViewportFrameGraph.qml new file mode 100644 index 000000000..2011aaf4d --- /dev/null +++ b/examples/qt3d/multiviewport/QuadViewportFrameGraph.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt3D 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 Qt3D.Core 2.0 +import Qt3D.Render 2.0 + +FrameGraph { + id: quadViewportFrameGraph + + property alias topLeftCamera: cameraSelectorTopLeftViewport.camera; + property alias topRightCamera: cameraSelectorTopRightViewport.camera; + property alias bottomLeftCamera: cameraSelectorBottomLeftViewport.camera; + property alias bottomRightCamera: cameraSelectorBottomRightViewport.camera; + + Viewport { + id: mainViewport + rect: Qt.rect(0, 0, 1, 1) + + ClearBuffer { + buffers: ClearBuffer.ColorDepthBuffer + } + + Viewport { + id: topLeftViewport + rect: Qt.rect(0, 0, 0.5, 0.5) + CameraSelector { id: cameraSelectorTopLeftViewport } + } + + Viewport { + id: topRightViewport + rect: Qt.rect(0.5, 0, 0.5, 0.5) + CameraSelector { id: cameraSelectorTopRightViewport } + } + + Viewport { + id: bottomLeftViewport + rect: Qt.rect(0, 0.5, 0.5, 0.5) + CameraSelector { id: cameraSelectorBottomLeftViewport } + } + + Viewport { + id: bottomRightViewport + rect: Qt.rect(0.5, 0.5, 0.5, 0.5) + CameraSelector { id: cameraSelectorBottomRightViewport } + } + } +} diff --git a/examples/qt3d/multiviewport/SimpleCamera.qml b/examples/qt3d/multiviewport/SimpleCamera.qml new file mode 100644 index 000000000..cb570eb7b --- /dev/null +++ b/examples/qt3d/multiviewport/SimpleCamera.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt3D 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 Qt3D.Core 2.0 +import Qt3D.Render 2.0 + +Entity { + id: root + + property vector3d position: Qt.vector3d(0.0, 0.0, 10.0) + property vector3d viewCenter: Qt.vector3d(0.0, 0.0, 0.0) + property vector3d upVector: Qt.vector3d(0.0, 1.0, 0.0) + property CameraLens lens: null + + components: [lens, transform] + + Transform { + id: transform + matrix: { + var m = Qt.matrix4x4(1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1); + m.lookAt(root.position, root.viewCenter, root.upVector); + return m; + } + } +} diff --git a/examples/qt3d/multiviewport/main.qml b/examples/qt3d/multiviewport/main.qml index 69d6b98ca..9c4626eb4 100644 --- a/examples/qt3d/multiviewport/main.qml +++ b/examples/qt3d/multiviewport/main.qml @@ -38,150 +38,98 @@ import QtQuick 2.0 import Qt3D.Core 2.0 import Qt3D.Render 2.0 - Entity { - id : rootNode + id: rootNode + components: [quadViewportFrameGraph] - CameraLens { - id : cameraLens - projectionType: CameraLens.PerspectiveProjection - fieldOfView: 45 - aspectRatio: 16/9 - nearPlane : 0.01 - farPlane : 1000.0 - } // cameraLens + QuadViewportFrameGraph { + id: quadViewportFrameGraph + topLeftCamera: cameraSet.cameras[0] + topRightCamera: cameraSet.cameras[1] + bottomLeftCamera: cameraSet.cameras[2] + bottomRightCamera: cameraSet.cameras[3] + } Entity { - id : sceneRoot - components: [frameGraph] - property real rotationAngle : 0 - - SequentialAnimation { - running : true - loops: Animation.Infinite - NumberAnimation {target : sceneRoot; property : "rotationAngle"; to : 360; duration : 2000;} - } - - property var cameras : [cameraViewport1, cameraViewport2, cameraViewport3, cameraViewport4] + id: cameraSet + property var cameras: [camera1, camera2, camera3, camera4] Timer { - running : true - interval : 10000 - repeat : true - property int count : 0 - onTriggered: - { - cameraSelectorTopLeftViewport.camera = sceneRoot.cameras[count++ % 4]; - cameraSelectorTopRightViewport.camera = sceneRoot.cameras[count % 4]; - cameraSelectorBottomLeftViewport.camera = sceneRoot.cameras[(count + 1) % 4]; - cameraSelectorBottomRightViewport.camera = sceneRoot.cameras[(count + 2) % 4]; + running: true + interval: 10000 + repeat: true + property int count: 0 + onTriggered: { + quadViewportFrameGraph.topLeftCamera = cameraSet.cameras[count++ % 4]; + quadViewportFrameGraph.topRightCamera = cameraSet.cameras[count % 4]; + quadViewportFrameGraph.bottomLeftCamera = cameraSet.cameras[(count + 1) % 4]; + quadViewportFrameGraph.bottomRightCamera = cameraSet.cameras[(count + 2) % 4]; } } - FrameGraph { - id : frameGraph - - Viewport { - id : mainViewport - rect: Qt.rect(0, 0, 1, 1) - - ClearBuffer { - buffers : ClearBuffer.ColorDepthBuffer - } - - Viewport { - id : topLeftViewport - rect : Qt.rect(0, 0, 0.5, 0.5) - CameraSelector {id : cameraSelectorTopLeftViewport; camera : sceneRoot.cameras[0]} - } - - Viewport { - id : topRightViewport - rect : Qt.rect(0.5, 0, 0.5, 0.5) - CameraSelector {id : cameraSelectorTopRightViewport; camera : sceneRoot.cameras[1]} - } - - Viewport { - id : bottomLeftViewport - rect : Qt.rect(0, 0.5, 0.5, 0.5) - CameraSelector {id : cameraSelectorBottomLeftViewport; camera : sceneRoot.cameras[2]} - } + CameraLens { + id : cameraLens + projectionType: CameraLens.PerspectiveProjection + fieldOfView: 45 + aspectRatio: 16/9 + nearPlane : 0.01 + farPlane : 1000.0 + } - Viewport { - id : bottomRightViewport - rect : Qt.rect(0.5, 0.5, 0.5, 0.5) - CameraSelector {id : cameraSelectorBottomRightViewport; camera : sceneRoot.cameras[3]} - } + SimpleCamera { + id: camera1 + lens: cameraLens + position: Qt.vector3d( 0.0, 0.0, -20.0 ) + } - } // mainViewport - } // frameGraph + SimpleCamera { + id: camera2 + lens: cameraLens + position: Qt.vector3d( 0.0, 0.0, 20.0 ) + viewCenter: Qt.vector3d( -3.0, 0.0, 10.0 ) + } - Entity { - id : cameraViewport1 - property Transform transform : Transform { - LookAt { - position: Qt.vector3d( 0.0, 0.0, -20.0 ) - upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) - viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 ) - } - } - components : [cameraLens, transform] + SimpleCamera { + id: camera3 + lens: cameraLens + position: Qt.vector3d( 0.0, 30.0, 30.0 ) + viewCenter: Qt.vector3d( -5.0, -20.0, -10.0 ) } - Entity { - id : cameraViewport2 - property Transform transform : Transform { - Rotate { - angle : sceneRoot.rotationAngle - axis : Qt.vector3d(0, 1, 0) - } - LookAt { - position: Qt.vector3d( 0.0, 0.0, 20.0 ) - upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) - viewCenter: Qt.vector3d( -3.0, 0.0, 10.0 ) - } - } - components : [cameraLens, transform] + SimpleCamera { + id: camera4 + lens: cameraLens + position: Qt.vector3d( 0.0, 15.0, 20.0 ) + viewCenter: Qt.vector3d( 0.0, -15.0, -20.0 ) } + } - Entity { - id : cameraViewport3 - property Transform transform : Transform { - LookAt { - position: Qt.vector3d( 0.0, 30.0, 30.0 ) - upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) - viewCenter: Qt.vector3d( -5.0, -20.0, -10.0 ) - } - } - components : [cameraLens, transform] + Entity { + id: sceneRoot + property real rotationAngle: 0 + + SequentialAnimation { + running: true + loops: Animation.Infinite + NumberAnimation { target: sceneRoot; property: "rotationAngle"; to: 360; duration: 2000; } } Entity { - components : [ + components: [ Transform { - Rotate { - angle : -sceneRoot.rotationAngle - axis : Qt.vector3d(0, 0, 1) + matrix: { + var m = Qt.matrix4x4(1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1); + m.rotate(-sceneRoot.rotationAngle, Qt.vector3d(0, 0, 1)); + return m; } }, SceneLoader { source: "qrc:/assets/test_scene.dae" - }] - } - - Entity { - id : cameraViewport4 - property Transform transform : Transform { - LookAt { - position: Qt.vector3d( 0.0, 15.0, 20.0 ) - upVector: Qt.vector3d( 0.0, 0.0, 1.0 ) - viewCenter: Qt.vector3d( 0.0, -15.0, -20.0 ) } - } - components : [cameraLens, transform] + ] } - - } // sceneRoot - } // rootNode diff --git a/examples/qt3d/multiviewport/multiviewport.qrc b/examples/qt3d/multiviewport/multiviewport.qrc index 5f6483ac3..bd06fb169 100644 --- a/examples/qt3d/multiviewport/multiviewport.qrc +++ b/examples/qt3d/multiviewport/multiviewport.qrc @@ -1,5 +1,7 @@ <RCC> <qresource prefix="/"> <file>main.qml</file> + <file>SimpleCamera.qml</file> + <file>QuadViewportFrameGraph.qml</file> </qresource> </RCC> |