Qt Quick 3D - Ejemplo de capas
Demuestra el uso de capas en QtQuick3D.

En este ejemplo, los modelos de logotipos de diferentes colores se colocan en diferentes capas. Desde el panel de configuración, los usuarios pueden controlar la visibilidad de cada capa activando las casillas de verificación.
Preparación de las capas de la escena
Capas
Por conveniencia ponemos un alias al tipo de enums Layer para que sea más fácil de identificar.
readonly property int redModels: ContentLayer.Layer1 readonly property int greenModels: ContentLayer.Layer2 readonly property int blueModels: ContentLayer.Layer3
Cámara
Como queremos filtrar la vista de la cámara basándonos en las capas, necesitamos establecer las capas que la cámara debe renderizar. Hacemos esto estableciendo la propiedad layers de la cámara a una o más capas. La cámara sólo renderizará aquellos objetos que estén en la layers especificada. Por defecto la cámara renderizará nodos de todos los layers.
Para poder seleccionar las capas activas creamos una propiedad cameraFilter y la vinculamos a la propiedad layers de la cámara.
property int cameraFilter: ContentLayer.LayerAll camera: PerspectiveCamera { layers: v3d.cameraFilter position: Qt.vector3d(0, 400, 500) eulerRotation.x: -30 clipFar: 2000 }
Cuando se activan las casillas de verificación en el panel de configuración, la propiedad cameraFilter se actualizará para incluir o excluir las capas respectivas. De esta forma, la cámara sólo renderizará los objetos que se encuentren en las capas especificadas por la propiedad cameraFilter.
CheckBox { id: checkBoxRedLayer text: qsTr("Red Layer") checked: true onCheckedChanged: { v3d.cameraFilter = checked ? v3d.cameraFilter | v3d.redModels : v3d.cameraFilter & ~v3d.redModels; } }
Modelos
Ahora es necesario asignar los tres modelos de colores diferentes a las capas respectivas. Al igual que con la cámara, podemos utilizar la propiedad layers del modelo para asignarlo a una capa. El modelo del logotipo rojo se asigna a la capa redLayer, el verde a la capa greenLayer, y el azul a la capa blueLayer.
Node { position: Qt.vector3d(0, 200, 0) Model { source: "qtlogo.mesh" layers: v3d.redModels scale: Qt.vector3d(5000, 5000, 5000) materials:[ PrincipledMaterial { baseColor: "red" roughness: 0.5 } ] NumberAnimation on eulerRotation.y { from: 0 to: 360 duration: 15000 loops: Animation.Infinite } } Model { position: Qt.vector3d(0, -50, 0) source: "#Cylinder" materials:[ PrincipledMaterial { baseColor: "red" roughness: 0.5 } ] } } Node { position: Qt.vector3d(0, 100, 0) Model { source: "qtlogo.mesh" layers: v3d.greenModels scale: Qt.vector3d(5000, 5000, 5000) materials:[ PrincipledMaterial { baseColor: "green" roughness: 0.5 } ] NumberAnimation on eulerRotation.y { from: 0 to: 360 duration: 20000 loops: Animation.Infinite } } Model { position: Qt.vector3d(0, -50, 0) source: "#Cylinder" materials:[ PrincipledMaterial { baseColor: "green" roughness: 0.5 } ] } } Node { Model { source: "qtlogo.mesh" layers: v3d.blueModels scale: Qt.vector3d(5000, 5000, 5000) materials:[ PrincipledMaterial { baseColor: "blue" roughness: 0.5 } ] NumberAnimation on eulerRotation.y { from: 0 to: 360 duration: 12500 loops: Animation.Infinite } } Model { position: Qt.vector3d(0, -50, 0) source: "#Cylinder" materials:[ PrincipledMaterial { baseColor: "blue" roughness: 0.5 } ] } }
Con las capas configuradas, la cámara sólo renderizará los modelos que estén en las capas especificadas por cameraFilter. El usuario puede cambiar la visibilidad de cada capa marcando o desmarcando las casillas de verificación en el panel de configuración.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.