Sur cette page

View3D QML Type

Fournit une fenêtre de visualisation pour le rendu d'une scène 3D. Plus d'informations...

Import Statement: import QtQuick3D
Inherits:

Item

Propriétés

Méthodes

  • 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)

Description détaillée

View3D fournit une surface 2D sur laquelle une scène 3D peut être rendue. Cette surface est une Qt Quick Item et peut être placée dans une scène Qt Quick.

Il y a deux façons de définir la scène 3D qui est visualisée sur le View3D : si vous définissez une hiérarchie d'éléments Node-based en tant qu'enfants du View3D directement, cela deviendra la scène implicite du View3D.

Il est également possible de faire référence à une scène existante en utilisant la propriété importScene et en la définissant comme la racine Node de la scène que vous souhaitez visualiser. Ce Node ne doit pas nécessairement être un ancêtre du View3D, et vous pouvez avoir plusieurs View3D qui importent la même scène.

Ceci est démontré dans l'exemple View3D.

Si le View3D a un enfant Nodes et que la propriété importScene est définie simultanément, les deux scènes seront rendues comme s'il s'agissait de sous-arbres frères dans la même scène.

Pour contrôler le rendu d'une scène, vous pouvez définir la propriété environment. Le type SceneEnvironment possède un certain nombre de propriétés visuelles qui peuvent être ajustées, telles que la couleur d'arrière-plan, le mappage des tons, l'anticrénelage et plus encore. ExtendedSceneEnvironment dans le module QtQuick3D.Helpers étend SceneEnvironment avec encore plus de fonctionnalités, en ajoutant des effets de post-traitement communs.

En outre, pour qu'un rendu puisse être effectué dans View3D, la scène a besoin d'une propriété Camera. S'il n'y a qu'une seule propriété Camera dans la scène, elle sera automatiquement sélectionnée. Dans le cas contraire, la propriété camera peut être utilisée pour sélectionner la caméra. La propriété Camera détermine quelles parties de la scène sont visibles et comment elles sont projetées sur la surface 2D.

Par défaut, la scène 3D sera d'abord rendue dans un tampon hors écran, puis composée avec le reste de la scène Qt Quick lorsqu'elle sera terminée. Cette méthode offre un niveau de compatibilité maximal, mais peut avoir des conséquences sur les performances de certains matériels graphiques. Dans ce cas, la propriété renderMode peut être utilisée pour modifier le mode de rendu de la View3D dans la fenêtre.

Un View3D avec la valeur par défaut Offscreen renderMode est aussi implicitement un texture provider. Cela signifie que ShaderEffect ou Texture.sourceItem peut faire référence à la View3D directement tant que tous les éléments se trouvent dans le même window. Comme pour tout autre Item, il est également possible de transformer le View3D, ou l'un de ses ancêtres, en un item layer basé sur les textures.

Voir également Qt Quick 3D - Exemple de View3D.

Documentation sur les propriétés

camera : QtQuick3D::Camera

Cette propriété indique quelle Camera est utilisée pour le rendu de la scène. Si cette propriété n'est pas définie, la première caméra activée dans la scène sera utilisée.

Remarque : il est fortement recommandé de définir explicitement cette propriété et de ne pas se fier à la sélection automatique de la caméra. S'il y a plusieurs caméras dans la scène, la sélection automatique de la caméra n'offre aucune garantie quant à la caméra qui sera sélectionnée. Si des calques sont utilisés, il est nécessaire de définir explicitement la caméra.

Remarque : si cette propriété contient une caméra qui n'est pas visible, aucune autre tentative de recherche de caméra ne sera effectuée.

Voir également PerspectiveCamera, OrthographicCamera, FrustumCamera, et CustomCamera.

effectiveTextureSize : size [since 6.7]

Cette propriété indique la taille, en pixels, des tampons de couleur (et de profondeur/stencil) sous-jacents. Elle est fournie pour être utilisée sur le fil d'exécution de l'interface graphique (principale), dans les liens QML ou en JavaScript.

Il s'agit d'une propriété en lecture seule.

Remarque : cette propriété n'est pertinente que lorsque renderMode est défini sur Offscreen.

Cette propriété a été introduite dans Qt 6.7.

Voir aussi explicitTextureWidth, explicitTextureHeight, et DebugView.

environment : QtQuick3D::SceneEnvironment

Cette propriété spécifie le site SceneEnvironment utilisé pour le rendu de la scène.

