Тип QML View3D
Предоставляет представление (viewport), на котором можно отображать 3D сцену. Подробнее...
| Заявление об импорте: | import QtQuick3D . |
Свойства
- camera : QtQuick3D::Camera
- environment : QtQuick3D::SceneEnvironment
- importScene : QtQuick3D::Node
- renderMode : перечисление
- renderStats : QtQuick3D::RenderStats
- scene : QtQuick3D::Node
Методы
- vector3d mapFrom3DScene(vector3d scenePos)
- vector3d mapTo3DScene(vector3d viewPos)
- PickResult pick(float x, float y)
Подробное описание
View3D предоставляет 2D поверхность, на которой можно отобразить 3D сцену. Эта поверхность является элементом Qt Quick Item и может быть размещена в сцене Qt Quick.
Существует два способа определения 3D сцены, визуализируемой на View3D: Если вы определяете иерархию элементов Node в качестве дочерних элементов View3D напрямую, то это станет неявной сценой View3D.
Также можно сослаться на существующую сцену, используя свойство importScene и установив его в корневой узел сцены, которую вы хотите визуализировать. Этот узел не обязательно должен быть предком View3D, и у вас может быть несколько View3D, импортирующих одну и ту же сцену.
Это показано в примере View3D.
Если View3D имеет дочерние узлы и свойство importScene установлено одновременно, обе сцены будут отображаться так, как будто они являются соседними поддеревьями в одной сцене.
Для управления отображением сцены можно установить свойство environment. Тип SceneEnvironment имеет ряд визуальных свойств, которые можно настроить, таких как цвет фона, тональное отображение, сглаживание и многое другое.
Кроме того, для того, чтобы что-либо отображалось в View3D, сцене необходима камера. Если в сцене имеется только одна камера, она будет выбрана автоматически. В противном случае, можно использовать свойство camera для выбора камеры. Камера определяет, какие части сцены видимы и как они проецируются на 2D поверхность.
По умолчанию 3D сцена сначала отображается в буфере вне экрана, а затем объединяется с остальной частью сцены Qt Quick по завершении. Это обеспечивает максимальный уровень совместимости, но может иметь последствия для производительности на некоторых графических процессорах. Если это так, свойство renderMode можно использовать для изменения способа отображения View3D в окне.
View3D с режимом отображения по умолчанию Offscreen неявно является и поставщиком текстур. Это означает, что ShaderEffect или Texture.sourceItem могут напрямую ссылаться на View3D, если все элементы находятся в одном окне window. Как и любой другой элемент Item, можно переключить View3D или одного из его предков в слой элемента на основе текстуры item layer.
См. также Пример Qt Quick 3D - View3D.
Документация по свойствам
camera : QtQuick3D::Camera
Это свойство указывает, какая камера используется для отображения сцены. Если это свойство не установлено, будет использоваться первая активная камера в сцене.
См. также PerspectiveCamera, OrthographicCamera, FrustumCamera и CustomCamera.
environment : QtQuick3D::SceneEnvironment
Это свойство указывает SceneEnvironment, используемый для отображения сцены.
См. также SceneEnvironment.
importScene : QtQuick3D::Node
Это свойство определяет узел отсчета сцены для отображения в представлении. Узел не обязательно должен быть дочерним элементом View3D. Этот узел становится соседним с дочерними узлами View3D, если таковые имеются.
Примечание: Это свойство можно установить только один раз, и последующие изменения не повлияют.
См. также Node.
renderMode : перечисление
Это свойство определяет, как View3D объединяется с другими частями сцены Qt Quick.
По умолчанию сцена будет отображаться в буфере вне экрана в качестве промежуточного шага. Затем этот буфер вне экрана будет отображен в окне (или целевое отображение) как любой другой элемент Qt Quick Item.
Для большинства пользователей нет необходимости изменять режим отображения, и это свойство можно безопасно игнорировать. Но на некоторых графических процессорах использование буфера вне экрана может стать узким местом производительности. Если это так, может стоить поэкспериментировать с другими режимами.
| Константа | Описание |
|---|---|
View3D.Offscreen |
Сцена отображается в буфере вне экрана в качестве промежуточного шага. Затем этот буфер вне экрана объединяется с остальной частью сцены Qt Quick. |
View3D.Underlay |
Сцена отображается непосредственно в окне до отображения остальной части сцены Qt Quick. В этом режиме View3D не может быть размещен поверх других элементов Qt Quick. |
View3D.Overlay |
Сцена отображается непосредственно в окне после отображения Qt Quick. В этом режиме View3D всегда будет поверх других элементов Qt Quick. |
View3D.Inline |
Дерево сцены View3D встроено в основное дерево сцены, и применяются те же правила упорядочения, что и для любого другого элемента Qt Quick Item. Поскольку этот режим может привести к незначительным проблемам в зависимости от содержимого сцены, из-за внедрения 3D-содержимого на основе глубины в 2D-дерево сцены, его не рекомендуется использовать, если не возникнет особая необходимость. |
По умолчанию View3D.Offscreen.
Примечание: При изменении режима отображения важно отметить, что View3D.Offscreen (по умолчанию) — единственный режим, который гарантирует безупречную точность графики. Другие режимы имеют ограничения, которые могут вызвать визуальные артефакты, поэтому важно проверить, что визуальный вывод по-прежнему правильный при изменении этого свойства.
Примечание: При использовании режимов Underlay, Overlay или Inline может быть полезно, а в некоторых случаях и необходимо, отключить запись буфера глубины дерева сцены Qt Quick с помощью QQuickGraphicsConfiguration::setDepthBufferFor2D() перед отображением окна QQuickWindow или QQuickView, содержащего элемент View3D.
[только для чтения] renderStats : QtQuick3D::RenderStats
Это свойство предоставляет статистику об отображении кадра, такую как fps, frameTime, renderTime, syncTime и maxFrameTime.
[только для чтения] scene : QtQuick3D::Node
Содержит корневой узел сцены View3D.
См. также importScene.
Документация по методам
vector3d mapFrom3DScene(vector3d scenePos)
Преобразует scenePos из пространства сцены (3D) в пространство представления (2D).
Возвращаемые значения x и y будут в координатах представления, с верхним левым углом в [0, 0] и нижним правым углом в [width, height]. Возвращаемое значение z содержит расстояние от ближней плоскости обрезки перспективного конуса (clipNear) до scenePos в координатах сцены. Если расстояние отрицательное, это означает, что scenePos находится за активной камерой. Если scenePos не может быть отображено в позиции в сцене, возвращается позиция [0, 0, 0].
Для работы этой функции требуется, чтобы камера была назначена представлению.
См. также mapTo3DScene() и Camera.mapToViewport().
vector3d mapTo3DScene(vector3d viewPos)
Преобразует viewPos из пространства вида (2D) в пространство сцены (3D).
Значения x и y в viewPos должны быть в координатах вида, где верхний левый угол находится в [0, 0], а нижний правый — в [width, height]. Значение z интерпретируется как расстояние от ближней плоскости обрезки усечённого конуса (clipNear) в координатах сцены.
Если viewPos не может быть успешно отображён в позиции в сцене, возвращается позиция [0, 0, 0].
Для работы этой функции необходимо, чтобы камера была назначена виду.
См. также mapFrom3DScene() и Camera.mapFromViewport().
PickResult pick(float x, float y)
Этот метод "выстрелит" лучом в сцену из координат вида x и y и вернёт информацию о ближайшем пересечении с объектом в сцене.
Это может быть, например, вызвано с координатами мыши, чтобы найти объект под курсором мыши.
Примечание: Для объекта с настраиваемой Геометрией, пересечения будут аппроксимированы на основе его ограничивающего прямоугольника.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qml-qtquick3d-view3d.html