En esta página

View3D QML Type

Proporciona una ventana gráfica en la que renderizar una escena 3D. Más...

Import Statement: import QtQuick3D
Inherits:

Item

Propiedades

Métodos

  • pickResult closestPointPick(vector3d origin, float radius, Model model) (since 6.11)
  • vector3d mapFrom3DScene(vector3d scenePos)
  • vector3d mapTo3DScene(vector3d viewPos)
  • pickResult pick(float x, float y)
  • pickResult pick(float x, float y, Model model) (since 6.8)
  • List<pickResult> pickAll(float x, float y) (since 6.2)
  • list<Object3D> pickInRect(point start, point end) (since 6.11)
  • List<pickResult> pickSubset(float x, float y, list<Model> models) (since 6.8)
  • pickResult rayPick(vector3d origin, vector3d direction) (since 6.2)
  • pickResult rayPick(vector3d origin, vector3d direction, Model model) (since 6.11)
  • List<pickResult> rayPickAll(vector3d origin, vector3d direction) (since 6.2)
  • void setTouchpoint(Item target, point position, int pointId, bool pressed) (since 6.8)

Descripción detallada

View3D proporciona una superficie 2D sobre la que se puede renderizar una escena 3D. Esta superficie es un Qt Quick Item y puede colocarse en una escena Qt Quick.

Hay dos formas de definir la escena 3D que se visualiza en la View3D: Si se define una jerarquía de elementos Node-based como hijos de la View3D directamente, ésta se convertirá en la escena implícita de la View3D.

También es posible hacer referencia a una escena existente utilizando la propiedad importScene y estableciéndola en la raíz Node de la escena que se desea visualizar. Este Node no tiene por qué ser un ancestro del View3D, y se pueden tener múltiples View3D que importen la misma escena.

Esto se demuestra en el ejemplo View3D.

Si el View3D tiene ambos hijos Nodes y la propiedad importScene se establece simultáneamente, entonces ambas escenas se renderizarán como si fueran subárboles hermanos en la misma escena.

Para controlar cómo se renderiza una escena, puedes establecer la propiedad environment. El tipo SceneEnvironment tiene una serie de propiedades visuales que se pueden ajustar, como el color de fondo, la asignación de tonos, el antialiasing, etc. ExtendedSceneEnvironment en el módulo QtQuick3D.Helpers amplía SceneEnvironment con aún más características, añadiendo efectos comunes de post-procesamiento.

Además, para que cualquier cosa pueda ser renderizada en View3D, la escena necesita un Camera. Si sólo hay un Camera en la escena, éste será automáticamente elegido. En caso contrario, se puede utilizar la propiedad camera para seleccionar la cámara. Camera decide qué partes de la escena son visibles y cómo se proyectan sobre la superficie 2D.

Por defecto, la escena 3D se renderizará primero en un buffer fuera de pantalla y luego se compondrá con el resto de la escena Qt Quick cuando haya terminado. Esto proporciona el máximo nivel de compatibilidad, pero puede tener implicaciones de rendimiento en algunos hardware de gráficos. Si este es el caso, la propiedad renderMode se puede utilizar para cambiar la forma en que el View3D se renderiza en la ventana.

Un View3D con el valor predeterminado Offscreen renderMode es también implícitamente un texture provider. Esto significa que ShaderEffect o Texture.sourceItem pueden hacer referencia a la View3D directamente siempre que todos los elementos estén dentro del mismo window. Al igual que con cualquier otro Item, también es posible convertir View3D, o uno de sus ancestros, en un item layer basado en texturas.

Véase también Qt Quick 3D - Ejemplo de View3D.

Documentación de propiedades

camera : QtQuick3D::Camera

Esta propiedad especifica qué Camera se utiliza para renderizar la escena. Si esta propiedad no está establecida, se utilizará la primera cámara habilitada en la escena.

Nota: Se recomienda encarecidamente establecer explícitamente esta propiedad y no confiar en la selección automática de cámara. Si hay varias cámaras en la escena, la selección automática de cámara no ofrece ninguna garantía sobre qué cámara se seleccionará. Si se utilizan capas, es necesario establecer explícitamente la cámara.

Nota: Si esta propiedad contiene una cámara que no es visible entonces no se harán más intentos de encontrar una cámara.

Véase también PerspectiveCamera, OrthographicCamera, FrustumCamera, y CustomCamera.

effectiveTextureSize : size [since 6.7]