Remarque : Si vous attribuez la valeur null à cette propriété, la valeur par défaut de SceneEnvironment sera rétablie.

Voir également SceneEnvironment.

explicitTextureHeight : int [since 6.7]

La hauteur, en pixels, de la texture associée à l'élément. Cette valeur est utile lorsque l'on souhaite obtenir une taille de texture fixe qui ne dépend pas de la taille de l'élément. Cette taille n'a aucun effet sur la géométrie de l'élément (sa taille et son emplacement dans la scène), ce qui signifie que le contenu de la texture apparaîtra à l'échelle supérieure ou inférieure (et éventuellement étiré) sur la zone de l'élément.

Par défaut, la valeur est 0. Une valeur de 0 signifie que la taille de la texture suit la taille de l'élément. (texture size in pixels = item's logical size * device pixel ratio).

Remarque : cette propriété n'est pertinente que lorsque renderMode est défini sur Offscreen. Dans le cas contraire, sa valeur est ignorée.

Cette propriété a été introduite dans Qt 6.7.

Voir aussi explicitTextureWidth, effectiveTextureSize, et DebugView.

explicitTextureWidth : int [since 6.7]

Largeur, en pixels, de la texture associée à l'élément. Cette option est utile lorsque l'on souhaite obtenir une taille de texture fixe qui ne dépend pas de la taille de l'élément. Cette taille n'a aucun effet sur la géométrie de l'élément (sa taille et son emplacement dans la scène), ce qui signifie que le contenu de la texture apparaîtra à l'échelle supérieure ou inférieure (et éventuellement étiré) sur la zone de l'élément.

Par défaut, la valeur est 0. Une valeur de 0 signifie que la taille de la texture suit la taille de l'élément. (texture size in pixels = item's logical size * device pixel ratio).

Remarque : cette propriété n'est pertinente que lorsque renderMode est défini sur Offscreen. Dans le cas contraire, sa valeur est ignorée.

Cette propriété a été introduite dans Qt 6.7.

Voir aussi explicitTextureHeight, effectiveTextureSize, et DebugView.

extensions : List<QtQuick3D::Object3D>

Cette propriété contient une liste d'extensions utilisateur qui doivent être utilisées avec ce site View3D.

Voir également RenderExtension.

importScene : QtQuick3D::Node

Cette propriété définit le nœud de référence de la scène à rendre dans la fenêtre de visualisation. Le nœud ne doit pas nécessairement être un enfant de View3D. Ce nœud référencé devient un frère des nœuds enfants de View3D, s'il y en a.

Remarque : les scènes ne peuvent être partagées qu'entre les éléments View3D qui se trouvent dans le même window.

Remarque : lors du partage de scènes entre plusieurs éléments View3D, la scène importée doit être importée dans son intégralité, c'est-à-dire que l'importation d'un sous-arbre d'une scène n'est pas prise en charge. Si plusieurs View3D doivent afficher différentes parties de la même scène partagée, il est préférable d'utiliser des calques.

Remarque : cette propriété ne peut être définie qu'une seule fois et les modifications ultérieures n'auront aucun effet.

Vous pouvez également définir une hiérarchie d'éléments Node-based en tant qu'enfants de View3D directement, qui deviendra alors la scène implicite de View3D.

Pour renvoyer la scène actuelle de l'élément View3D, utilisez la propriété scene.

Voir aussi Node.

renderFormat : enumeration [since 6.4]

Cette propriété détermine le format de la texture d'accompagnement. Elle ne s'applique que lorsque le rendu de View3D est effectué sur une texture, par exemple parce que renderMode est View3D.Offscreen.

Le format par défaut est ShaderEffectSource.RGBA8.

Si le format n'est pas pris en charge par le pilote graphique sous-jacent au moment de l'exécution, RGBA8 est utilisé.

Cette propriété a été introduite dans Qt 6.4.

Voir également QtQuick::ShaderEffectSource::format et QtQuick::Item::layer.format.

renderMode : enumeration

Cette propriété détermine la manière dont View3D est combiné avec les autres parties de la scène Qt Quick.

Par défaut, la scène est rendue dans un tampon hors écran en tant qu'étape intermédiaire. Ce tampon hors écran est ensuite rendu dans la fenêtre (ou cible de rendu) comme n'importe quelle autre Qt Quick Item .

