Sur cette page

View3D QML Type

Fournit une fenêtre d'affichage permettant de visualiser une scène 3D. En savoir plus...

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 instance de Qt Quick Item et peut être placée dans une scène Qt Quick.

Il existe deux façons de définir la scène 3D qui s'affiche dans View3D : si vous définissez directement une hiérarchie d'éléments Node-based en tant qu'enfants de View3D, celle-ci deviendra alors la scène implicite de View3D.

Il est également possible de référencer une scène existante en utilisant la propriété « importScene » et en la définissant sur l’ Node racine de la scène que vous souhaitez afficher. Cet Node n’a pas besoin d’être un ancêtre du View3D, et vous pouvez avoir plusieurs View3D qui importent la même scène.

Ceci est illustré dans l’exemple View3D.

Si le View3D possède à la fois des enfants Nodes et que la propriété importScene est définie, les deux scènes seront alors rendues comme s’il s’agissait de sous-arbres frères au sein de 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 ` dispose d’un certain nombre de propriétés visuelles pouvant être ajustées, telles que la couleur d’arrière-plan, le tone mapping, l’anti-aliasing et bien d’autres encore. La classe ` ExtendedSceneEnvironment ` du module ` QtQuick3D.Helpers ` étend ` SceneEnvironment ` en y ajoutant encore plus de fonctionnalités, notamment des effets de post-traitement courants.

De plus, pour que quoi que ce soit puisse être rendu dans View3D, la scène doit disposer d’une caméra ( Camera). S’il n’y a qu’une seule caméra ( Camera ) dans la scène, celle-ci sera automatiquement sélectionnée. Sinon, la propriété camera peut être utilisée pour choisir la caméra. La caméra ( 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 est d’abord rendue dans un tampon hors écran, puis combinée avec le reste de la scène « Qt Quick » une fois le rendu terminé. Cela offre un niveau de compatibilité maximal, mais peut avoir des répercussions sur les performances de certains matériels graphiques. Si tel est le cas, la propriété « renderMode » peut être utilisée pour modifier la manière dont la View3D est rendue dans la fenêtre.

Un View3D dont l’ renderMode par défaut est « Offscreen » est implicitement un « texture provider » également. Cela signifie que ShaderEffect ou Texture.sourceItem peuvent référencer directement le View3D tant que tous les éléments se trouvent au sein de la 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 une texture.

Voir également l’exemple «Qt Quick 3D - View3D » sur.

Documentation des propriétés

camera : QtQuick3D::Camera

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

Remarque : il est fortement recommandé de définir explicitement cette propriété plutôt que de se fier à la sélection automatique de la caméra. Lorsque plusieurs caméras sont présentes dans la scène, la sélection automatique ne garantit pas le choix de la caméra. Lorsque des caméras « layers » sont utilisées, le fait de spécifier explicitement la caméra évite également une réévaluation inutile des nœuds de la scène.

Remarque : si cette propriété contient une caméra qui n’est pas une caméra « 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 (ainsi que de profondeur et de stencil) sous-jacents. Elle est destinée à être utilisée sur le thread de l'interface graphique (thread principal), dans les liaisons 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 également explicitTextureWidth, explicitTextureHeight et DebugView.

environment : QtQuick3D::SceneEnvironment

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

Remarque : si vous définissez cette propriété sur « null », l’ SceneEnvironment sera réinitialisée à sa valeur par défaut.

Voir également SceneEnvironment.

explicitTextureHeight : int [since 6.7]

La hauteur, en pixels, de la texture associée à l'élément. Ce paramètre est pertinent lorsqu'on souhaite définir une taille de texture fixe, indépendante 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 agrandi ou réduit (et éventuellement étiré) sur la surface de l'élément.

Par défaut, la valeur est « 0 ». Une valeur de 0 signifie que la taille de la texture suit celle 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 également explicitTextureWidth, effectiveTextureSize et DebugView.

explicitTextureWidth : int [since 6.7]

La largeur, en pixels, de la texture associée à l'élément. Ce paramètre est pertinent lorsqu'on souhaite définir une taille de texture fixe, indépendante 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 agrandi ou réduit (et éventuellement étiré) sur la surface de l'élément.

Par défaut, la valeur est 0. Une valeur de 0 signifie que la taille de la texture suit celle 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 également explicitTextureHeight, effectiveTextureSize et DebugView.

extensions : List<QtQuick3D::Object3D>

Cette propriété contient une liste des extensions utilisateur à utiliser avec cette View3D.

Voir également RenderExtension.

importScene : QtQuick3D::Node

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

Remarque : les scènes ne peuvent être partagées qu'entre des éléments « View3D » appartenant à la même « window ».

Remarque : lors du partage de scènes entre plusieurs éléments « View3D », la scène importée doit l’être dans son intégralité ; l’importation d’une sous-arborescence d’une scène n’est pas prise en charge. Si plusieurs View3D doivent afficher différentes parties d’une même scène partagée, envisagez d’utiliser « layers » à la place.

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

Vous pouvez également définir directement une hiérarchie d’éléments ` Node-based ` en tant qu’enfants de l’` View3D ` ; celle-ci deviendra alors la scène implicite de l’` View3D`.

Pour récupérer la scène actuelle de l’ View3D, utilisez la propriété scene.

Voir également Node.

renderFormat : enumeration [since 6.4]

Cette propriété détermine le format de la texture d'arrière-plan. Elle ne s'applique que lorsque le moteur de rendu ( View3D ) effectue un rendu vers une texture, par exemple parce que la source de rendu ( renderMode ) est définie sur « View3D.Offscreen ».

La valeur par défaut est ShaderEffectSource.RGBA8.

Si le format n’est pas pris en charge par le pilote graphique sous-jacent lors 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 l'View3D est combinée avec les autres éléments de la scène Qt Quick.

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

Pour la plupart des utilisateurs, il ne sera pas nécessaire de modifier le mode de rendu, et cette propriété peut être ignorée sans risque. Cependant, sur certains matériels graphiques, l’utilisation d’un tampon hors écran peut constituer un goulot d’étranglement au niveau des performances. Si tel est le cas, il peut être intéressant d’essayer 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 composité 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 d’ Qt Quick ne soit rendu. Avec ce mode, l’ View3D ne peut pas être placée par-dessus d’autres éléments d’ Qt Quick.
View3D.OverlayLa scène est rendue directement dans la fenêtre après le rendu de l’ Qt Quick. Dans ce mode, l’ View3D se trouve toujours au-dessus des autres éléments de l’ Qt Quick.
View3D.InlineLe graphe de scène de l’ View3D est intégré au graphe de scène principal, et les mêmes règles d’ordre s’appliquent qu’à tout autre élément d’ Item de l’ Qt Quick. Ce mode pouvant entraîner des problèmes subtils, selon le contenu de la scène, en raison de l’injection de contenu 3D basé sur la profondeur dans un graphe de scène 2D, son utilisation n’est pas recommandée, sauf en cas de besoin spécifique.

La valeur par défaut est « View3D.Offscreen ».

Remarque : lors du changement de mode de rendu, il est important de noter que « View3D.Offscreen » (par défaut) est le seul mode garantissant une fidélité graphique parfaite. Les autres modes présentent tous des limitations susceptibles de provoquer des anomalies visuelles ; il est donc important de vérifier que le rendu visuel reste correct lorsque vous modifiez cette propriété.

Remarque : lorsque vous utilisez les modes « Underlay », « Overlay » ou « Inline », il peut être utile, et dans certains cas nécessaire, de désactiver les écritures dans le tampon de profondeur du graphe de scène « Qt Quick » via ` QQuickGraphicsConfiguration::setDepthBufferFor2D()` avant d’afficher les éléments « QQuickWindow » ou « QQuickView » hébergeant l’élément « View3D ».

renderOverrides : enumeration

Détermine la manière dont Qt Quick 3D effectue le rendu.

ConstanteDescription
View3D.NoneLe rendu s'effectue normalement. Les passes internes sont planifiées en fonction des fonctionnalités utilisées dans l'application.
View3D.DisableInternalPassesDésactive les passes de rendu internes d'Qt Quick 3D. Lorsque ce mode est activé, l'application est chargée de produire et d'afficher l'image finale. En général, cela implique de mettre en œuvre des passes utilisateur personnalisées et d'afficher le résultat dans la fenêtre d'affichage à l'aide de ` SimpleQuadRenderer ` ou d'une méthode personnalisée ` render extension`.

renderStats : QtQuick3D::RenderStats [read-only]

Cette propriété fournit des statistiques sur le rendu d'une image, telles que fps, frameTime, renderTime, syncTime et maxFrameTime.

scene : QtQuick3D::Node [read-only]

Renvoie l’ Node racine de la scène de l’ View3D.

Pour définir la scène 3D affichée dans l’ View3D:

  • Définissez une hiérarchie d’éléments d’ Node-based en tant qu’enfants directs de l’ View3D; celle-ci deviendra alors la scène implicite de l’ View3D.
  • Faites référence à une scène existante à l'aide de la propriété « importScene » et attribuez-lui l'Node racine de la scène que vous souhaitez afficher. Cet « Node » n'a pas besoin d'être un ancêtre de l'« View3D », et vous pouvez avoir plusieurs « View3D » qui importent la même scène.

Voir également importScene.

Documentation des méthodes

[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 inférieure ou égale à radius. Si model est null, l'objet le plus proche situé dans radius sera identifié.

Si aucun objet de ce type n'existe, la valeur null est renvoyée.

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

vector3d mapFrom3DScene(vector3d scenePos)

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

Les valeurs x et y renvoyées seront exprimées en coordonnées de vue, le coin supérieur gauche étant situé à [0, 0] et le coin inférieur droit à [largeur, hauteur]. La valeur z renvoyée correspond à la distance entre le plan de coupure proche du cône de vision (clipNear) et l’objet scenePos en coordonnées de scène. Si cette distance est négative, cela signifie que l’ scenePos se trouve derrière la caméra active. Si l’ scenePos ne peut pas être mappée à une position dans la scène, la position [0, 0, 0] est renvoyée.

Cette fonction nécessite que camera soit affecté à 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 exprimées en coordonnées de vue, le coin supérieur gauche étant situé à [0, 0] et le coin inférieur droit à [largeur, hauteur]. La valeur z est interprétée comme la distance par rapport au plan de coupure proche du frustum (clipNear) en coordonnées de scène.

Si l’ viewPos ne peut pas être correctement mappé à une position dans la scène, la position [0, 0, 0] est renvoyée.

Cette fonction nécessite qu’un objet « camera » soit associé à la vue.

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

pickResult pick(float x, float y)

Cette méthode « envoie » un rayon dans la scène à partir des coordonnées de vue x et y et renvoie des informations sur le point d’intersection le plus proche avec un objet de la scène.

On peut, par exemple, l'appeler avec les coordonnées de la souris pour trouver l'objet situé sous le curseur.

Les triangles que le matériau cull mode écarte lors du rendu ne sont pas non plus pris en compte ; ainsi, seule la géométrie réellement visible le long du rayon est signalée.

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

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

Cette méthode « projette » un rayon dans la scène à partir des coordonnées de vue x et y et renvoie des informations sur l'intersection entre le rayon et l'model spécifié.

Elle 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 également pickAll(), pickSubset() et pickInRect().

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

Cette méthode « envoie » un rayon dans la scène à partir des coordonnées de vue x et y, puis renvoie une liste d'informations concernant les intersections avec les objets de la scène. La liste renvoyée est triée par distance par rapport à la caméra : les intersections les plus proches apparaissent 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 situé sous le curseur.

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

Voir également 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 zone rectangulaire définie par les points start et end en coordonnées de vue.

Renvoie une liste des objets situés à l'intérieur du rectangle spécifié. Cette méthode peut être utilisée pour la sélection par zone de sélection, dans laquelle l'utilisateur fait glisser un rectangle pour sélectionner plusieurs objets.

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

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

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

Cette méthode « envoie » un rayon dans la scène à partir des coordonnées de vue x et y et renvoie des informations sur les intersections avec la liste fournie models. La vérification s'effectue uniquement par rapport à la liste des modèles fournie. La liste renvoyée est triée par distance par rapport à la caméra, les intersections les plus proches apparaissant en premier et les plus éloignées en dernier.

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

Fonctionne aussi bien avec la propriété `list<Model>` qu’avec des tableaux JavaScript dynamiques de modèles.

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

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

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

Cette méthode « envoie » un rayon dans la scène à partir de l'origin, dans l'direction, et renvoie des informations sur le point d'intersection le plus proche avec un objet de la scène.

Cette fonction peut, par exemple, être appelée avec la position et le vecteur d’avance de n’importe quel objet d’une scène afin de déterminer quel objet se trouve devant un élément donné. Cela permet d’effectuer un picking à partir de n’importe quel point de la scène.

Les triangles que l’ cull mode du matériau écarte lors du rendu ne sont pas non plus sélectionnés ; ainsi, seules les géométries réellement visibles le long du rayon sont signalées.

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

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

Cette méthode « envoie » un rayon dans la scène à partir de l'origin et dans l'direction, puis renvoie des informations sur l'intersection entre le rayon et l'model spécifié.

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

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

Cette méthode « envoie » un rayon dans la scène à partir de l'origin, dans la direction direction, et renvoie une liste d'informations concernant les intersections les plus proches avec les objets de la scène. La liste est pré-triée en fonction de la distance par rapport à l'origine le long du vecteur de direction : les intersections les plus proches apparaissent en premier et les plus éloignées en dernier.

Cette méthode peut, par exemple, être appelée avec la position et le vecteur de direction de n'importe quel objet d'une scène afin de déterminer quels objets se trouvent devant un élément donné. Cela permet d'effectuer une sélection à 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)

Envoie un événement tactile synthétique à target, en déplaçant le point tactile portant l'ID pointId vers position, l'pressed déterminant si le point est enfoncé. Envoie également l'événement de relâchement tactile approprié si pointId était auparavant 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.