Esta propiedad muestra el tamaño, en píxeles, de las memorias intermedias de color (y profundidad/esténcil) subyacentes. Se proporciona para su uso en el hilo (principal) de la GUI, en enlaces QML o JavaScript.

Es una propiedad de sólo lectura.

Nota: Esta propiedad sólo es relevante cuando renderMode se establece en Offscreen.

Esta propiedad se introdujo en Qt 6.7.

Véase también explicitTextureWidth, explicitTextureHeight, y DebugView.

environment : QtQuick3D::SceneEnvironment

Esta propiedad especifica el SceneEnvironment utilizado para renderizar la escena.

Nota: Si se establece esta propiedad a null se restablecerá SceneEnvironment al valor por defecto.

Ver también SceneEnvironment.

explicitTextureHeight : int [since 6.7]

La altura, en píxeles, de la textura asociada al elemento. Relevante cuando se desea un tamaño de textura fijo que no dependa del tamaño del ítem. Este tamaño no tiene ningún efecto sobre la geometría del elemento (su tamaño y ubicación dentro de la escena), lo que significa que el contenido de la textura aparecerá escalado hacia arriba o hacia abajo (y posiblemente estirado) en el área del elemento.

Por defecto, el valor es 0. Un valor de 0 significa que el tamaño de la textura sigue el tamaño del elemento. (texture size in pixels = item's logical size * device pixel ratio).

Nota: Esta propiedad sólo es relevante cuando renderMode se establece en Offscreen. Su valor se ignora en caso contrario.

Esta propiedad se introdujo en Qt 6.7.

Véase también explicitTextureWidth, effectiveTextureSize, y DebugView.

explicitTextureWidth : int [since 6.7]

La anchura, en píxeles, de la textura asociada al elemento. Relevante cuando se desea un tamaño de textura fijo que no dependa del tamaño del ítem. Este tamaño no tiene ningún efecto sobre la geometría del elemento (su tamaño y ubicación dentro de la escena), lo que significa que el contenido de la textura aparecerá escalado hacia arriba o hacia abajo (y posiblemente estirado) en el área del elemento.

Por defecto, el valor es 0. Un valor de 0 significa que el tamaño de la textura sigue el tamaño del elemento. (texture size in pixels = item's logical size * device pixel ratio).

Nota: Esta propiedad sólo es relevante cuando renderMode se establece en Offscreen. Su valor se ignora en caso contrario.

Esta propiedad se introdujo en Qt 6.7.

Véase también explicitTextureHeight, effectiveTextureSize, y DebugView.

extensions : List<QtQuick3D::Object3D>

Esta propiedad contiene una lista de extensiones de usuario que deben utilizarse con este View3D.

Véase también RenderExtension.

importScene : QtQuick3D::Node

Esta propiedad define el nodo de referencia de la escena a renderizar en la ventana gráfica. El nodo no tiene por qué ser hijo de View3D. Este nodo referenciado se convierte en hermano de los nodos hijos de View3D, si los hay.

Nota: Las escenas sólo pueden compartirse entre elementos de View3D que estén en el mismo window.

Nota: Cuando se comparten escenas entre múltiples elementos View3D la escena importada debe importarse entera, es decir, no se admite la importación de un subárbol de una escena. Si múltiples View3D necesitan mostrar diferentes partes de la misma escena compartida, considere utilizar capas en su lugar.

Nota: Esta propiedad sólo puede establecerse una vez, y los cambios posteriores no tendrán efecto.

También puede definir una jerarquía de elementos Node-based como hijos de View3D directamente, entonces esta se convertirá en la escena implícita de View3D.

Para devolver la escena actual de View3D, utilice la propiedad scene.

Véase también Node.

renderFormat : enumeration [since 6.4]

Esta propiedad determina el formato de la textura de respaldo. Sólo se aplica cuando View3D se renderiza en una textura, por ejemplo porque renderMode es View3D.Offscreen.

Por defecto es ShaderEffectSource.RGBA8.

Si el formato no es soportado por el controlador gráfico subyacente en tiempo de ejecución, se utiliza RGBA8.

Esta propiedad se introdujo en Qt 6.4.

Véase también QtQuick::ShaderEffectSource::format y QtQuick::Item::layer.format.

renderMode : enumeration

Esta propiedad determina cómo se combina View3D con las demás partes de la escena Qt Quick.

Por defecto, la escena se renderizará en un buffer fuera de pantalla como paso intermedio. Este búfer fuera de pantalla se renderiza entonces en la ventana (o destino de renderizado) como cualquier otro Qt Quick Item .

Para la mayoría de los usuarios, no habrá necesidad de cambiar el modo de renderizado, y esta propiedad puede ser ignorada. Pero en algunos hardware gráficos, el uso de un buffer fuera de pantalla puede ser un cuello de botella para el rendimiento. Si este es el caso, puede valer la pena experimentar con otros modos.

ConstanteDescripción
View3D.OffscreenLa escena se renderiza en un buffer fuera de pantalla como paso intermedio. Este búfer fuera de pantalla se compone a continuación con el resto de la escena Qt Quick.
View3D.UnderlayLa escena se renderiza directamente en la ventana antes de renderizar el resto de la escena de Qt Quick. En este modo, View3D no puede colocarse encima de otros elementos de Qt Quick.
View3D.OverlayLa escena se renderiza directamente en la ventana después de que se renderice Qt Quick. Con este modo, el View3D siempre estará encima de otros elementos Qt Quick.
View3D.InlineEl grafo de escena de View3D se incrusta en el grafo de escena principal, y se aplica la misma semántica de ordenación que a cualquier otro Qt Quick Item . Como este modo puede dar lugar a problemas sutiles, dependiendo del contenido de la escena, debido a la inyección de contenido 3D basado en la profundidad en un gráfico de escena 2D, no se recomienda su uso, a menos que surja una necesidad específica.

El valor por defecto es View3D.Offscreen.

Nota: Al cambiar el modo de renderizado, es importante tener en cuenta que View3D.Offscreen (el modo por defecto) es el único que garantiza una fidelidad gráfica perfecta. Los otros modos tienen limitaciones que pueden causar fallos visuales, por lo que es importante comprobar que el resultado visual sigue siendo correcto al cambiar esta propiedad.

Nota: Cuando se utilizan los modos Underlay, Overlay, o Inline, puede ser útil, y en algunos casos, necesario, desactivar las escrituras del buffer de profundidad del gráfico de escena Qt Quick a través de QQuickGraphicsConfiguration::setDepthBufferFor2D() antes de mostrar el QQuickWindow o QQuickView que aloja el elemento View3D.

renderStats : QtQuick3D::RenderStats [read-only]

Esta propiedad proporciona estadísticas sobre el renderizado de un fotograma, como fps, frameTime, renderTime, syncTime, y maxFrameTime.

scene : QtQuick3D::Node [read-only]

Devuelve la raíz Node de la escena View3D's.

Para definir la escena 3D que se visualiza en el View3D:

  • Defina una jerarquía de elementos Node-based como hijos del View3D directamente, entonces éste se convertirá en la escena implícita del View3D.
  • Haga referencia a una escena existente utilizando la propiedad importScene y ajústela a la raíz Node de la escena que desea visualizar. Este Node no tiene que ser un ancestro del View3D, y puedes tener múltiples View3D que importen la misma escena.

Ver también importScene.

Documentación del método

[since 6.11] pickResult closestPointPick(vector3d origin, float radius, Model model)

Este método encontrará el punto de la superficie de model más cercano a origin, dentro de una distancia de radius. Si model es null, se encontrará el objeto más cercano dentro de radius.

Si no existe tal objeto, se devuelve null.

Este método se introdujo en Qt 6.11.

vector3d mapFrom3DScene(vector3d scenePos)

Transforma scenePos del espacio de la escena (3D) al espacio de la vista (2D).

Los valores x e y devueltos estarán en coordenadas de vista, con la esquina superior izquierda en [0, 0] y la esquina inferior derecha en [anchura, altura]. El valor z devuelto contiene la distancia desde el plano de clip cercano del frustum (clipNear) a scenePos en coordenadas de escena. Si la distancia es negativa, significa que scenePos está detrás de la cámara activa. Si scenePos no puede asignarse a una posición en la escena, se devuelve una posición de [0, 0, 0].

Esta función requiere que camera esté asignado a la vista.

Véase también mapTo3DScene() y Camera.mapToViewport().

vector3d mapTo3DScene(vector3d viewPos)

Transforma viewPos del espacio de la vista (2D) al espacio de la escena (3D).

Los valores x e y de viewPos deben estar en coordenadas de vista, con la esquina superior izquierda en [0, 0] y la esquina inferior derecha en [anchura, altura]. El valor z se interpreta como la distancia desde el plano de clip cercano del frustum (clipNear) en coordenadas de escena.

Si viewPos no puede asignarse con éxito a una posición en la escena, se devuelve una posición de [0, 0, 0].

Esta función requiere que se asigne un camera a la vista.

Véase también mapFrom3DScene() y Camera.mapFromViewport().

pickResult pick(float x, float y)

Este método "disparará" un rayo en la escena desde las coordenadas de vista x y y y devolverá información sobre la intersección más cercana con un objeto en la escena.

Esto puede, por ejemplo, ser llamado con las coordenadas del ratón para encontrar el objeto bajo el cursor del ratón.

Véase también pickAll(), pickSubset(), y pickInRect().

[since 6.8] pickResult pick(float x, float y, Model model)

Este método "disparará" un rayo en la escena desde las coordenadas de la vista x y y y devolverá información sobre la intersección entre el rayo y el model especificado.

Esto puede, por ejemplo, ser llamado con las coordenadas del ratón para encontrar el objeto bajo el cursor del ratón.

Este método se introdujo en Qt 6.8.

Véase también pickAll(), pickSubset(), y pickInRect().

[since 6.2] List<pickResult> pickAll(float x, float y)

Este método "disparará" un rayo en la escena desde las coordenadas de vista x y y y devolverá una lista de información sobre las intersecciones con objetos en la escena. La lista devuelta se ordena por distancia desde la cámara, apareciendo en primer lugar las intersecciones más cercanas y en último lugar las más lejanas.

Esto puede, por ejemplo, ser llamado con las coordenadas del ratón para encontrar el objeto bajo el cursor del ratón.

Este método se introdujo en Qt 6.2.

Véase también pick(), pickSubset(), y pickInRect().

[since 6.11] list<Object3D> pickInRect(point start, point end)

Este método recoge todos los objetos dentro de una región rectangular definida por los puntos start y end en coordenadas de vista.

Devuelve una lista de objetos que están dentro del rectángulo especificado. Esto se puede utilizar para la selección de marquesina, donde el usuario arrastra un rectángulo para seleccionar varios objetos.

Este método se introdujo en Qt 6.11.

Véase también pick(), pickAll(), y pickSubset().

[since 6.8] List<pickResult> pickSubset(float x, float y, list<Model> models)

Este método "disparará" un rayo en la escena desde las coordenadas de vista x y y y devolverá información sobre las intersecciones con la lista pasada de models. Esto sólo se comprobará con la lista de modelos pasada. La lista devuelta se ordena por distancia desde la cámara, con las intersecciones más cercanas en primer lugar y las más lejanas en último lugar.

Esto puede, por ejemplo, ser llamado con las coordenadas del ratón para encontrar el objeto bajo el cursor del ratón.

Funciona tanto con listas de propiedades<Model> como con matrices dinámicas JavaScript de modelos.

Este método se introdujo en Qt 6.8.

Véase también pick(), pickAll(), y pickInRect().

[since 6.2] pickResult rayPick(vector3d origin, vector3d direction)

Este método "disparará" un rayo en la escena comenzando en origin y en direction y devolverá información sobre la intersección más cercana con un objeto en la escena.

Esto puede, por ejemplo, ser llamado con la posición y el vector de avance de cualquier objeto en una escena para ver qué objeto está delante de un elemento. Esto permite hacer picking desde cualquier punto de la escena.

Este método se introdujo en Qt 6.2.

[since 6.11] pickResult rayPick(vector3d origin, vector3d direction, Model model)

Este método "disparará" un rayo en la escena comenzando en origin y en direction y devolverá información sobre la intersección entre el rayo y el model especificado.

Este método se introdujo en Qt 6.11.

[since 6.2] List<pickResult> rayPickAll(vector3d origin, vector3d direction)

Este método "disparará" un rayo en la escena comenzando en origin y en direction y devolverá una lista de información sobre las intersecciones más cercanas con objetos en la escena. La lista se ordena por distancia desde el origen a lo largo del vector de dirección, apareciendo en primer lugar las intersecciones más cercanas y en último lugar las más lejanas.

Esto puede, por ejemplo, ser llamado con la posición y el vector de dirección de cualquier objeto en una escena para ver qué objetos están delante de un elemento. Esto permite hacer picking desde cualquier punto de la escena.

Este método se introdujo en Qt 6.2.

[since 6.8] void setTouchpoint(Item target, point position, int pointId, bool pressed)

Envía un evento táctil sintético a target, moviendo el punto táctil con ID pointId a position, con pressed determinando si el punto está pulsado. También envía el evento de liberación táctil apropiado si pointId estaba previamente activo en un elemento diferente.

Este método se introdujo en Qt 6.8.

© 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.