Spec-Zone.ru › Qt

Тип QML камеры

Определяет абстрактный базовый класс для камер. Подробнее...

Оператор импорта: import QtQuick3D
Наследуется от:

Узел

Наследует:

CustomCamera, OrthographicCamera и PerspectiveCamera

  • Список всех членов, включая унаследованные

Свойства

  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API