summaryrefslogtreecommitdiffstats
path: root/usecases
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-03-25 18:06:01 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-29 20:58:11 +0100
commit31369dd38d12ab2f72aaf2002142120bc08c455b (patch)
tree88068e77a5122925e32ef01532cbf95d3727d1e8 /usecases
parent39a3a07ca9b4d9ebbfb5fe70b4f63d17ac783547 (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.qml100
-rw-r--r--usecases/ExternallyReferencedFrameGraphConfiguration.qml105
-rw-r--r--usecases/InlineFrameGraphConfiguration.qml112
-rw-r--r--usecases/OwnershipCompose.qml159
-rw-r--r--usecases/ReferencedFrameGraphConfiguration.qml121
-rw-r--r--usecases/SampleFrameGraphConfiguration.qml60
-rw-r--r--usecases/use_cases.pro9
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
+