diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-03-25 18:06:01 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-29 20:58:11 +0100 |
commit | 31369dd38d12ab2f72aaf2002142120bc08c455b (patch) | |
tree | 88068e77a5122925e32ef01532cbf95d3727d1e8 /usecases | |
parent | 39a3a07ca9b4d9ebbfb5fe70b4f63d17ac783547 (diff) |
Added typical ways of setting the configuration of the framegraph
Change-Id: I4fe6948634aeab6d4892f423dca2571ef0528066
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'usecases')
-rw-r--r-- | usecases/CleanQmlDream.qml | 100 | ||||
-rw-r--r-- | usecases/ExternallyReferencedFrameGraphConfiguration.qml | 105 | ||||
-rw-r--r-- | usecases/InlineFrameGraphConfiguration.qml | 112 | ||||
-rw-r--r-- | usecases/OwnershipCompose.qml | 159 | ||||
-rw-r--r-- | usecases/ReferencedFrameGraphConfiguration.qml | 121 | ||||
-rw-r--r-- | usecases/SampleFrameGraphConfiguration.qml | 60 | ||||
-rw-r--r-- | usecases/use_cases.pro | 9 |
7 files changed, 666 insertions, 0 deletions
diff --git a/usecases/CleanQmlDream.qml b/usecases/CleanQmlDream.qml new file mode 100644 index 000000000..a46323aab --- /dev/null +++ b/usecases/CleanQmlDream.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 as QQ2 +import Qt3D 2.0 + +Node { + // Node can contains any type of Node or QObject + id : root + objectName : "root" + + + // Entity can be composed of components and child entities + // than inherit its attributes (transformations, framegraph rendering) + Entity { + id : sceneRoot + objectName : sceneRoot + + FrameGraph { + SampleFrameGraphConfiguration { + viewportRect : Qt.rect(0,0,1,1) + camera : camera1 // Problem here, we cannot reference an Entity + } + } + + // Cameras are Entity composed of an Optic component called Camera + // Maybe Camera should be its own Entity subclass + Entity { + id : camera1 + objectName : "camera1" + + Transform { + LookAt {} + Translate {} + Scale {} + Rotate {} + } + + Camera { // Maybe this should be rename to optics + projectionType: Camera.PerspectiveProjection + fieldOfView: 22.5 + aspectRatio: 1920.0 / 1080.0 + } + } + + Entity { + id : testMesh + objectName : "testMesh" + + Mesh mesh : Mesh { // subclass of Component + source : "test_mesh.obj" + + Material { // subclass of Component + diffuseColor : "#00ff00" + specularColor : "#00ff00" + } + } + } + + } // sceneRoot + +} // root diff --git a/usecases/ExternallyReferencedFrameGraphConfiguration.qml b/usecases/ExternallyReferencedFrameGraphConfiguration.qml new file mode 100644 index 000000000..5568c65f7 --- /dev/null +++ b/usecases/ExternallyReferencedFrameGraphConfiguration.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 as QQ2 +import Qt3D 2.0 + +Node { + // Node can contains any type of Node or QObject + id : root + objectName : "root" + + + // Entity can be composed of components and child entities + // than inherit its attributes (transformations, framegraph rendering) + Entity { + id : sceneRoot + objectName : sceneRoot + + + property FrameGraph frameGraph : FrameGraph { // subclass of Component + // activeFrameGraph: references the frameGraph + // configuration + activeFrameGraph : SampleFrameGraphConfiguration { + camera : camera1 + viewportRect : Qt.rect(0, 0, 1, 1) + } + } // frameGraph + + // Cameras are Entity composed of an Optic component called Camera + Entity { + id : camera1 + objectName : "camera1" + + // Transform is a component + // Contains transformation childComponents + property Transform transform : Transform { + LookAt {} + Translate {} + Scale {} + Rotate {} + } + + property Camera optics : Camera { + projectionType: Camera.PerspectiveProjection + fieldOfView: 22.5 + aspectRatio: 1920.0 / 1080.0 + } + } + + Entity { + id : testMesh + objectName : "testMesh" + + property Mesh mesh : Mesh { // subclass of Component + source : "test_mesh.obj" + } + + property Material material : Material { // subclass of Component + diffuseColor : "#00ff00" + specularColor : "#00ff00" + } + } + + + } // sceneRoot + +} // root diff --git a/usecases/InlineFrameGraphConfiguration.qml b/usecases/InlineFrameGraphConfiguration.qml new file mode 100644 index 000000000..67c44aed2 --- /dev/null +++ b/usecases/InlineFrameGraphConfiguration.qml @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 as QQ2 +import Qt3D 2.0 + +Node { + // Node can contains any type of Node or QObject + id : root + objectName : "root" + + // Entity can be composed of components and children entities + // that inherit its attributes (transformations, framegraph rendering) + Entity { + id : sceneRoot + objectName : sceneRoot + + property FrameGraph frameGraph : FrameGraph { // subclass of Component + // activeFrameGraph: references the frameGraph + // configuration + activeFrameGraph : FrameGraphConfiguration { + + TechniqueFilter { + + Viewport { + viewportRect : Qt.rect(0,0,1,1) + + CameraSelector { + camera : camera1 // Problem here, we cannot reference an Entity + } + } + } + } + } + + // Cameras are Entity composed of an Optic component called Camera + Entity { + id : camera1 + objectName : "camera1" + + // Transform is a component + // Contains transformation childComponents + property Transform transform : Transform { + LookAt {} + Translate {} + Scale {} + Rotate {} + } + + property Camera optics : Camera { + projectionType: Camera.PerspectiveProjection + fieldOfView: 22.5 + aspectRatio: 1920.0 / 1080.0 + } + } + + Entity { + id : testMesh + objectName : "testMesh" + + property Mesh mesh : Mesh { // subclass of Component + source : "test_mesh.obj" + } + + property Material material : Material { // subclass of Component + diffuseColor : "#00ff00" + specularColor : "#00ff00" + } + } + + + } // sceneRoot + +} // root diff --git a/usecases/OwnershipCompose.qml b/usecases/OwnershipCompose.qml new file mode 100644 index 000000000..dc92ff318 --- /dev/null +++ b/usecases/OwnershipCompose.qml @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 as QQ2 +import Qt3D 2.0 + +Node { + // A Node contains any type of Node or QObject + id : root + objectName : "root" + + + // Components defined in a node can be referenced by child nodes/entities + + Material { // This material is declared in a Node so that it can be referenced by + // multiple Entity elements + id : common_blue_material + diffuseColor : "#0022dd" + specularColor : "#0000ff"; + } + + Mesh { + id : common_ball_mesh + source : "my_ball_mesh.obj" + } + + + // Entity can be composed of components and child entities + // that inherit its attributes (transformations, framegraph rendering) + Entity { + id : sceneRoot + objectName : sceneRoot + + FrameGraph { + SampleFrameGraphConfiguration { + viewportRect : Qt.rect(0,0,1,1) + camera : camera1 // Problem here, we cannot reference an Entity + } + } + + // Cameras are Entity composed of an Optic component called Camera + // Maybe Camera should be an Entity subclass + Entity { + id : camera1 + objectName : "camera1" + + Transform { + LookAt {} + Translate {} + Scale {} + Rotate {} + } + + Camera { // Maybe this should be renamed to optics + projectionType: Camera.PerspectiveProjection + fieldOfView: 22.5 + aspectRatio: 1920.0 / 1080.0 + } + } + + Entity { + id : testMesh + objectName : "testMesh" + + property Mesh mesh : common_ball_mesh + property Material material : common_blue_material + + Node { + id : testMeshMaterialsNode + Material {id : testMeshMaterialMetal} + Material {id : testMeshMaterialWood} + Transform { + id : perpetualRotation + Rotate {id : y_pertual_Rotation; axis : Qt.vector3d(0,1,0); angle : 0} + QQ2.Timer { + running : true + interval : 1000 / 24 + repeat: true + onTriggered: y_pertual_Rotation.angle += 0.1 + } + } + + Entity { + id : woodBall + property Mesh mesh : common_ball_mesh + property Material mat : testMeshMaterialWood + property Transform trans : perpetualRotation + } // woodBall + + Entity { + id : glossyCylinder + property Transform trans : perpetualRotation + Mesh { + id : cylinderMesh + source : "my_cylinder_mesh.obj" + Material { + id : glossyMaterial + diffuseColor : "#ffffff" + specularColor : "#ffffff" + } + } + } // glossyCylinder + + Entity { + id : metalBall + Transform { + Translate {dy : 5; dx : 0; dz : -8} + } + Mesh { + property Material mat : testMeshMaterialMetal + source : "my_ball_mesh.obj" + } + } // metalBall + + } // testMeshMaterialsNode + + } // testMesh + + } // sceneRoot + +} // root diff --git a/usecases/ReferencedFrameGraphConfiguration.qml b/usecases/ReferencedFrameGraphConfiguration.qml new file mode 100644 index 000000000..17a11adba --- /dev/null +++ b/usecases/ReferencedFrameGraphConfiguration.qml @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 as QQ2 +import Qt3D 2.0 + +Node { + // Node can contains any type of Node or QObject + id : root + objectName : "root" + + + // Entity can be composed of components and child entities + // than inherit its attributes (transformations, framegraph rendering) + Entity { + id : sceneRoot + objectName : sceneRoot + + // This could be moved to another file + FrameGraphConfiguration { // subclass of Component + + id : frameGraphConfiguration + + TechniqueFilter { // subclass of FrameGraphComponent + + Viewport { // subclass of FrameGraphComponent + + viewportRect : Qt.rect(0,0,1,1) + + CameraSelector { + + camera : camera1 // Problem here, we cannot reference an Entity + + } // CameraSelector + } // ViewPort + } // TechniqueFilter + } // FrameGraphConfiguration + + property FrameGraph frameGraph : FrameGraph { // subclass of Component + // activeFrameGraph: references the frameGraph + // configuration + activeFrameGraph : frameGraphConfiguration + } // frameGraph + + // Cameras are Entity composed of an Optic component called Camera + Entity { + id : camera1 + objectName : "camera1" + + // Transform is a component + // Contains transformation childComponents + property Transform transform : Transform { + LookAt {} + Translate {} + Scale {} + Rotate {} + } + + property Camera optics : Camera { + projectionType: Camera.PerspectiveProjection + fieldOfView: 22.5 + aspectRatio: 1920.0 / 1080.0 + } + } + + Entity { + id : testMesh + objectName : "testMesh" + + property Mesh mesh : Mesh { // subclass of Component + source : "test_mesh.obj" + } + + property Material material : Material { // subclass of Component + diffuseColor : "#00ff00" + specularColor : "#00ff00" + } + } + + + } // sceneRoot + +} // root diff --git a/usecases/SampleFrameGraphConfiguration.qml b/usecases/SampleFrameGraphConfiguration.qml new file mode 100644 index 000000000..a0baa0f90 --- /dev/null +++ b/usecases/SampleFrameGraphConfiguration.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 as QQ2 +import Qt3D 2.0 + +FrameGraphConfiguration { + + property alias viewportRect : viewport.viewportRect + property alias camera : camera_selector.camera + + TechniqueFilter { + + Viewport { + id : viewport + + CameraSelector { + id : camera_selector + } + } + } +} diff --git a/usecases/use_cases.pro b/usecases/use_cases.pro new file mode 100644 index 000000000..0cceb1fec --- /dev/null +++ b/usecases/use_cases.pro @@ -0,0 +1,9 @@ + +OTHER_FILES += \ + CleanQmlDream.qml \ + ExternallyReferencedFrameGraphConfiguration.qml \ + InlineFrameGraphConfiguration.qml \ + ReferencedFrameGraphConfiguration.qml \ + SampleFrameGraphConfiguration.qml \ + OwnershipCompose.qml + |