Qt Quick 3D - Virtual Assistant Example | Qt Quick 3D 6.7.2
Description: Qt Quick application that presents a 3D model of a virtual assistant with dynamic animations created using QML and timelines.

- Qt 6.7
- Qt Quick 3D
- Qt Quick 3D Examples and Tutorials
- Qt Quick 3D - Virtual Assistant Example
- Qt Quick 3D | Commercial or GPLv3

# Qt Quick 3D - Virtual Assistant Example

     // Copyright (C) 2021 The Qt Company Ltd.
     // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

     import QtQuick
     import QtQuick.Layouts
     import QtQuick.Controls
     import VirtualAssistant.Constants

     Pane {
         id: root

         topPadding: 10
         leftPadding: 40
         rightPadding: 40
         bottomPadding: 40

         required property var camera

         property alias cameraControllerEnabled: enableCamera.checked
         property alias cameraFov: fov.value
         property alias skyboxRotation: skyboxRot.value

         ColumnLayout {
             anchors.fill: parent
             spacing: 10

             Label {
                 text: qsTr("Scene settings")
                 font.pixelSize: 24
                 Layout.alignment: Qt.AlignHCenter
             }

             CheckBox {
                 id: enableCamera

                 Layout.alignment: Qt.AlignHCenter
                 text: qsTr("Enable Camera Controller")
             }

             ColumnLayout {
                 Layout.alignment: Qt.AlignHCenter
                 spacing: 5

                 Label {
                     Layout.alignment: Qt.AlignHCenter
                     text: qsTr("Camera Fov: ") + fov.value
                     font.pixelSize: 14
                 }

                 Slider {
                     id: fov

                     from: 35
                     to: 125
                     value: 80
                     stepSize: 1
                 }
             }

             ColumnLayout {
                 Layout.alignment: Qt.AlignHCenter
                 spacing: 5

                 Label {
                     Layout.alignment: Qt.AlignHCenter
                     text: qsTr("Skybox rotation: ") + skyboxRot.value
                     font.pixelSize: 14
                 }

                 Slider {
                     id: skyboxRot

                     from: 0
                     to: 360
                     value: 180
                     stepSize: 1
                 }
             }

             ColumnLayout {
                 spacing: 4
                 Layout.alignment: Qt.AlignHCenter

                 Label {
                     Layout.alignment: Qt.AlignHCenter
                     text: qsTr("Camera position: ")
                 }

                 Row {
                     Layout.alignment: Qt.AlignHCenter
                     spacing: 5
                     Label {
                         text: "x: " + root.camera.x.toFixed(2)
                     }
                     Label {
                         text: "y: " + root.camera.y.toFixed(2)
                     }
                     Label {
                         text: "z: " + root.camera.z.toFixed(2)
                     }
                 }
             }

             Button {
                 Layout.alignment: Qt.AlignHCenter

                 text: qsTr("Reset default settings")
                 onClicked: {
                     fov.value = Constants.defaultFov;
                     enableCamera.checked = false;
                     skyboxRot.value = Constants.defaultRotation;
                     root.camera.position = Constants.defaultCameraPosition
                 }
             }

             Item {
                 Layout.fillHeight: true
                 Layout.fillWidth: true
             }
         }
     }