Тип QML камеры
Определяет абстрактный базовый класс для камер. Подробнее...
| Заявление об импорте: | import QtQuick3D . |
| Наследуется от: | |
| Наследуется: |
Свойства
- frustumCullingEnabled : bool
Методы
- vector3d lookAt(QtQuick3D::Узел node)
- vector3d lookAt(vector3d scenePos)
- vector3d mapFromViewport(vector3d viewportPos)
- vector3d mapToViewport(vector3d scenePos)
Подробное описание
Камера определяет, как содержимое 3D сцены проецируется на 2D поверхность, такую как View3D. Для визуализации содержимого сцены требуется как минимум одна камера.
Можно позиционировать и вращать камеру, как любой другой пространственный узел в сцене. Положение и ориентация узла определяют положение камеры в сцене и направление ее взгляда. По умолчанию ориентация камеры направлена вдоль отрицательной оси Z, а вектор вверх — вдоль положительной оси Y.
Наряду с положением и ориентацией, усеченная пирамида определяет, какие части сцены видны камере, и как они проецируются на 2D поверхность. Различные типы камер предоставляют различные варианты определения формы усеченной пирамиды камеры.
- ПерспективнаяКамера предоставляет камеру с пирамидальной усеченной пирамидой, где объекты проецируются так, что объекты, находящиеся дальше от камеры, кажутся меньше. Это наиболее часто используемый тип камеры, соответствующий принципу работы большинства реальных камер.
- ОртогональнаяКамера предоставляет камеру, где линии усеченной пирамиды параллельны, что делает воспринимаемый масштаб объекта независимым от его расстояния до камеры. Типичные случаи использования такого типа камеры — CAD (Computer-Assisted Design) приложения и картография.
- КамераУсеченнойПирамиды — это тип перспективной камеры, где усеченную пирамиду можно свободно настроить с помощью координат ее пересечения с ближней плоскостью. Это может быть полезно, если требуется асимметричная усеченная пирамида камеры.
- ПользовательскаяКамера — это тип камеры, где матрицу проекции можно свободно настроить, что может быть полезно для продвинутых пользователей, которые хотят вычислить свою матрицу проекции.
Для иллюстрации различий эти скриншоты показывают одну и ту же сцену, проецируемую с помощью ПерспективнойКамеры и ОртогональнойКамеры. Обратите внимание, как красный прямоугольник меньше зеленого прямоугольника на изображении, рендер которого выполнен с использованием перспективной проекции.
| Камера с перспективной проекцией | Ортогональная камера |
|---|---|
См. также Qt Quick 3D — пример View3D.
Документация по свойствам
frustumCullingEnabled : bool
Когда это свойство true, объекты, находящиеся за пределами усеченной пирамиды камеры, будут отсечены, то есть они не будут переданы рендереру. По умолчанию это свойство установлено в false. Для сцен, где все или большинство объектов находятся внутри усеченной пирамиды камеры, отсечение усеченной пирамиды — это ненужная нагрузка на производительность. Но для сложных сцен, где большая часть объектов расположена вне поля зрения камеры, включение отсечения усеченной пирамиды может улучшить производительность.
Документация по методам
[since 5.15] vector3d lookAt(QtQuick3D::Узел node)
Устанавливает значение поворота камеры так, чтобы она была направлена на node.
Этот метод был добавлен в Qt 5.15.
[since 5.15] vector3d lookAt(vector3d scenePos)
Устанавливает значение поворота камеры так, чтобы она была направлена на scenePos.
Этот метод был добавлен в Qt 5.15.
vector3d mapFromViewport(vector3d viewportPos)
Преобразует viewportPos из пространства представления (2D) в глобальное пространство сцены (3D).
Значения x и y в viewportPos должны быть нормализованы, где верхний левый угол представления — [0, 0], а нижний правый — [1, 1]. Значение z интерпретируется как расстояние от ближней клип-плоскости усеченной пирамиды (clipNear).
Если viewportPos не может быть успешно отображено в сцене, возвращается позиция [0, 0, 0].
См. также mapToViewport и View3D.mapTo3DScene().
vector3d mapToViewport(vector3d scenePos)
Преобразует scenePos из глобального пространства сцены (3D) в пространство представления (2D).
Возвращаемая позиция нормализована, где верхний левый угол представления — [0, 0], а нижний правый — [1, 1]. Возвращаемое значение z будет содержать расстояние от ближней клип-плоскости усеченной пирамиды (clipNear) до scenePos в координатах сцены. Если расстояние отрицательное, точка находится позади камеры.
Если scenePos не может быть успешно отображен в представлении, возвращается позиция [0, 0, 0].
См. также mapFromViewport() и View3D.mapFrom3DScene().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qml-qtquick3d-camera.html