Pour la plupart des utilisateurs, il n'est pas nécessaire de modifier le mode de rendu et cette propriété peut être ignorée. Mais sur certains matériels graphiques, l'utilisation d'un tampon hors écran peut être un goulot d'étranglement pour les performances. Si c'est le cas, il peut être intéressant d'expérimenter d'autres modes.

ConstanteDescription
View3D.OffscreenLa scène est rendue dans un tampon hors écran en tant qu'étape intermédiaire. Ce tampon hors écran est ensuite composé avec le reste de la scène Qt Quick.
View3D.UnderlayLa scène est rendue directement dans la fenêtre avant que le reste de la scène Qt Quick ne soit rendu. Dans ce mode, le site View3D ne peut pas être placé au-dessus d'autres éléments Qt Quick.
View3D.OverlayLa scène est affichée directement dans la fenêtre après l'affichage de Qt Quick. Avec ce mode, View3D sera toujours placé au-dessus des autres éléments Qt Quick.
View3D.InlineLe graphe de scène de View3D est intégré dans le graphe de scène principal et la même sémantique d'ordre est appliquée qu'à n'importe quel autre Qt Quick Item . Comme ce mode peut entraîner des problèmes subtils, en fonction du contenu de la scène, en raison de l'injection d'un contenu 3D basé sur la profondeur dans un graphe de scène 2D, il n'est pas recommandé de l'utiliser, sauf en cas de besoin spécifique.

La valeur par défaut est View3D.Offscreen.

Remarque : lorsque vous modifiez le mode de rendu, il est important de noter que View3D.Offscreen (le mode par défaut) est le seul mode qui garantisse une fidélité graphique parfaite. Les autres modes ont tous des limitations qui peuvent causer des problèmes visuels, il est donc important de vérifier que le rendu visuel est toujours correct lorsque l'on modifie cette propriété.

Remarque : lors de l'utilisation des modes Underlay, Overlay ou Inline, il peut être utile, et dans certains cas nécessaire, de désactiver l'écriture du tampon de profondeur du graphe de scène Qt Quick via QQuickGraphicsConfiguration::setDepthBufferFor2D() avant d'afficher l'élément QQuickWindow ou QQuickView accueillant l'élément View3D.

renderStats : QtQuick3D::RenderStats [read-only]

Cette propriété fournit des statistiques sur le rendu d'un cadre, tel que fps, frameTime, renderTime, syncTime, et maxFrameTime.

scene : QtQuick3D::Node [read-only]

Renvoie la racine Node de la scène View3D.

Pour définir la scène 3D qui est visualisée dans la page View3D:

  • Définissez une hiérarchie d'éléments Node-based en tant qu'enfants de l'élément View3D, qui deviendra alors la scène implicite de l'élément View3D.
  • Faites référence à une scène existante en utilisant la propriété importScene et définissez-la comme étant la racine Node de la scène que vous souhaitez visualiser. Cette Node ne doit pas nécessairement être un ancêtre de la View3D, et vous pouvez avoir plusieurs View3D qui importent la même scène.

Voir également importScene.

Documentation de la méthode

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

Cette méthode permet de trouver le point de la surface de model le plus proche de origin, à une distance de radius. Si model est null, l'objet le plus proche à l'intérieur de radius sera trouvé.

Si un tel objet n'existe pas, null est renvoyé.

Cette méthode a été introduite dans Qt 6.11.

vector3d mapFrom3DScene(vector3d scenePos)

Transforme scenePos de l'espace de la scène (3D) en espace de la vue (2D).

Les valeurs x et y renvoyées seront en coordonnées de vue, avec le coin supérieur gauche à [0, 0] et le coin inférieur droit à [largeur, hauteur]. La valeur z renvoyée contient la distance entre le plan proche du clip du frustum (clipNear) et scenePos en coordonnées de scène. Si la distance est négative, cela signifie que scenePos se trouve derrière la caméra active. Si scenePos ne peut pas être mis en correspondance avec une position dans la scène, une position de [0, 0, 0] est renvoyée.

Cette fonction nécessite que camera soit assigné à la vue.

Voir également mapTo3DScene() et Camera.mapToViewport().

vector3d mapTo3DScene(vector3d viewPos)

Transforme viewPos de l'espace de vue (2D) en espace de scène (3D).

Les valeurs x et y de viewPos doivent être en coordonnées de vue, avec le coin supérieur gauche à [0, 0] et le coin inférieur droit à [largeur, hauteur]. La valeur z est interprétée comme la distance du plan de clip proche du frustum (clipNear) en coordonnées de scène.

