Тип QML камеры
Определяет абстрактный базовый класс для камер. Подробнее...
| Оператор импорта: | import QtQuick3D |
| Наследуется от: | |
| Наследует: |
Свойства
- frustumCullingEnabled : bool
Методы
- vector3d lookAt(QtQuick3D::Node node)
- vector3d lookAt(vector3d scenePos)
- vector3d mapFromViewport(vector3d viewportPos)
- vector3d mapToViewport(vector3d scenePos)
Подробное описание
Камера определяет, как содержимое 3D сцены проецируется на 2D поверхность, такую как View3D. Для визуализации содержимого сцены требуется как минимум одна камера.
Положение и вращение камеры можно задать, как и любого другого пространственного узла в сцене. Положение и ориентация узла определяют, где расположена камера в сцене и в каком направлении она смотрит. По умолчанию направление взгляда камеры направлено вдоль отрицательной оси Z, а вектор вверх — вдоль положительной оси Y.
Вместе с положением и ориентацией, усеченная пирамида определяет, какие части сцены видны для камеры и как они проецируются на 2D поверхность. Различные типы камер предоставляют множество вариантов для определения формы усеченной пирамиды камеры.
- PerspectiveCamera предоставляет камеру с усеченной пирамидой в форме пирамиды, где объекты проецируются таким образом, что объекты, находящиеся дальше от камеры, кажутся меньше. Это наиболее часто используемый тип камеры и соответствует тому, как работают большинство реальных камер.
- OrthographicCamera предоставляет камеру, где линии усеченной пирамиды параллельны, что делает видимый масштаб объекта независимым от его расстояния до камеры. Типичные варианты использования этого типа камеры — приложения САПР (Computer-Assisted Design) и картография.
- FrustumCamera — это тип перспективной камеры, где усеченная пирамида может быть настраиваема по координатам её пересечения с ближней плоскостью. Это может быть полезно, если требуется несимметричная усеченная пирамида камеры.
- CustomCamera — это тип камеры, где матрица проекции может быть настраиваема, и может быть полезна для опытных пользователей, которые хотят рассчитать собственную матрицу проекции.
Для иллюстрации различия эти снимки экрана показывают одну и ту же сцену, проецируемую с помощью PerspectiveCamera и OrthographicCamera. Обратите внимание, как красный прямоугольник меньше зеленого прямоугольника на изображении, рендер которого выполнен с использованием перспективной проекции.
| Перспективная камера | Ортогональная камера |
|---|---|
См. также Qt Quick 3D — пример View3D.
Документация по свойствам
frustumCullingEnabled : bool
Когда это свойство true, объекты за пределами усеченной пирамиды камеры будут удалены, то есть они не будут переданы рендереру. По умолчанию это свойство установлено в false. Для сцен, где все или большинство объектов находятся внутри усеченной пирамиды камеры, удаление объектов за пределами усеченной пирамиды — это необоснованная нагрузка на производительность. Но для сложных сцен, где большая часть расположена вне поля зрения камеры, включение удаления объектов за пределами усеченной пирамиды может улучшить производительность.
Документация по методам
[since 5.15] vector3d lookAt(QtQuick3D::Node 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.2/qml-qtquick3d-camera.html