View3D QML Type
Provides a viewport on which to render a 3D scene. More...
|Import Statement:||import QtQuick3D .|
- camera : QtQuick3D::Camera
- environment : QtQuick3D::SceneEnvironment
- importScene : QtQuick3D::Node
- renderMode : enumeration
- renderStats : QtQuick3D::RenderStats
- scene : QtQuick3D::Node
- vector3d mapFrom3DScene(vector3d scenePos)
- vector3d mapTo3DScene(vector3d viewPos)
- PickResult pick(float x, float y)
View3D provides a 2D surface on which a 3D scene can be rendered. This surface is a Qt Quick Item and can be placed in a Qt Quick scene.
There are two ways to define the 3D scene that is visualized on the View3D: If you define a hierarchy of Node-based items as children of the View3D directly, then this will become the implicit scene of the View3D.
It is also possible to reference an existing scene by using the importScene property and setting it to the root Node of the scene you want to visualize. This Node does not have to be an ancestor of the View3D, and you can have multiple View3Ds that import the same scene.
This is demonstrated in View3D example.
To control how a scene is rendered, you can set the environment property. The type SceneEnvironment has a number of visual properties that can be adjusted, such as background color, tone mapping, anti-aliasing and more.
In addition, in order for anything to be rendered in the View3D, the scene needs a Camera. If there is only a single Camera in the scene, then this will automatically be picked. Otherwise, the camera property can be used to select the camera. The Camera decides which parts of the scene are visible, and how they are projected onto the 2D surface.
By default, the 3D scene will first be rendered into an off-screen buffer and then composited with the rest of the Qt Quick scene when it is done. This provides the maximum level of compatibility, but may have performance implications on some graphics hardware. If this is the case, the renderMode property can be used to switch how the View3D is rendered into the window.
A View3D with the default Offscreen renderMode is implicitly a texture provider as well. This means that ShaderEffect or Texture.sourceItem can reference the View3D directly as long as all items live within the same window. Like with any other Item, it is also possible to switch the View3D, or one of its ancestors, into a texture-based item layer.
See also Qt Quick 3D - View3D example.
camera : QtQuick3D::Camera
environment : QtQuick3D::SceneEnvironment
importScene : QtQuick3D::Node
This property defines the reference node of the scene to render to the viewport. The node does not have to be a child of the View3D. This referenced node becomes a sibling with child nodes of View3D, if there are any.
Note: This property can only be set once, and subsequent changes will have no effect.
See also Node.
renderMode : enumeration
This property determines how the View3D is combined with the other parts of the Qt Quick scene.
By default, the scene will be rendered into an off-screen buffer as an intermediate step. This off-screen buffer is then rendered into the window (or render target) like any other Qt Quick Item.
For most users, there will be no need to change the render mode, and this property can safely be ignored. But on some graphics hardware, the use of an off-screen buffer can be a performance bottleneck. If this is the case, it might be worth experimenting with other modes.
|The scene is rendered into an off-screen buffer as an intermediate step. This off-screen buffer is then composited with the rest of the Qt Quick scene.|
|The scene is rendered directly to the window before the rest of the Qt Quick scene is rendered. With this mode, the View3D cannot be placed on top of other Qt Quick items.|
|The scene is rendered directly to the window after Qt Quick is rendered. With this mode, the View3D will always be on top of other Qt Quick items.|
|The View3D's scene graph is embedded into the main scene graph, and the same ordering semantics are applied as to any other Qt Quick Item. As this mode can lead to subtle issues, depending on the contents of the scene, due to injecting depth-based 3D content into a 2D scene graph, it is not recommended to be used, unless a specific need arises.|
The default is
Note: When changing the render mode, it is important to note that
View3D.Offscreen (the default) is the only mode which guarantees perfect graphics fidelity. The other modes all have limitations that can cause visual glitches, so it is important to check that the visual output still looks correct when changing this property.
Note: When using the Underlay, Overlay, or Inline modes, it can be useful, and in some cases, required, to disable the Qt Quick scene graph's depth buffer writes via QQuickGraphicsConfiguration::setDepthBufferFor2D() before showing the QQuickWindow or QQuickView hosting the View3D item.
[read-only] renderStats : QtQuick3D::RenderStats
[read-only] scene : QtQuick3D::Node
Transforms scenePos from scene space (3D) into view space (2D).
The returned x- and y-values will be be in view coordinates, with the top-left corner at [0, 0] and the bottom-right corner at [width, height]. The returned z-value contains the distance from the near clip plane of the frustum (clipNear) to scenePos in scene coordinates. If the distance is negative, that means the scenePos is behind the active camera. If scenePos cannot be mapped to a position in the scene, a position of [0, 0, 0] is returned.
This function requires that camera is assigned to the view.
Transforms viewPos from view space (2D) into scene space (3D).
The x- and y-values of viewPos should be in view coordinates, with the top-left corner at [0, 0] and the bottom-right corner at [width, height]. The z-value is interpreted as the distance from the near clip plane of the frustum (clipNear) in scene coordinates.
If viewPos cannot successfully be mapped to a position in the scene, a position of [0, 0, 0] is returned.
This function requires that a camera is assigned to the view.
PickResult pick(float x, float y)
This method will "shoot" a ray into the scene from view coordinates x and y and return information about the nearest intersection with an object in the scene.
This can, for instance, be called with mouse coordinates to find the object under the mouse cursor.
Note: For an object with a custom Geometry, intersections will be approximated based on its bounding box.
© 2021 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.