Si viewPos ne peut pas être mis en correspondance avec une position dans la scène, une position de [0, 0, 0] est renvoyée.

Cette fonction nécessite qu'un camera soit affecté à la vue.

Voir également mapFrom3DScene() et Camera.mapFromViewport().

pickResult pick(float x, float y)

Cette méthode "tire" un rayon dans la scène à partir des coordonnées x et y et renvoie des informations sur l'intersection la plus proche avec un objet de la scène.

Cette méthode peut, par exemple, être appelée avec les coordonnées de la souris pour trouver l'objet situé sous le curseur de la souris.

Voir également pickAll(), pickSubset() et pickInRect().

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

Cette méthode "tire" un rayon dans la scène à partir des coordonnées x et y et renvoie des informations sur l'intersection entre le rayon et l'objet spécifié model.

Cette méthode peut, par exemple, être appelée avec les coordonnées de la souris pour trouver l'objet situé sous le curseur de la souris.

Cette méthode a été introduite dans Qt 6.8.

Voir aussi pickAll(), pickSubset(), et pickInRect().

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

Cette méthode "tire" un rayon dans la scène à partir des coordonnées x et y et renvoie une liste d'informations sur les intersections avec les objets de la scène. La liste renvoyée est triée en fonction de la distance par rapport à la caméra, les intersections les plus proches apparaissant en premier et les plus éloignées en dernier.

Cette méthode peut, par exemple, être appelée avec les coordonnées de la souris pour trouver l'objet qui se trouve sous le curseur de la souris.

Cette méthode a été introduite dans Qt 6.2.

Voir aussi pick(), pickSubset() et pickInRect().

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

Cette méthode sélectionne tous les objets situés dans une région rectangulaire définie par les points start et end en coordonnées de vue.

Elle renvoie une liste d'objets situés dans le rectangle spécifié. Cette méthode peut être utilisée pour la sélection par marquage, où l'utilisateur fait glisser un rectangle pour sélectionner plusieurs objets.

Cette méthode a été introduite dans Qt 6.11.

Voir aussi pick(), pickAll() et pickSubset().

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

Cette méthode "tire" un rayon dans la scène à partir des coordonnées x et y et renvoie des informations sur les intersections avec la liste transmise de models. Cette méthode ne vérifie que la liste des modèles transmise. La liste renvoyée est triée en fonction de la distance par rapport à la caméra, les intersections les plus proches apparaissant en premier et les plus éloignées en dernier.

Ceci peut, par exemple, être appelé avec les coordonnées de la souris pour trouver l'objet sous le curseur de la souris.

Fonctionne avec les propriétés list<Model> et les tableaux JavaScript dynamiques de modèles.

Cette méthode a été introduite dans Qt 6.8.

Voir aussi pick(), pickAll() et pickInRect().

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

Cette méthode "tire" un rayon dans la scène à partir de origin et dans direction et renvoie des informations sur l'intersection la plus proche avec un objet de la scène.

Cette méthode peut, par exemple, être appelée avec la position et le vecteur d'avancement de n'importe quel objet de la scène pour voir quel objet se trouve devant un élément. Il est ainsi possible de faire du picking à partir de n'importe quel point de la scène.

Cette méthode a été introduite dans Qt 6.2.

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

Cette méthode "tire" un rayon dans la scène à partir de origin et dans direction et renvoie des informations sur l'intersection entre le rayon et l'adresse spécifiée model.

Cette méthode a été introduite dans Qt 6.11.

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

Cette méthode "tire" un rayon dans la scène à partir de origin et à direction et renvoie une liste d'informations sur les intersections les plus proches avec des objets de la scène. La liste est triée en fonction de la distance par rapport à l'origine le long du vecteur de direction, les intersections les plus proches apparaissant en premier et les plus éloignées en dernier.

Cette fonction peut, par exemple, être appelée avec la position et le vecteur de direction de n'importe quel objet de la scène pour voir quels sont les objets qui se trouvent devant un élément. Il est ainsi possible de faire du picking à partir de n'importe quel point de la scène.

Cette méthode a été introduite dans Qt 6.2.

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

Envoi d'un événement tactile synthétique à target, déplaçant le point tactile avec l'ID pointId vers position, pressed déterminant si le point est pressé. Envoie également l'événement de relâchement du toucher approprié si pointId était précédemment actif sur un autre élément.

Cette méthode a été introduite dans 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.