Preview.qml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // Copyright (C) 2023 The Qt Company Ltd.
  2. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
  3. import QtQuick
  4. import QtQuick.Window
  5. import QtCore
  6. import QtQuick3D
  7. import QtQuick3D.Helpers
  8. Item {
  9. id: previewRoot
  10. property url skyBoxTexturePath: "assets/skybox/OpenfootageNET_lowerAustria01-1024.hdr"
  11. property CustomMaterial currentMaterial: CustomMaterial {
  12. }
  13. property PrincipledMaterial fallbackMaterial: PrincipledMaterial {
  14. baseColor: "magenta"
  15. }
  16. property alias modelInstance: model
  17. property alias rootNode: resourceRoot
  18. property alias instanceEntry: instEntry
  19. Settings {
  20. property alias cameraOriginRotation: originNode.rotation
  21. property alias cameraRotation: sceneCamera.rotation
  22. property alias cameraPosition: sceneCamera.position
  23. }
  24. View3D {
  25. id: view
  26. anchors.fill: parent
  27. environment: SceneEnvironment {
  28. id: sceneEnvironment
  29. backgroundMode: previewControls.enableIBL ? SceneEnvironment.SkyBox : SceneEnvironment.Transparent
  30. lightProbe: previewControls.enableIBL ? skyboxTexture : null
  31. }
  32. Texture {
  33. id: skyboxTexture
  34. source: previewRoot.skyBoxTexturePath
  35. }
  36. Node {
  37. id: resourceRoot
  38. }
  39. property alias cameraOrigin: originNode
  40. Node {
  41. id: originNode
  42. PerspectiveCamera {
  43. id: sceneCamera
  44. z: 300
  45. }
  46. }
  47. camera: sceneCamera
  48. DirectionalLight {
  49. id: light
  50. z: 600
  51. eulerRotation: Qt.vector3d(30, 0, 0)
  52. visible: previewControls.enableDirectionalLight
  53. }
  54. Model {
  55. id: model
  56. source: previewControls.modelSource
  57. materials: [ previewRoot.currentMaterial, previewRoot.fallbackMaterial ]
  58. property bool enableInstancing: false
  59. instancing: enableInstancing ? manualInstancing : null
  60. }
  61. InstanceList {
  62. id: manualInstancing
  63. instances: [instEntry, instEntry1, instEntry2, instEntry3, instEntry4]
  64. }
  65. InstanceListEntry {
  66. id: instEntry
  67. }
  68. InstanceListEntry {
  69. id: instEntry1
  70. position: Qt.vector3d(120, 150, 150);
  71. }
  72. InstanceListEntry {
  73. id: instEntry2
  74. position: Qt.vector3d(-70, 70, -100);
  75. }
  76. InstanceListEntry {
  77. id: instEntry3
  78. position: Qt.vector3d(-100, -120, -70);
  79. }
  80. InstanceListEntry {
  81. id: instEntry4
  82. position: Qt.vector3d(120, -50, 100);
  83. }
  84. OrbitCameraController {
  85. id: cameraController
  86. origin: originNode
  87. camera: sceneCamera
  88. panEnabled: false
  89. }
  90. }
  91. PreviewControls {
  92. id: previewControls
  93. width: parent.width
  94. targetView: view
  95. orbitCamera: cameraController
  96. }
  97. }