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.Controls
     import QtQuick3D
     import QtQuick.Layouts
     import QtQuick3D.Helpers
     import VirtualAssistant.Constants
     import Quick3DAssets.VirtualAssistant

     Rectangle {
         width: Constants.width
         height: Constants.height

         View3D {
             id: view3D
             anchors.fill: parent

             environment: ExtendedSceneEnvironment {
                 backgroundMode: SceneEnvironment.SkyBox
                 lightProbe: Texture { source: Constants.sceneName }
                 antialiasingMode: SceneEnvironment.MSAA
                 antialiasingQuality: SceneEnvironment.VeryHigh
                 fxaaEnabled: true
                 probeExposure: 0.6
                 probeOrientation: Qt.vector3d(0, settingsPanel.skyboxRotation, 0)
                 specularAAEnabled: true
                 tonemapMode: SceneEnvironment.TonemapModeLinear
                 vignetteEnabled: true
                 vignetteRadius: 0.15
             }

             Node {
                 id: scene

                 VirtualAssistant {
                     id: virtualAssistant
                 }
             }

             Node {
                 id: cameraNode
                 PerspectiveCamera {
                     id: sceneCamera
                     y: 5
                     z: 15
                     fieldOfView: settingsPanel.cameraFov
                     clipNear: 1.0
                 }
             }

             OrbitCameraController {
                 anchors.fill: parent
                 origin: cameraNode
                 camera: sceneCamera
                 enabled: settingsPanel.cameraControllerEnabled
             }

             MouseArea {
                 anchors.fill: parent

                 Connections {
                     function onClicked(mouse) {
                         var result = view3D.pick(mouse.x, mouse.y);

                         if (!result.objectHit)
                             return

                         virtualAssistant.animateObject(result.objectHit.objectName)
                     }
                 }
             }
         }

         Item {
             id: __materialLibrary__
             DefaultMaterial {
                 id: defaultMaterial
                 objectName: "Default Material"
                 diffuseColor: "#4aee45"
             }
         }

         TabBar {
             id: bar
             anchors.left: parent.left
             anchors.top: parent.top
             width: 300

             TabButton {
                 text: qsTr("Animations")
             }
             TabButton {
                 text: qsTr("Settings")
             }
         }

         StackLayout {
             anchors.top: bar.bottom
             anchors.bottom: parent.bottom
             width: bar.width

             currentIndex: bar.currentIndex

             ControlPanel {
                 id: controlPanel

                 Connections {
                     target: controlPanel
                     function onClicked(index: int) {
                         virtualAssistant.runAnimation(index);
                     }
                 }
             }

             SettingsPanel {
                 id: settingsPanel

                 camera: sceneCamera
             }
         }
     }